From 6456009a44cd8721a74acbf434da2e3a136da858 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Sat, 26 Sep 2020 00:51:02 +0200 Subject: [PATCH 001/271] Implementation if Pyredrid and AsparagusEduardo debug menu plus huge rewrite and tons of additions V2: Fly, Warp, Flags, Vars, give items, give pkm 2 versions Improved cheats, reworked the vars system vars function now starts at VARS_START and end VARS_END Figured out how to display FieldMessages, reimplemented CheckSafeBlock, cleanup DebugAction_DestroyExtraWindow instead of multiple, renamed text variables cleanup + pokemon simple give pokemon complex nearly done Complex pkm works, items now with icons if statement cleanup alter build tools to include maps per map group Warp functionallity added hex value to flags and vars cleanup Credits --- .gitignore | 1 + Makefile | 6 + data/event_scripts.s | 2 + data/scripts/debug.inc | 60 + include/constants/flags.h | 12 +- include/constants/map_groups.h | 2 + include/debug.h | 8 + include/event_data.h | 2 + ld_script.txt | 2 + src/battle_main.c | 2 +- src/debug.c | 2008 ++++++++++++++++++++++++++++++++ src/event_data.c | 16 + src/event_object_movement.c | 6 + src/field_control_avatar.c | 44 +- src/item_use.c | 6 +- src/new_game.c | 2 +- src/trainer_see.c | 5 + tools/mapjson/mapjson.cpp | 14 +- 18 files changed, 2187 insertions(+), 11 deletions(-) create mode 100644 data/scripts/debug.inc create mode 100644 include/debug.h create mode 100644 src/debug.c diff --git a/.gitignore b/.gitignore index ebf507247b..4a446ae79a 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ porymap.project.cfg .vscode/ *.a .fuse_hidden* +mgba.sh diff --git a/Makefile b/Makefile index 99a93718bd..68e9603e69 100644 --- a/Makefile +++ b/Makefile @@ -248,6 +248,12 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif +# DebugMenu +ifeq ($(DDEBUG),1) +override ASFLAGS += --defsym DEBUG=1 +override CPPFLAGS += -D DEBUG=1 +endif + $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s diff --git a/data/event_scripts.s b/data/event_scripts.s index 8039be6876..2159c939b5 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -576,6 +576,8 @@ gStdScripts_End:: @ 81DC2CC .include "data/scripts/new_game.inc" .include "data/scripts/hall_of_fame.inc" + .include "data/scripts/debug.inc" + EventScript_WhiteOut:: @ 8271857 call EverGrandeCity_HallOfFame_EventScript_ResetEliteFour goto EventScript_ResetMrBriney diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc new file mode 100644 index 0000000000..9d46ea5fff --- /dev/null +++ b/data/scripts/debug.inc @@ -0,0 +1,60 @@ +Debug_ShowFieldMessageStringVar4:: + special ShowFieldMessageStringVar4 + waitmessage + waitbuttonpress + releaseall + end + +Debug_CheckWeekDay_Text: + .string "Aaaaah, yes!\l" + .string "{STR_VAR_1}s are made for dads!\l" + .string "And dad's car!$" + +Debug_CheatStart:: + lockall + setflag FLAG_SYS_POKEMON_GET + setflag FLAG_RESCUED_BIRCH + setflag FLAG_HIDE_ROUTE_101_BIRCH_ZIGZAGOON_BATTLE + clearflag FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_BIRCH + setflag FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG + setvar VAR_BIRCH_LAB_STATE, 2 + setvar VAR_ROUTE101_STATE, 3 + givemon SPECIES_TREECKO, 20, ITEM_NONE + givemon SPECIES_TORCHIC, 20, ITEM_NONE + givemon SPECIES_MUDKIP, 20, ITEM_NONE + setflag FLAG_SYS_POKEDEX_GET + special SetUnlockedPokedexFlags + setflag FLAG_RECEIVED_POKEDEX_FROM_BIRCH + setvar VAR_CABLE_CLUB_TUTORIAL_STATE, 1 + @ setflag FLAG_SYS_NATIONAL_DEX + @ special EnableNationalPokedex + setflag FLAG_RECEIVED_RUNNING_SHOES + setflag FLAG_SYS_B_DASH + setvar VAR_LITTLEROOT_TOWN_STATE, 4 @ 4: Received Running Shoes + setvar VAR_LITTLEROOT_INTRO_STATE, 7 @ 7: Told to go meet rival + setvar VAR_LITTLEROOT_HOUSES_STATE_BRENDAN, 2 @ 2: Met Rival's Mom (and is corresponding gender) + setvar VAR_LITTLEROOT_HOUSES_STATE_MAY, 2 @ 2: Met Rival's Mom (and is corresponding gender) + setvar VAR_LITTLEROOT_RIVAL_STATE, 4 @ 4: Received Pokedex + setflag FLAG_RECEIVED_BIKE + giveitem ITEM_ACRO_BIKE + setvar VAR_BRINEY_HOUSE_STATE, 1 + setvar VAR_ROUTE116_STATE, 2 + setflag FLAG_HIDE_ROUTE_116_MR_BRINEY + clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY + clearflag FLAG_HIDE_BRINEYS_HOUSE_PEEKO + @ additem ITEM_MAX_REPEL, 10 + @ giveitem ITEM_EON_TICKET + @ setflag FLAG_SYS_HAS_EON_TICKET + @ setvar VAR_DISTRIBUTE_EON_TICKET, 0 + @ giveitem ITEM_MYSTIC_TICKET + @ setflag FLAG_ENABLE_SHIP_NAVEL_ROCK + @ setflag FLAG_RECEIVED_MYSTIC_TICKET + @ giveitem ITEM_AURORA_TICKET + @ setflag FLAG_ENABLE_SHIP_BIRTH_ISLAND + @ setflag FLAG_RECEIVED_AURORA_TICKET + @ setflag FLAG_BADGE06_GET @ Badge for flying filed move + @ setweather WEATHER_VOLCANIC_ASH + @ doweather + closemessage + release + end diff --git a/include/constants/flags.h b/include/constants/flags.h index a562b0670e..a3e6584def 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -40,12 +40,12 @@ #define FLAG_TEMP_1E (TEMP_FLAGS_START + 0x1E) #define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F) #define TEMP_FLAGS_END FLAG_TEMP_1F - -#define FLAG_UNUSED_0x020 0x20 // Unused Flag -#define FLAG_UNUSED_0x021 0x21 // Unused Flag -#define FLAG_UNUSED_0x022 0x22 // Unused Flag -#define FLAG_UNUSED_0x023 0x23 // Unused Flag -#define FLAG_UNUSED_0x024 0x24 // Unused Flag + +#define FLAG_SYS_NO_COLLISION 0x20 // Unused Flag //DEBUG +#define FLAG_SYS_NO_ENCOUNTER 0x21 // Unused Flag //DEBUG +#define FLAG_SYS_NO_TRAINER_SEE 0x22 // Unused Flag //DEBUG +#define FLAG_SYS_NO_BAG_USE 0x23 // Unused Flag //DEBUG +#define FLAG_SYS_NO_CATCHING 0x24 // Unused Flag //DEBUG #define FLAG_UNUSED_0x025 0x25 // Unused Flag #define FLAG_UNUSED_0x026 0x26 // Unused Flag #define FLAG_UNUSED_0x027 0x27 // Unused Flag diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 69355635b3..c5334bf6c5 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -593,4 +593,6 @@ #define MAP_GROUPS_COUNT 34 +// static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; + #endif // GUARD_CONSTANTS_MAP_GROUPS_H diff --git a/include/debug.h b/include/debug.h new file mode 100644 index 0000000000..0d78632e63 --- /dev/null +++ b/include/debug.h @@ -0,0 +1,8 @@ +#ifndef GUARD_DEBUG_H +#define GUARD_DEBUG_H + +#if DEBUG +void Debug_ShowMainMenu(void); +#endif + +#endif // GUARD_DEBUG_H \ No newline at end of file diff --git a/include/event_data.h b/include/event_data.h index 8b4510e39b..e4792c7f63 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -20,10 +20,12 @@ void EnableResetRTC(void); bool32 CanResetRTC(void); u16 *GetVarPointer(u16 id); u16 VarGet(u16 id); +u16 VarGetIfExist(u16 id); bool8 VarSet(u16 id, u16 value); u8 VarGetObjectEventGraphicsId(u8 id); u8 *GetFlagPointer(u16 id); u8 FlagSet(u16 id); +u8 FlagToggle(u16 id); u8 FlagClear(u16 id); bool8 FlagGet(u16 id); diff --git a/ld_script.txt b/ld_script.txt index 0b8702d966..dee404843e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -99,6 +99,7 @@ SECTIONS { src/random.o(.text); src/util.o(.text); src/daycare.o(.text); + src/debug.o(.text); src/egg_hatch.o(.text); src/battle_interface.o(.text); src/battle_anim_smokescreen.o(.text); @@ -482,6 +483,7 @@ SECTIONS { src/trig.o(.rodata); src/util.o(.rodata); src/daycare.o(.rodata); + src/debug.o(.rodata); src/egg_hatch.o(.rodata); src/battle_gfx_sfx_util.o(.rodata); src/battle_interface.o(.rodata); diff --git a/src/battle_main.c b/src/battle_main.c index 193fffaf22..0574bae0b7 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4259,7 +4259,7 @@ static void HandleTurnActionSelectionState(void) } break; case B_ACTION_USE_ITEM: - if (gBattleTypeFlags & (BATTLE_TYPE_LINK + if (FlagGet(FLAG_SYS_NO_BAG_USE) || gBattleTypeFlags & (BATTLE_TYPE_LINK //DEBUG | BATTLE_TYPE_FRONTIER_NO_PYRAMID | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000)) diff --git a/src/debug.c b/src/debug.c new file mode 100644 index 0000000000..84388b34f4 --- /dev/null +++ b/src/debug.c @@ -0,0 +1,2008 @@ +#if DEBUG +//CREDITS +//TheXaman: https://github.com/TheXaman/pokeemerald/tree/tx_debug_system +//CODE USED FROM: +//ketsuban: https://github.com/pret/pokeemerald/wiki/Add-a-debug-menu +//Pyredrid: https://github.com/Pyredrid/pokeemerald/tree/debugmenu +//AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 +//Ghoulslash: https://github.com/ghoulslash/pokeemerald +#include "debug.h" +#include "global.h" +#include "data.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "event_scripts.h" +#include "field_message_box.h" +#include "field_screen_effect.h" +#include "international_string_util.h" +#include "item.h" +#include "item_icon.h" +#include "list_menu.h" +#include "main.h" +#include "map_name_popup.h" +#include "menu.h" +#include "overworld.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_icon.h" +#include "pokemon_storage_system.h" +#include "random.h" +#include "region_map.h" +#include "script.h" +#include "script_pokemon_util.h" +#include "sound.h" +#include "strings.h" +#include "string_util.h" +#include "task.h" +#include "pokemon_summary_screen.h" +#include "constants/abilities.h" +#include "constants/flags.h" +#include "constants/items.h" +#include "constants/map_groups.h" +#include "constants/songs.h" +#include "constants/species.h" + +// Constants +#define DEBUG_MAIN_MENU_WIDTH 13 +#define DEBUG_MAIN_MENU_HEIGHT 8 + +#define DEBUG_NUMBER_DISPLAY_WIDTH 10 +#define DEBUG_NUMBER_DISPLAY_HEIGHT 4 + +#define DEBUG_NUMBER_DIGITS_FLAGS 4 +#define DEBUG_NUMBER_DIGITS_VARIABLES 5 +#define DEBUG_NUMBER_DIGITS_VARIABLE_VALUE 5 +#define DEBUG_NUMBER_DIGITS_ITEMS 4 +#define DEBUG_NUMBER_DIGITS_ITEM_QUANTITY 2 + +#define DEBUG_NUMBER_ICON_X 210 +#define DEBUG_NUMBER_ICON_Y 50 + +// Define functions +static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); +void Debug_ShowMainMenu(void); +static void Debug_DestroyMenu(u8); +static void DebugAction_Cancel(u8); +static void DebugAction_DestroyExtraWindow(u8 taskId); + +static void DebugAction_OpenUtilitiesMenu(u8); +static void DebugAction_OpenFlagsMenu(u8); +static void DebugAction_OpenVariablesMenu(u8); +static void DebugAction_OpenGiveMenu(u8); +static void DebugTask_HandleMenuInput_Main(u8); +static void DebugTask_HandleMenuInput_Utilities(u8); +static void DebugTask_HandleMenuInput_Flags(u8); +static void DebugTask_HandleMenuInput_Vars(u8); +static void DebugTask_HandleMenuInput_Give(u8); + +static void DebugAction_Util_HealParty(u8 taskId); +static void DebugAction_Util_Fly(u8 taskId); +static void DebugAction_Util_Warp_Warp(u8 taskId); +static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId); +static void DebugAction_Util_Warp_SelectMap(u8 taskId); +static void DebugAction_Util_Warp_SelectWarp(u8 taskId); +static void DebugAction_Util_CheckSaveBlock(u8); +static void DebugAction_Util_CheckWallClock(u8); +static void DebugAction_Util_SetWallClock(u8); +static void DebugAction_Util_CheckWeekDay(u8); + +static void DebugAction_Flags_Flags(u8 taskId); +static void DebugAction_Flags_FlagsSelect(u8 taskId); + +static void DebugAction_Flags_SetPokedexFlags(u8); +static void DebugAction_Flags_SwitchDex(u8); +static void DebugAction_Flags_SwitchNatDex(u8); +static void DebugAction_Flags_SwitchPokeNav(u8); +static void DebugAction_Flags_ToggleFlyFlags(u8); +static void DebugAction_Flags_ToggleBadgeFlags(u8); +static void DebugAction_Flags_CollisionOnOff(u8); +static void DebugAction_Flags_EncounterOnOff(u8); +static void DebugAction_Flags_TrainerSeeOnOff(u8); +static void DebugAction_Flags_BagUseOnOff(u8); +static void DebugAction_Flags_CatchingOnOff(u8); + +static void DebugAction_Vars_Vars(u8 taskId); +static void DebugAction_Vars_Select(u8 taskId); +static void DebugAction_Vars_SetValue(u8 taskId); + +static void DebugAction_Give_Item(u8 taskId); +static void DebugAction_Give_Item_SelectId(u8 taskId); +static void DebugAction_Give_Item_SelectQuantity(u8 taskId); +static void DebugAction_Give_PokemonSimple(u8 taskId); +static void DebugAction_Give_PokemonComplex(u8 taskId); +static void DebugAction_Give_Pokemon_SelectId(u8 taskId); +static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId); +static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId); +static void DebugAction_Give_Pokemon_SelectNature(u8 taskId); +static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId); +static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId); +static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId); +static void DebugAction_Give_CHEAT(u8 taskId); +static void DebugAction_AccessPC(u8 taskId); + +static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); +static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate); + +extern u8 Debug_ShowFieldMessageStringVar4[]; +extern u8 Debug_CheatStart[]; +extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; +extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; +#define ABILITY_NAME_LENGTH 12 +extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; + +// ******************************* +// Enums +enum { // Main + DEBUG_MENU_ITEM_UTILITIES, + DEBUG_MENU_ITEM_FLAGS, + DEBUG_MENU_ITEM_VARS, + DEBUG_MENU_ITEM_GIVE, + DEBUG_MENU_ITEM_CANCEL +}; +enum { // Util + DEBUG_UTIL_MENU_ITEM_HEAL_PARTY, + DEBUG_UTIL_MENU_ITEM_FLY, + DEBUG_UTIL_MENU_ITEM_WARP, + DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, + DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, + DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY, +}; +enum { // Flags + DEBUG_FLAG_MENU_ITEM_FLAGS, + DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS, + DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF, + DEBUG_FLAG_MENU_ITEM_NATDEXONOFF, + DEBUG_FLAG_MENU_ITEM_POKENAVONOFF, + DEBUG_FLAG_MENU_ITEM_FLYANYWHERE, + DEBUG_FLAG_MENU_ITEM_GETALLBADGES, + DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF, + DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF, + DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF, + DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF, + DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF, +}; +enum { // Vars + DEBUG_VARS_MENU_ITEM_VARS, +}; +enum { // Give + DEBUG_GIVE_MENU_ITEM_ITEM, + DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, + DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, + DEBUG_GIVE_MENU_ITEM_CHEAT, + //DEBUG_MENU_ITEM_ACCESS_PC, +}; + +// ******************************* +//Maps per map group COPY FROM /include/constants/map_groups.h + static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; + +// Text +// Main Menu +static const u8 gDebugText_Utilities[] = _("Utilities"); +static const u8 gDebugText_Flags[] = _("Flags"); +static const u8 gDebugText_Vars[] = _("Variables"); +static const u8 gDebugText_Give[] = _("Give X"); +static const u8 gDebugText_Cancel[] = _("Cancel"); +// Util Menu +static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); +static const u8 gDebugText_Util_Fly[] = _("Fly to map"); +static const u8 gDebugText_Util_WarpToMap[] = _("Warp to map warp"); +static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] =_("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); +static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); +static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); +static const u8 gDebugText_Util_CheckWeekDay[] = _("Check Week Day"); +// Flags Menu +static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); +static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); +static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); +static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); +static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); +static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); +static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); +static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); +static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); +static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); +static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); +static const u8 gDebugText_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); +static const u8 gDebugText_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_FlagSet[] = _("TRUE"); +static const u8 gDebugText_FlagUnset[] = _("FALSE"); +// Variables Menu +static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); +static const u8 gDebugText_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 gDebugText_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +// Give Menu +static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); +static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_ItemID[] = _("Item ID: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm (ID,lvl)"); +static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm (ID,lvl,shi,nat,ab,IVs)"); +static const u8 gDebugText_PokemonID[] = _("ID: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); +static const u8 gDebugText_PokemonNature[] = _("ID: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonAbility[] = _("ID: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT start"); +// static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); +// static const u8 gDebugText_Give_GiveAllTMs[] = _("Give All TMs"); + +static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); +static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); +static const u8 digitInidicator_100[] = _("{LEFT_ARROW}+100{RIGHT_ARROW} "); +static const u8 digitInidicator_1000[] = _("{LEFT_ARROW}+1000{RIGHT_ARROW} "); +static const u8 digitInidicator_10000[] = _("{LEFT_ARROW}+10000{RIGHT_ARROW} "); +static const u8 digitInidicator_100000[] = _("{LEFT_ARROW}+100000{RIGHT_ARROW} "); +static const u8 digitInidicator_1000000[] = _("{LEFT_ARROW}+1000000{RIGHT_ARROW} "); +static const u8 digitInidicator_10000000[] = _("{LEFT_ARROW}+10000000{RIGHT_ARROW} "); +const u8 * const gText_DigitIndicator[] = +{ + digitInidicator_1, + digitInidicator_10, + digitInidicator_100, + digitInidicator_1000, + digitInidicator_10000, + digitInidicator_100000, + digitInidicator_1000000, + digitInidicator_10000000 +}; +static const s32 sPowersOfTen[] = +{ + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, +}; + +// ******************************* +// List Menu Items +static const struct ListMenuItem sDebugMenu_Items_Main[] = +{ + [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, + [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, + [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} +}; +static const struct ListMenuItem sDebugMenu_Items_Utilities[] = +{ + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = {gDebugText_Util_CheckWeekDay, DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY}, +}; +static const struct ListMenuItem sDebugMenu_Items_Flags[] = +{ + [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {gDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {gDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {gDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {gDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {gDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, +}; +static const struct ListMenuItem sDebugMenu_Items_Vars[] = +{ + [DEBUG_VARS_MENU_ITEM_VARS] = {gDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, +}; +static const struct ListMenuItem sDebugMenu_Items_Give[] = +{ + [DEBUG_GIVE_MENU_ITEM_ITEM] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, + //[DEBUG_MENU_ITEM_GIVE_ALLTMS] = {gDebugText_GiveAllTMs, DEBUG_MENU_ITEM_GIVE_ALLTMS}, + //[DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, +}; + +// ******************************* +// Menu Actions +static void (*const sDebugMenu_Actions_Main[])(u8) = +{ + [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, + [DEBUG_MENU_ITEM_FLAGS] = DebugAction_OpenFlagsMenu, + [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, + [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, + [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel +}; +static void (*const sDebugMenu_Actions_Utilities[])(u8) = +{ + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = DebugAction_Util_HealParty, + [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, + [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, + [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = DebugAction_Util_CheckWeekDay, +}; +static void (*const sDebugMenu_Actions_Flags[])(u8) = +{ + [DEBUG_FLAG_MENU_ITEM_FLAGS] = DebugAction_Flags_Flags, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = DebugAction_Flags_SetPokedexFlags, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = DebugAction_Flags_SwitchDex, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = DebugAction_Flags_SwitchNatDex, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = DebugAction_Flags_SwitchPokeNav, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = DebugAction_Flags_ToggleFlyFlags, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = DebugAction_Flags_ToggleBadgeFlags, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = DebugAction_Flags_CollisionOnOff, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = DebugAction_Flags_EncounterOnOff, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= DebugAction_Flags_TrainerSeeOnOff, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = DebugAction_Flags_BagUseOnOff, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = DebugAction_Flags_CatchingOnOff, +}; +static void (*const sDebugMenu_Actions_Vars[])(u8) = +{ + [DEBUG_VARS_MENU_ITEM_VARS] = DebugAction_Vars_Vars, +}; +static void (*const sDebugMenu_Actions_Give[])(u8) = +{ + [DEBUG_GIVE_MENU_ITEM_ITEM] = DebugAction_Give_Item, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, + //[DEBUG_MENU_ITEM_GIVE_ALLTMS] = DebugAction_GiveAllTMs, + //[DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, +}; + + +// ******************************* +// Windows +static const struct WindowTemplate sDebugMenuWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = DEBUG_MAIN_MENU_WIDTH, + .height = 2 * DEBUG_MAIN_MENU_HEIGHT, + .paletteNum = 15, + .baseBlock = 1, +}; +static const struct WindowTemplate sDebugNumberDisplayWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 6 + DEBUG_MAIN_MENU_WIDTH, + .tilemapTop = 1, + .width = DEBUG_NUMBER_DISPLAY_WIDTH, + .height = 2 * DEBUG_NUMBER_DISPLAY_HEIGHT, + .paletteNum = 15, + .baseBlock = 1, +}; + +// ******************************* +// List Menu Templates +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Main = +{ + .items = sDebugMenu_Items_Main, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Main), +}; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Utilities = +{ + .items = sDebugMenu_Items_Utilities, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Utilities), +}; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Flags = +{ + .items = sDebugMenu_Items_Flags, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Flags), +}; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Vars = +{ + .items = sDebugMenu_Items_Vars, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Vars), +}; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Give = +{ + .items = sDebugMenu_Items_Give, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Give), +}; + + +// ******************************* +// Functions universal +void Debug_ShowMainMenu(void) +{ + Debug_ShowMenu(DebugTask_HandleMenuInput_Main, sDebugMenu_ListTemplate_Main); +} +static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate) +{ + struct ListMenuTemplate menuTemplate; + u8 windowId; + u8 menuTaskId; + u8 inputTaskId; + + // create window + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugMenuWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + // create list menu + menuTemplate = LMtemplate; + menuTemplate.maxShowed = DEBUG_MAIN_MENU_HEIGHT; + menuTemplate.windowId = windowId; + menuTemplate.header_X = 0; + menuTemplate.item_X = 8; + menuTemplate.cursor_X = 0; + menuTemplate.upText_Y = 1; + menuTemplate.cursorPal = 2; + menuTemplate.fillValue = 1; + menuTemplate.cursorShadowPal = 3; + menuTemplate.lettersSpacing = 1; + menuTemplate.itemVerticalPadding = 0; + menuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL; + menuTemplate.fontId = 1; + menuTemplate.cursorKind = 0; + menuTaskId = ListMenuInit(&menuTemplate, 0, 0); + + // draw everything + CopyWindowToVram(windowId, 3); + + // create input handler task + inputTaskId = CreateTask(HandleInput, 3); + gTasks[inputTaskId].data[0] = menuTaskId; + gTasks[inputTaskId].data[1] = windowId; +} +static void Debug_DestroyMenu(u8 taskId) +{ + DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + DestroyTask(taskId); +} +static void DebugAction_Cancel(u8 taskId) +{ + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); +} +static void DebugAction_DestroyExtraWindow(u8 taskId) +{ + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + ClearStdWindowAndFrame(gTasks[taskId].data[2], TRUE); + RemoveWindow(gTasks[taskId].data[2]); + + DestroyTask(taskId); + EnableBothScriptContexts(); +} + + +// ******************************* +// Handle Inputs +static void DebugTask_HandleMenuInput_Main(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Main[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); + } +} +static void DebugTask_HandleMenuInput_Utilities(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Utilities[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} +static void DebugTask_HandleMenuInput_Flags(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Flags[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} +static void DebugTask_HandleMenuInput_Vars(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Vars[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} +static void DebugTask_HandleMenuInput_Give(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Give[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} + +// ******************************* +// Open sub-menus +static void DebugAction_OpenUtilitiesMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities); +} +static void DebugAction_OpenFlagsMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Flags, sDebugMenu_ListTemplate_Flags); +} +static void DebugAction_OpenVariablesMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Vars, sDebugMenu_ListTemplate_Vars); +} +static void DebugAction_OpenGiveMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Give, sDebugMenu_ListTemplate_Give); +} + + +// ******************************* +// Actions Utilities +static void DebugAction_Util_HealParty(u8 taskId) +{ + PlaySE(SE_USE_ITEM); + HealPlayerParty(); + Debug_DestroyMenu(taskId); +} +static void DebugAction_Util_Fly(u8 taskId) +{ + FlagSet(FLAG_VISITED_LITTLEROOT_TOWN); + FlagSet(FLAG_VISITED_OLDALE_TOWN); + FlagSet(FLAG_VISITED_DEWFORD_TOWN); + FlagSet(FLAG_VISITED_LAVARIDGE_TOWN); + FlagSet(FLAG_VISITED_FALLARBOR_TOWN); + FlagSet(FLAG_VISITED_VERDANTURF_TOWN); + FlagSet(FLAG_VISITED_PACIFIDLOG_TOWN); + FlagSet(FLAG_VISITED_PETALBURG_CITY); + FlagSet(FLAG_VISITED_SLATEPORT_CITY); + FlagSet(FLAG_VISITED_MAUVILLE_CITY); + FlagSet(FLAG_VISITED_RUSTBORO_CITY); + FlagSet(FLAG_VISITED_FORTREE_CITY); + FlagSet(FLAG_VISITED_LILYCOVE_CITY); + FlagSet(FLAG_VISITED_MOSSDEEP_CITY); + FlagSet(FLAG_VISITED_SOOTOPOLIS_CITY); + FlagSet(FLAG_VISITED_EVER_GRANDE_CITY); + FlagSet(FLAG_LANDMARK_POKEMON_LEAGUE); + FlagSet(FLAG_LANDMARK_BATTLE_FRONTIER); + Debug_DestroyMenu(taskId); + SetMainCallback2(CB2_OpenFlyMap); +} + +static void DebugAction_Util_Warp_Warp(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringCopy(gStringVar3, gText_DigitIndicator[0]); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Util_Warp_SelectMapGroup; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 0; //Current Flag + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = 0; //Map Group + gTasks[taskId].data[6] = 0; //Map + gTasks[taskId].data[7] = 0; //warp +} +static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > MAP_GROUPS_COUNT-1) + gTasks[taskId].data[3] = MAP_GROUPS_COUNT-1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[5] = gTasks[taskId].data[3]; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]]-1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Util_Warp_SelectMap; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Util_Warp_SelectMap(u8 taskId) +{ + u8 max_value = MAP_GROUP_COUNT[gTasks[taskId].data[5]]; //maps in the selected map group + + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > max_value-1) + gTasks[taskId].data[3] = max_value-1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]]-1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[6] = gTasks[taskId].data[3]; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + gTasks[taskId].func = DebugAction_Util_Warp_SelectWarp; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Util_Warp_SelectWarp(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > 10) + gTasks[taskId].data[3] = 10; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[7] = gTasks[taskId].data[3]; + //WARP + SetWarpDestinationToMapWarp(gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]); //If not warp with the number available -> center of map + DoWarp(); + ResetInitialPlayerAvatarState(); + DebugAction_DestroyExtraWindow(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} + +static void DebugAction_Util_CheckSaveBlock(u8 taskId) +{ + static const u8 gDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); + + ConvertIntToDecimalStringN(gStringVar1, sizeof(struct SaveBlock1), STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar2, sizeof(struct SaveBlock2), STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gDebugText_SaveBlockSize); + + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_ShowFieldMessageStringVar4); +} +static void DebugAction_Util_CheckWallClock(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(PlayersHouse_2F_EventScript_CheckWallClock); +} +static void DebugAction_Util_SetWallClock(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(PlayersHouse_2F_EventScript_SetWallClock); +} +static void DebugAction_Util_CheckWeekDay(u8 taskId) +{ + //StringCopy(gStringVar4, GetDayOfWeekString(gLocalTime.dayOfWeek)); + Debug_DestroyMenu(taskId); + //ScriptContext2_Enable(); + //ScriptContext1_SetupScript(Debug_ShowFieldMessageStringVar4); + EnableBothScriptContexts(); +} + + +// ******************************* +// Actions Flags +static void DebugAction_Flags_Flags(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial Flag + ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); + ConvertIntToHexStringN(gStringVar2, 0, STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar1, gDebugText_FlagHex); + if(FlagGet(0) == TRUE) + StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + else + StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopy(gStringVar3, gText_DigitIndicator[0]); + StringExpandPlaceholders(gStringVar4, gDebugText_Flag); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Flags_FlagsSelect; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 0; //Current Flag + gTasks[taskId].data[4] = 0; //Digit Selected +} +static void DebugAction_Flags_FlagsSelect(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + FlagToggle(gTasks[taskId].data[3]); + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + return; + } + + if(gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] >= FLAGS_COUNT){ + gTasks[taskId].data[3] = FLAGS_COUNT - 1; + } + } + if(gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0){ + gTasks[taskId].data[3] = 0; + } + } + if(gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[4] -= 1; + if(gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = 0; + } + } + if(gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[4] += 1; + if(gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_FLAGS-1) + { + gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_FLAGS-1; + } + } + + if (gMain.newKeys & DPAD_ANY || gMain.newKeys & A_BUTTON) + { + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar1, gDebugText_FlagHex); + if(FlagGet(gTasks[taskId].data[3]) == TRUE) + StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + else + StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringExpandPlaceholders(gStringVar4, gDebugText_Flag); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } +} + +static void DebugAction_Flags_SetPokedexFlags(u8 taskId) +{ + u16 i; + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + GetSetPokedexFlag(i + 1, FLAG_SET_CAUGHT); + GetSetPokedexFlag(i + 1, FLAG_SET_SEEN); + } + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); +} +static void DebugAction_Flags_SwitchDex(u8 taskId) +{ + if(FlagGet(FLAG_SYS_POKEDEX_GET)) + { + FlagClear(FLAG_SYS_POKEDEX_GET); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_POKEDEX_GET); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_SwitchNatDex(u8 taskId) +{ + if(IsNationalPokedexEnabled()) + { + DisableNationalPokedex(); + PlaySE(SE_PC_OFF); + }else{ + EnableNationalPokedex(); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_SwitchPokeNav(u8 taskId) +{ + if(FlagGet(FLAG_SYS_POKENAV_GET)) + { + FlagClear(FLAG_SYS_POKENAV_GET); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_POKENAV_GET); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_ToggleFlyFlags(u8 taskId) +{ + // Sound effect + if(FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER)) + PlaySE(SE_PC_OFF); + else + PlaySE(SE_PC_LOGIN); + FlagToggle(FLAG_VISITED_LITTLEROOT_TOWN); + FlagToggle(FLAG_VISITED_OLDALE_TOWN); + FlagToggle(FLAG_VISITED_DEWFORD_TOWN); + FlagToggle(FLAG_VISITED_LAVARIDGE_TOWN); + FlagToggle(FLAG_VISITED_FALLARBOR_TOWN); + FlagToggle(FLAG_VISITED_VERDANTURF_TOWN); + FlagToggle(FLAG_VISITED_PACIFIDLOG_TOWN); + FlagToggle(FLAG_VISITED_PETALBURG_CITY); + FlagToggle(FLAG_VISITED_SLATEPORT_CITY); + FlagToggle(FLAG_VISITED_MAUVILLE_CITY); + FlagToggle(FLAG_VISITED_RUSTBORO_CITY); + FlagToggle(FLAG_VISITED_FORTREE_CITY); + FlagToggle(FLAG_VISITED_LILYCOVE_CITY); + FlagToggle(FLAG_VISITED_MOSSDEEP_CITY); + FlagToggle(FLAG_VISITED_SOOTOPOLIS_CITY); + FlagToggle(FLAG_VISITED_EVER_GRANDE_CITY); + FlagToggle(FLAG_LANDMARK_POKEMON_LEAGUE); + FlagToggle(FLAG_LANDMARK_BATTLE_FRONTIER); +} +static void DebugAction_Flags_ToggleBadgeFlags(u8 taskId) +{ + // Sound effect + if(FlagGet(FLAG_BADGE08_GET)) + PlaySE(SE_PC_OFF); + else + PlaySE(SE_PC_LOGIN); + FlagToggle(FLAG_BADGE01_GET); + FlagToggle(FLAG_BADGE02_GET); + FlagToggle(FLAG_BADGE03_GET); + FlagToggle(FLAG_BADGE04_GET); + FlagToggle(FLAG_BADGE05_GET); + FlagToggle(FLAG_BADGE06_GET); + FlagToggle(FLAG_BADGE07_GET); + FlagToggle(FLAG_BADGE08_GET); +} +static void DebugAction_Flags_CollisionOnOff(u8 taskId) +{ + if(FlagGet(FLAG_SYS_NO_COLLISION)) + { + FlagClear(FLAG_SYS_NO_COLLISION); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_NO_COLLISION); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_EncounterOnOff(u8 taskId) +{ + if(FlagGet(FLAG_SYS_NO_ENCOUNTER)) + { + FlagClear(FLAG_SYS_NO_ENCOUNTER); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_NO_ENCOUNTER); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) +{ + if(FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + { + FlagClear(FLAG_SYS_NO_TRAINER_SEE); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_NO_TRAINER_SEE); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_BagUseOnOff(u8 taskId) +{ + if(FlagGet(FLAG_SYS_NO_BAG_USE)) + { + FlagClear(FLAG_SYS_NO_BAG_USE); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_NO_BAG_USE); + PlaySE(SE_PC_LOGIN); + } +} +static void DebugAction_Flags_CatchingOnOff(u8 taskId) +{ + if(FlagGet(FLAG_SYS_NO_CATCHING)) + { + FlagClear(FLAG_SYS_NO_CATCHING); + PlaySE(SE_PC_OFF); + }else{ + FlagSet(FLAG_SYS_NO_CATCHING); + PlaySE(SE_PC_LOGIN); + } +} + +// ******************************* +// Actions Variables +static void DebugAction_Vars_Vars(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial Variable + ConvertIntToDecimalStringN(gStringVar1, VARS_START, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, VARS_START, STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + ConvertIntToDecimalStringN(gStringVar3, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar2, gText_DigitIndicator[0]); + StringExpandPlaceholders(gStringVar4, gDebugText_Variable); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Vars_Select; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = VARS_START; //Current Variable + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = 0; //Current Variable VALUE +} + +static void DebugAction_Vars_Select(u8 taskId) +{ + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > VARS_END){ + gTasks[taskId].data[3] = VARS_END; + } + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < VARS_START){ + gTasks[taskId].data[3] = VARS_START; + } + } + if(gMain.newKeys & DPAD_LEFT) + { + gTasks[taskId].data[4] -= 1; + if(gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = 0; + } + } + if(gMain.newKeys & DPAD_RIGHT) + { + gTasks[taskId].data[4] += 1; + if(gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_VARIABLES-1) + { + gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_VARIABLES-1; + } + } + + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value, if 65535 the value hasnt been set + gTasks[taskId].data[5] = 0; + else + gTasks[taskId].data[5] = VarGet(gTasks[taskId].data[3]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + + //Combine str's to full window string + StringExpandPlaceholders(gStringVar4, gDebugText_Variable); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[4] = 0; + + PlaySE(SE_SELECT); + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value if 65535 the value hasnt been set + gTasks[taskId].data[5] = 0; + else + gTasks[taskId].data[5] = VarGet(gTasks[taskId].data[3]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + StringExpandPlaceholders(gStringVar4, gDebugText_VariableValueSet); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector + gTasks[taskId].func = DebugAction_Vars_SetValue; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + return; + } +} +static void DebugAction_Vars_SetValue(u8 taskId) +{ + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[6] >= 100){ + gTasks[taskId].data[6] = 99; + } + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[6] < 0){ + gTasks[taskId].data[6] = 0; + } + } + if(gMain.newKeys & DPAD_LEFT) + { + gTasks[taskId].data[4] -= 1; + if(gTasks[taskId].data[4] < 0) + { + gTasks[taskId].data[4] = 0; + } + } + if(gMain.newKeys & DPAD_RIGHT) + { + gTasks[taskId].data[4] += 1; + if(gTasks[taskId].data[4] > 2) + { + gTasks[taskId].data[4] = 2; + } + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + VarSet(gTasks[taskId].data[3], gTasks[taskId].data[5]); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + return; + } + + if (gMain.newKeys & DPAD_ANY || gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[6], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit + StringExpandPlaceholders(gStringVar4, gDebugText_VariableValueSet); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } +} + + +// ******************************* +// Actions Give +#define ITEM_TAG 0xFDF3 +static void DebugAction_Give_Item(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + CopyItemName(1, gStringVar1); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Item_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 1; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); + gSprites[gTasks[taskId].data[6]].pos2.x = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].data[6]].pos2.y = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].data[6]].oam.priority = 0; +} +static void DebugAction_Give_Item_SelectId(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] >= ITEMS_COUNT) + gTasks[taskId].data[3] = ITEMS_COUNT - 1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + CopyItemName(gTasks[taskId].data[3], gStringVar1); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); + gSprites[gTasks[taskId].data[6]].pos2.x = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].data[6]].pos2.y = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].data[6]].oam.priority = 0; + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[5] = gTasks[taskId].data[3]; + gTasks[taskId].data[3] = 1; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Item_SelectQuantity; + } + else if (gMain.newKeys & B_BUTTON) + { + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Item_SelectQuantity(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] >= 100) + gTasks[taskId].data[3] = 99; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + + PlaySE(MUS_OBTAIN_ITEM); + AddBagItem(gTasks[taskId].data[5], gTasks[taskId].data[3]); + DebugAction_DestroyExtraWindow(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon + FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon + + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} + +//Pokemon +static void DebugAction_Give_PokemonSimple(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopy(gStringVar1, gSpeciesNames[1]); //CopyItemName(1, gStringVar1); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 1; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = 1; //Species ID + gTasks[taskId].data[6] = CreateMonIcon(1, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID + LoadMonIconPalettes(); + gTasks[taskId].data[7] = 0; //Simple 0 or complex 1 + gTasks[taskId].data[8] = 0; //Level + gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 + gTasks[taskId].data[10] = 0; //Nature ID + gTasks[taskId].data[11] = 0; //Ability + gTasks[taskId].data[12] = 0; //IVs +} +static void DebugAction_Give_PokemonComplex(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopy(gStringVar1, gSpeciesNames[1]); //CopyItemName(1, gStringVar1); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 1; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = 1; //Species ID + gTasks[taskId].data[6] = CreateMonIcon(1, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID + LoadMonIconPalettes(); + gTasks[taskId].data[7] = 1; //Simple 0 or complex 1 + gTasks[taskId].data[8] = 0; //Level + gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 + gTasks[taskId].data[10] = 0; //Nature ID + gTasks[taskId].data[11] = 0; //Ability + gTasks[taskId].data[12] = 0; //IVs +} + +static void DebugAction_Give_Pokemon_SelectId(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > SPECIES_CELEBI && gTasks[taskId].data[3] < SPECIES_TREECKO) + gTasks[taskId].data[3] = SPECIES_TREECKO; + if(gTasks[taskId].data[3] >= NUM_SPECIES - 1) + gTasks[taskId].data[3] = NUM_SPECIES - 2; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < SPECIES_TREECKO && gTasks[taskId].data[3] > SPECIES_CELEBI) + gTasks[taskId].data[3] = SPECIES_CELEBI; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar1, gSpeciesNames[gTasks[taskId].data[3]]); //CopyItemName(gTasks[taskId].data[3], gStringVar1); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create new pokemon sprite + gSprites[gTasks[taskId].data[6]].oam.priority = 0; + //LoadMonIconPalettes(); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Species ID + gTasks[taskId].data[3] = 1; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > 100) + gTasks[taskId].data[3] = 100; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite + if (gTasks[taskId].data[7] == 0) + { + PlaySE(MUS_LEVEL_UP); + ScriptGiveMon(gTasks[taskId].data[5], gTasks[taskId].data[3], ITEM_NONE, 0,0,0); + DebugAction_DestroyExtraWindow(taskId); + }else{ + gTasks[taskId].data[8] = gTasks[taskId].data[3]; //Level + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite + DebugAction_DestroyExtraWindow(taskId); + } +} +//If complex +static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + + if(gTasks[taskId].data[3] == 1) + StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + else + StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[9] = gTasks[taskId].data[3]; //isShiny + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + //("ID: {STR_VAR_3}\nNature: {STR_VAR_1}\n\n{STR_VAR_2}"); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar1, gNatureNamePointers[0]); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > NUM_NATURES-1) + gTasks[taskId].data[3] = NUM_NATURES-1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar1, gNatureNamePointers[gTasks[taskId].data[3]]); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = gTasks[taskId].data[3]; //Nature + gTasks[taskId].data[3] = 1; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > ABILITIES_COUNT-1) + gTasks[taskId].data[3] = ABILITIES_COUNT-1; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[11] = gTasks[taskId].data[3]; //Ability + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > 31) + gTasks[taskId].data[3] = 31; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[12] = gTasks[taskId].data[3]; //IVs + + PlaySE(MUS_LEVEL_UP); + gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://github.com/ghoulslash/pokeemerald/tree/custom-givemon +{ + u16 nationalDexNum; + int sentToPc; + struct Pokemon mon; + u8 i; + u16 species = gTasks[taskId].data[5]; //species ID + u8 level = gTasks[taskId].data[8]; //Level + u8 isShiny = gTasks[taskId].data[9]; //Shiny: no 0, yes 1 + u8 nature = gTasks[taskId].data[10]; //Nature ID + u8 abilityNum = gTasks[taskId].data[11]; //Ability ID + u8 iv_val = gTasks[taskId].data[12]; //IVs + + if (nature == NUM_NATURES || nature == 0xFF) + nature = Random() % NUM_NATURES; + + if (isShiny == 1) + { + u32 personality; + u32 otid = gSaveBlock2Ptr->playerTrainerId[0] + | (gSaveBlock2Ptr->playerTrainerId[1] << 8) + | (gSaveBlock2Ptr->playerTrainerId[2] << 16) + | (gSaveBlock2Ptr->playerTrainerId[3] << 24); + + do + { + personality = Random32(); + personality = ((((Random() % 8) ^ (HIHALF(otid) ^ LOHALF(otid))) ^ LOHALF(personality)) << 16) | LOHALF(personality); + } while (nature != GetNatureFromPersonality(personality)); + + CreateMon(&mon, species, level, 32, 1, personality, OT_ID_PRESET, otid); + } + else + CreateMonWithNature(&mon, species, level, 32, nature); + + for (i = 0; i < NUM_STATS; i++) + { + // ev + // if (evs[i] != 0xFF && evTotal < 510) + // { + // // only up to 510 evs + // if ((evTotal + evs[i]) > 510) + // evs[i] = (510 - evTotal); + + // evTotal += evs[i]; + // SetMonData(&mon, MON_DATA_HP_EV + i, &evs[i]); + // } + + // iv + if (iv_val != 32 && iv_val != 0xFF) + SetMonData(&mon, MON_DATA_HP_IV + i, &iv_val); + } + CalculateMonStats(&mon); + + // for (i = 0; i < MAX_MON_MOVES; i++) + // { + // if (moves[i] == 0 || moves[i] == 0xFF || moves[i] > MOVES_COUNT) + // continue; + + // SetMonMoveSlot(&mon, moves[i], i); + // } + + //ability + if (abilityNum == 0xFF || GetAbilityBySpecies(species, abilityNum) == 0) + { + do { + abilityNum = Random() % 3; // includes hidden abilities + } while (GetAbilityBySpecies(species, abilityNum) == 0); + } + + SetMonData(&mon, MON_DATA_ABILITY_NUM, &abilityNum); + + //ball + // if (ball <= POKEBALL_COUNT) + // SetMonData(&mon, MON_DATA_POKEBALL, &ball); + + //item + // heldItem[0] = item; + // heldItem[1] = item >> 8; + // SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); + + // give player the mon + //sentToPc = GiveMonToPlayer(&mon); + SetMonData(&mon, MON_DATA_OT_NAME, gSaveBlock2Ptr->playerName); + SetMonData(&mon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender); + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) == SPECIES_NONE) + break; + } + + if (i >= PARTY_SIZE) + sentToPc = SendMonToPC(&mon); + else + { + sentToPc = MON_GIVEN_TO_PARTY; + CopyMon(&gPlayerParty[i], &mon, sizeof(mon)); + gPlayerPartyCount = i + 1; + } + + nationalDexNum = SpeciesToNationalPokedexNum(species); + switch(sentToPc) + { + case MON_GIVEN_TO_PARTY: + case MON_GIVEN_TO_PC: + GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); + GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT); + break; + case MON_CANT_GIVE: + break; + } + + DebugAction_DestroyExtraWindow(taskId); //return sentToPc; +} + +static void DebugAction_Give_CHEAT(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_CheatStart); +} + +// static void DebugAction_AccessPC(u8 taskId) +// { +// Debug_DestroyMenu(taskId); +// PlaySE(SE_PC_ON); +// ScriptContext1_SetupScript(EventScript_PC); +// } + + + + + +// Additional functions +/* +static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput, LMtemplate); +} +static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = HandleInput[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); + } +} +*/ + + +#endif diff --git a/src/event_data.c b/src/event_data.c index 2bde09012d..96156d8a65 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -184,6 +184,14 @@ u16 VarGet(u16 id) return *ptr; } +u16 VarGetIfExist(u16 id) +{ + u16 *ptr = GetVarPointer(id); + if (!ptr) + return 65535; + return *ptr; +} + bool8 VarSet(u16 id, u16 value) { u16 *ptr = GetVarPointer(id); @@ -216,6 +224,14 @@ u8 FlagSet(u16 id) return 0; } +u8 FlagToggle(u16 id) +{ + u8 *ptr = GetFlagPointer(id); + if (ptr) + *ptr ^= 1 << (id & 7); + return 0; +} + u8 FlagClear(u16 id) { u8 *ptr = GetFlagPointer(id); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 72de880c85..e09379d0ce 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4723,6 +4723,12 @@ static u8 GetCollisionInDirection(struct ObjectEvent *objectEvent, u8 direction) u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; + +#if DEBUG //DEBUG + if (FlagGet(FLAG_SYS_NO_COLLISION)) + return COLLISION_NONE; +#endif // + if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(objectEvent, x, y, direction)) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index fab14c5776..c586656fb1 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -3,6 +3,7 @@ #include "bike.h" #include "coord_event_weather.h" #include "daycare.h" +#include "debug.h" #include "faraway_island.h" #include "event_data.h" #include "event_object_movement.h" @@ -130,6 +131,35 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) input->dpadDirection = DIR_WEST; else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; + + + //DEBUG + if (heldKeys & R_BUTTON) + { + if(input->pressedSelectButton) + { + input->input_field_1_0 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_2 = TRUE; + input->pressedStartButton = FALSE; + } + } + if (heldKeys & L_BUTTON) + { + if(input->pressedSelectButton) + { + input->input_field_1_1 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_3 = TRUE; + input->pressedStartButton = FALSE; + } + } + // + } int ProcessPlayerFieldInput(struct FieldInput *input) @@ -189,6 +219,15 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; +#if DEBUG + if (input->input_field_1_2) + { + PlaySE(SE_WIN_OPEN); + Debug_ShowMainMenu(); + return TRUE; + } +#endif + return FALSE; } @@ -668,6 +707,9 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { + if (FlagGet(FLAG_SYS_NO_ENCOUNTER)) //DEBUG + return FALSE;// + if (sWildEncounterImmunitySteps < 4) { sWildEncounterImmunitySteps++; @@ -683,7 +725,7 @@ static bool8 CheckStandardWildEncounter(u16 metatileBehavior) } sPreviousPlayerMetatileBehavior = metatileBehavior; - return FALSE; + return FALSE; } static bool8 TryArrowWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction) diff --git a/src/item_use.c b/src/item_use.c index f9d1ff824b..64e0eac0a8 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -938,7 +938,11 @@ void ItemUseOutOfBattle_EvolutionStone(u8 taskId) void ItemUseInBattle_PokeBall(u8 taskId) { - if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + if (FlagGet(FLAG_SYS_NO_CATCHING)){ //DEBUG + static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); + DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, BagMenu_InitListsMenu); + } // + else if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) diff --git a/src/new_game.c b/src/new_game.c index 55a568132e..7fee212fbe 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -94,7 +94,7 @@ static void InitPlayerTrainerId(void) // L=A isnt set here for some reason. static void SetDefaultOptions(void) { - gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID; + gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_FAST; gSaveBlock2Ptr->optionsWindowFrameType = 0; gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO; gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; diff --git a/src/trainer_see.c b/src/trainer_see.c index c37f372627..d5b25b0c59 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -177,6 +177,11 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; +#if DEBUG //DEBUG + if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + return FALSE; +#endif // + gNoOfApproachingTrainers = 0; gApproachingTrainerId = 0; diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index 5e246ff249..47cc52cee9 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -393,11 +393,14 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n//\n\n"; int group_num = 0; + vector map_count_vec; //DEBUG for (auto &group : groups_data["group_order"].array_items()) { text << "// Map Group " << group_num << "\n"; vector map_ids; - size_t max_length = 0; + + size_t max_length = 0; //DEBUG + int map_count = 0; //DEBUG for (auto &map_name : groups_data[group.string_value()].array_items()) { string header_filepath = file_dir + map_name.string_value() + dir_separator + "map.json"; @@ -406,6 +409,7 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { map_ids.push_back(map_data["id"]); if (map_data["id"].string_value().length() > max_length) max_length = map_data["id"].string_value().length(); + map_count++; //DEBUG } int map_id_num = 0; @@ -416,9 +420,17 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { text << "\n"; group_num++; + map_count_vec.push_back(map_count); //DEBUG } text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n"; + + text << "// static const u8 MAP_GROUP_COUNT[] = {"; //DEBUG + for(int i=0; i Date: Wed, 21 Oct 2020 19:36:08 +0200 Subject: [PATCH 002/271] removed ability --- src/debug.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/debug.c b/src/debug.c index 84388b34f4..644e1aed8d 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1733,14 +1733,21 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) gTasks[taskId].data[3] = 1; gTasks[taskId].data[4] = 0; + // StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + // ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + // StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + // StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); + // StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + // AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + // gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); - gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } else if (gMain.newKeys & B_BUTTON) { From 698886463162622c8d522716f4c87c9712cf0e47 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Mon, 26 Oct 2020 21:12:18 +0100 Subject: [PATCH 003/271] Fixed the wrong palettes for the mon icons with the help of Nadia and ghoulslash --- src/debug.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/debug.c b/src/debug.c index 84388b34f4..457c284248 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1505,9 +1505,10 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) gTasks[taskId].data[3] = 1; //Current ID gTasks[taskId].data[4] = 0; //Digit Selected gTasks[taskId].data[5] = 1; //Species ID - gTasks[taskId].data[6] = CreateMonIcon(1, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + FreeMonIconPalettes(); //Free space for new palletes + LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - LoadMonIconPalettes(); gTasks[taskId].data[7] = 1; //Simple 0 or complex 1 gTasks[taskId].data[8] = 0; //Level gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 @@ -1557,9 +1558,10 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); + FreeMonIconPalettes(); //Free space for new pallete + LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create new pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; - //LoadMonIconPalettes(); } if (gMain.newKeys & A_BUTTON) @@ -1579,6 +1581,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite DebugAction_DestroyExtraWindow(taskId); } @@ -1621,6 +1624,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) if (gMain.newKeys & A_BUTTON) { + FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite if (gTasks[taskId].data[7] == 0) { @@ -1644,6 +1648,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite DebugAction_DestroyExtraWindow(taskId); } From d380932e46a5d694747c646d98924a257c055c22 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Tue, 27 Oct 2020 09:07:06 +0100 Subject: [PATCH 004/271] Fixed forgotten PokemonSimple, thx to AsparagusEduardo --- src/debug.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/debug.c b/src/debug.c index 4f589cc97d..4a246052b0 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1467,9 +1467,10 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) gTasks[taskId].data[3] = 1; //Current ID gTasks[taskId].data[4] = 0; //Digit Selected gTasks[taskId].data[5] = 1; //Species ID - gTasks[taskId].data[6] = CreateMonIcon(1, SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + FreeMonIconPalettes(); //Free space for new pallete + LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - LoadMonIconPalettes(); gTasks[taskId].data[7] = 0; //Simple 0 or complex 1 gTasks[taskId].data[8] = 0; //Level gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 From 6422164d31549eacdd5873baa4227a5211b0a44a Mon Sep 17 00:00:00 2001 From: TheXaman Date: Mon, 16 Nov 2020 10:32:17 +0100 Subject: [PATCH 005/271] Added moves, trainer edits and fixed abilities, now only possible ones including hidden when using PE Give all TMs, watch credits, change trainer name/gender/id implemented moves --- include/main_menu.h | 1 + src/debug.c | 327 +++++++++++++++++++++++++++++++++++--------- src/main_menu.c | 4 +- 3 files changed, 265 insertions(+), 67 deletions(-) diff --git a/include/main_menu.h b/include/main_menu.h index 1944f4ecc5..790c9d10ec 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -3,5 +3,6 @@ void CB2_InitMainMenu(void); void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f); +void NewGameBirchSpeech_SetDefaultPlayerName(u8); #endif // GUARD_MAIN_MENU_H diff --git a/src/debug.c b/src/debug.c index 4a246052b0..dc884b77fb 100644 --- a/src/debug.c +++ b/src/debug.c @@ -6,8 +6,8 @@ //Pyredrid: https://github.com/Pyredrid/pokeemerald/tree/debugmenu //AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 //Ghoulslash: https://github.com/ghoulslash/pokeemerald -#include "debug.h" #include "global.h" +#include "credits.h" #include "data.h" #include "event_data.h" #include "event_object_movement.h" @@ -19,8 +19,11 @@ #include "item_icon.h" #include "list_menu.h" #include "main.h" +#include "main_menu.h" #include "map_name_popup.h" #include "menu.h" +#include "naming_screen.h" +#include "new_game.h" #include "overworld.h" #include "pokedex.h" #include "pokemon.h" @@ -85,6 +88,10 @@ static void DebugAction_Util_CheckSaveBlock(u8); static void DebugAction_Util_CheckWallClock(u8); static void DebugAction_Util_SetWallClock(u8); static void DebugAction_Util_CheckWeekDay(u8); +static void DebugAction_Util_WatchCredits(u8); +static void DebugAction_Util_Trainer_Name(u8); +static void DebugAction_Util_Trainer_Gender(u8); +static void DebugAction_Util_Trainer_Id(u8); static void DebugAction_Flags_Flags(u8 taskId); static void DebugAction_Flags_FlagsSelect(u8 taskId); @@ -108,6 +115,7 @@ static void DebugAction_Vars_SetValue(u8 taskId); static void DebugAction_Give_Item(u8 taskId); static void DebugAction_Give_Item_SelectId(u8 taskId); static void DebugAction_Give_Item_SelectQuantity(u8 taskId); +static void DebugAction_Give_AllTMs(u8 taskId); static void DebugAction_Give_PokemonSimple(u8 taskId); static void DebugAction_Give_PokemonComplex(u8 taskId); static void DebugAction_Give_Pokemon_SelectId(u8 taskId); @@ -117,6 +125,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId); static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId); static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId); static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId); +static void DebugAction_Give_Pokemon_Move(u8 taskId); static void DebugAction_Give_CHEAT(u8 taskId); static void DebugAction_AccessPC(u8 taskId); @@ -147,6 +156,10 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY, + DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, + DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, + DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, + DEBUG_UTIL_MENU_ITEM_TRAINER_ID, }; enum { // Flags DEBUG_FLAG_MENU_ITEM_FLAGS, @@ -163,10 +176,11 @@ enum { // Flags DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF, }; enum { // Vars - DEBUG_VARS_MENU_ITEM_VARS, + DEBUG_VARS_MENU_ITEM_VARS, }; enum { // Give DEBUG_GIVE_MENU_ITEM_ITEM, + DEBUG_MENU_ITEM_GIVE_ALLTMS, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, DEBUG_GIVE_MENU_ITEM_CHEAT, @@ -196,6 +210,10 @@ static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space") static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); static const u8 gDebugText_Util_CheckWeekDay[] = _("Check Week Day"); +static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); +static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); +static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); +static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); // Flags Menu static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); @@ -219,20 +237,24 @@ static const u8 gDebugText_VariableHex[] = _("{STR_VAR_1} \n static const u8 gDebugText_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); static const u8 gDebugText_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); // Give Menu -static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); -static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_ItemID[] = _("Item ID: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm (ID,lvl)"); -static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm (ID,lvl,shi,nat,ab,IVs)"); -static const u8 gDebugText_PokemonID[] = _("ID: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); -static const u8 gDebugText_PokemonNature[] = _("ID: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonAbility[] = _("ID: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT start"); +static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); +static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Give_AllTMs[] = _("Give all TMs"); +static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); +static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); +static const u8 gDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); +static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT start"); // static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); -// static const u8 gDebugText_Give_GiveAllTMs[] = _("Give All TMs"); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); @@ -286,6 +308,10 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = {gDebugText_Util_CheckWeekDay, DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY}, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {gDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, }; static const struct ListMenuItem sDebugMenu_Items_Flags[] = { @@ -309,10 +335,10 @@ static const struct ListMenuItem sDebugMenu_Items_Vars[] = static const struct ListMenuItem sDebugMenu_Items_Give[] = { [DEBUG_GIVE_MENU_ITEM_ITEM] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM}, + [DEBUG_MENU_ITEM_GIVE_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_MENU_ITEM_GIVE_ALLTMS}, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, - //[DEBUG_MENU_ITEM_GIVE_ALLTMS] = {gDebugText_GiveAllTMs, DEBUG_MENU_ITEM_GIVE_ALLTMS}, //[DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, }; @@ -335,6 +361,10 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = DebugAction_Util_CheckWeekDay, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = DebugAction_Util_Trainer_Name, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, }; static void (*const sDebugMenu_Actions_Flags[])(u8) = { @@ -358,10 +388,10 @@ static void (*const sDebugMenu_Actions_Vars[])(u8) = static void (*const sDebugMenu_Actions_Give[])(u8) = { [DEBUG_GIVE_MENU_ITEM_ITEM] = DebugAction_Give_Item, + [DEBUG_MENU_ITEM_GIVE_ALLTMS] = DebugAction_Give_AllTMs, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, - //[DEBUG_MENU_ITEM_GIVE_ALLTMS] = DebugAction_GiveAllTMs, //[DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, }; @@ -860,7 +890,33 @@ static void DebugAction_Util_CheckWeekDay(u8 taskId) //ScriptContext1_SetupScript(Debug_ShowFieldMessageStringVar4); EnableBothScriptContexts(); } - +static void DebugAction_Util_WatchCredits(u8 taskId) +{ + struct Task* task = &gTasks[taskId]; + Debug_DestroyMenu(taskId); + SetMainCallback2(CB2_StartCreditsSequence); +} +static void DebugAction_Util_Trainer_Name(u8 taskId) +{ + NewGameBirchSpeech_SetDefaultPlayerName(Random() % 20); + DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldContinueScript); +} +static void DebugAction_Util_Trainer_Gender(u8 taskId) +{ + if(gSaveBlock2Ptr->playerGender == 0) // 0 Male, 1 Female + gSaveBlock2Ptr->playerGender = 1; + else + gSaveBlock2Ptr->playerGender = 0; + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); +} +static void DebugAction_Util_Trainer_Id(u8 taskId) +{ + u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); + SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); +} // ******************************* // Actions Flags @@ -1438,6 +1494,16 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) } } +//TMs +static void DebugAction_Give_AllTMs(u8 taskId) +{ + u16 i; + PlayFanfare(MUS_OBTAIN_TMHM); + for (i = ITEM_TM01; i <= ITEM_TM50; i++) + if(!CheckBagHasItem(i, 1)) + AddBagItem(i, 1); +} + //Pokemon static void DebugAction_Give_PokemonSimple(u8 taskId) { @@ -1471,12 +1537,7 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - gTasks[taskId].data[7] = 0; //Simple 0 or complex 1 - gTasks[taskId].data[8] = 0; //Level - gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 - gTasks[taskId].data[10] = 0; //Nature ID - gTasks[taskId].data[11] = 0; //Ability - gTasks[taskId].data[12] = 0; //IVs + gTasks[taskId].data[7] = 1; //Level } static void DebugAction_Give_PokemonComplex(u8 taskId) { @@ -1510,12 +1571,12 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - gTasks[taskId].data[7] = 1; //Simple 0 or complex 1 - gTasks[taskId].data[8] = 0; //Level - gTasks[taskId].data[9] = 0; //Shiny: no 0, yes 1 - gTasks[taskId].data[10] = 0; //Nature ID - gTasks[taskId].data[11] = 0; //Ability - gTasks[taskId].data[12] = 0; //IVs + gTasks[taskId].data[7] = 0; //Level + gTasks[taskId].data[8] = 0; //Shiny: no 0, yes 1 + gTasks[taskId].data[9] = 0; //Nature ID + gTasks[taskId].data[10] = 0; //Ability + gTasks[taskId].data[11] = 0; //IVs + gTasks[taskId].data[12] = 0; //Move 0 } static void DebugAction_Give_Pokemon_SelectId(u8 taskId) @@ -1627,13 +1688,13 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite - if (gTasks[taskId].data[7] == 0) + if (gTasks[taskId].data[7] == 1) { PlaySE(MUS_LEVEL_UP); ScriptGiveMon(gTasks[taskId].data[5], gTasks[taskId].data[3], ITEM_NONE, 0,0,0); DebugAction_DestroyExtraWindow(taskId); }else{ - gTasks[taskId].data[8] = gTasks[taskId].data[3]; //Level + gTasks[taskId].data[7] = gTasks[taskId].data[3]; //Level gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -1686,7 +1747,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[9] = gTasks[taskId].data[3]; //isShiny + gTasks[taskId].data[8] = gTasks[taskId].data[3]; //isShiny gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -1735,25 +1796,21 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[10] = gTasks[taskId].data[3]; //Nature - gTasks[taskId].data[3] = 1; + u8 abilityId; + gTasks[taskId].data[9] = gTasks[taskId].data[3]; //NatureId + gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; - // StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - // ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - // StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - // StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); - // StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); - // AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); - // gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); + abilityId = GetAbilityBySpecies(gTasks[taskId].data[5], 0); + StringCopy(gStringVar1, gAbilityNames[abilityId]); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); - gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; } else if (gMain.newKeys & B_BUTTON) { @@ -1763,6 +1820,14 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) } static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { + u8 abilityId; + u8 abilityCount = 0; + if (gBaseStats[gTasks[taskId].data[5]].abilities[1] != ABILITY_NONE) + abilityCount++; + #ifdef POKEMON_EXPANSION + if (gBaseStats[gTasks[taskId].data[5]].abilityHidden != ABILITY_NONE) + abilityCount++; + #endif if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); @@ -1770,27 +1835,28 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) if(gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > ABILITIES_COUNT-1) - gTasks[taskId].data[3] = ABILITIES_COUNT-1; + if(gTasks[taskId].data[3] > abilityCount) + gTasks[taskId].data[3] = abilityCount; } if(gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 1) - gTasks[taskId].data[3] = 1; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; } + abilityId = GetAbilityBySpecies(gTasks[taskId].data[5], gTasks[taskId].data[3]); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar1, gAbilityNames[gTasks[taskId].data[3]]); + StringCopy(gStringVar1, gAbilityNames[abilityId]); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[11] = gTasks[taskId].data[3]; //Ability + gTasks[taskId].data[10] = gTasks[taskId].data[3]; //AbilityNum gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -1846,10 +1912,131 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[12] = gTasks[taskId].data[3]; //IVs + gTasks[taskId].data[11] = gTasks[taskId].data[3]; //IVs + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_Move; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} +static void DebugAction_Give_Pokemon_Move(u8 taskId) +{ + u8 j; + for(j=12; j<15; j++) + { + if (gTasks[taskId].data[j] == 0) + break; + } + + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > MOVES_COUNT) + gTasks[taskId].data[3] = MOVES_COUNT; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 0) + gTasks[taskId].data[3] = 0; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < 3) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + switch (j) + { + case 12: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + break; + case 13: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + break; + case 14: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + break; + case 15: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + break; + } + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + + if (gTasks[taskId].data[3] == 0) + j = 15; + else + gTasks[taskId].data[j] = gTasks[taskId].data[3]; //Move ID + + + // If last move or selected MOVE_NONE make mon, else ask for next move + if (j < 15) + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + switch (j+1) + { + case 12: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + break; + case 13: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + break; + case 14: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + break; + case 15: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + break; + } + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_Move; + } + else + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + + PlaySE(MUS_LEVEL_UP); + gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; + } + - PlaySE(MUS_LEVEL_UP); - gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; } else if (gMain.newKeys & B_BUTTON) { @@ -1863,16 +2050,23 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu int sentToPc; struct Pokemon mon; u8 i; + u16 moves[4]; u16 species = gTasks[taskId].data[5]; //species ID - u8 level = gTasks[taskId].data[8]; //Level - u8 isShiny = gTasks[taskId].data[9]; //Shiny: no 0, yes 1 - u8 nature = gTasks[taskId].data[10]; //Nature ID - u8 abilityNum = gTasks[taskId].data[11]; //Ability ID - u8 iv_val = gTasks[taskId].data[12]; //IVs + u8 level = gTasks[taskId].data[7]; //Level + u8 isShiny = gTasks[taskId].data[8]; //Shiny: no 0, yes 1 + u8 nature = gTasks[taskId].data[9]; //Nature ID + u8 abilityNum = gTasks[taskId].data[10]; //Ability ID + u8 iv_val = gTasks[taskId].data[11]; //IVs + moves[0] = gTasks[taskId].data[12]; //Move 0 + moves[1] = gTasks[taskId].data[13]; //Move 1 + moves[2] = gTasks[taskId].data[14]; //Move 2 + moves[3] = gTasks[taskId].data[15]; //Move 3 + //Nature if (nature == NUM_NATURES || nature == 0xFF) nature = Random() % NUM_NATURES; + //Shinyness if (isShiny == 1) { u32 personality; @@ -1892,6 +2086,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu else CreateMonWithNature(&mon, species, level, 32, nature); + //EVs/IVs for (i = 0; i < NUM_STATS; i++) { // ev @@ -1911,15 +2106,16 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu } CalculateMonStats(&mon); - // for (i = 0; i < MAX_MON_MOVES; i++) - // { - // if (moves[i] == 0 || moves[i] == 0xFF || moves[i] > MOVES_COUNT) - // continue; + //Moves + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i] == 0 || moves[i] == 0xFF || moves[i] > MOVES_COUNT) + continue; - // SetMonMoveSlot(&mon, moves[i], i); - // } + SetMonMoveSlot(&mon, moves[i], i); + } - //ability + //Ability if (abilityNum == 0xFF || GetAbilityBySpecies(species, abilityNum) == 0) { do { @@ -1957,6 +2153,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu gPlayerPartyCount = i + 1; } + //Pokedex entry nationalDexNum = SpeciesToNationalPokedexNum(species); switch(sentToPc) { diff --git a/src/main_menu.c b/src/main_menu.c index e8403cdb17..78d3fbeb00 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -13,6 +13,7 @@ #include "international_string_util.h" #include "link.h" #include "main.h" +#include "main_menu.h" #include "menu.h" #include "list_menu.h" #include "mystery_event_menu.h" @@ -228,7 +229,6 @@ static void Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint(u8); static void Task_NewGameBirchSpeech_WaitPressBeforeNameChoice(u8); static void Task_NewGameBirchSpeech_StartNamingScreen(u8); static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void); -static void NewGameBirchSpeech_SetDefaultPlayerName(u8); static void Task_NewGameBirchSpeech_CreateNameYesNo(u8); static void Task_NewGameBirchSpeech_ProcessNameYesNoMenu(u8); void CreateYesNoMenuParameterized(u8, u8, u16, u16, u8, u8); @@ -2110,7 +2110,7 @@ static s8 NewGameBirchSpeech_ProcessGenderMenuInput(void) return Menu_ProcessInputNoWrap(); } -static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) +void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) { const u8* name; u8 i; From 549381f336a8053149f13b50944ce858b031873d Mon Sep 17 00:00:00 2001 From: ExpoSeed <43502820+ExpoSeed@users.noreply.github.com> Date: Tue, 17 Nov 2020 02:44:30 -0600 Subject: [PATCH 006/271] Add debug makefile targets (#2) Thanks to Expo --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 52000c570a..cee566d78d 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern debug modern_debug infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -339,3 +339,7 @@ berry_fix: libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) + +debug: ; @$(MAKE) DDEBUG=1 DINFO=1 + +modern_debug: ; @$(MAKE) MODERN=1 DDEBUG=1 DINFO=1 From 174867c612f80e3bb07291c4d5bdca682a144336 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 27 Nov 2020 21:12:35 +0100 Subject: [PATCH 007/271] added individual IVs and reworked how data is stored to a struct --- src/debug.c | 450 ++++++++++++++++++++++++++++++++++---------------- sym_ewram.txt | 1 + 2 files changed, 306 insertions(+), 145 deletions(-) diff --git a/src/debug.c b/src/debug.c index dc884b77fb..f83acb7735 100644 --- a/src/debug.c +++ b/src/debug.c @@ -20,6 +20,7 @@ #include "list_menu.h" #include "main.h" #include "main_menu.h" +#include "malloc.h" #include "map_name_popup.h" #include "menu.h" #include "naming_screen.h" @@ -45,6 +46,57 @@ #include "constants/songs.h" #include "constants/species.h" + +// ******************************* +// Enums +enum { // Main + DEBUG_MENU_ITEM_UTILITIES, + DEBUG_MENU_ITEM_FLAGS, + DEBUG_MENU_ITEM_VARS, + DEBUG_MENU_ITEM_GIVE, + DEBUG_MENU_ITEM_CANCEL +}; +enum { // Util + DEBUG_UTIL_MENU_ITEM_HEAL_PARTY, + DEBUG_UTIL_MENU_ITEM_FLY, + DEBUG_UTIL_MENU_ITEM_WARP, + DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, + DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, + DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY, + DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, + DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, + DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, + DEBUG_UTIL_MENU_ITEM_TRAINER_ID, +}; +enum { // Flags + DEBUG_FLAG_MENU_ITEM_FLAGS, + DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS, + DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF, + DEBUG_FLAG_MENU_ITEM_NATDEXONOFF, + DEBUG_FLAG_MENU_ITEM_POKENAVONOFF, + DEBUG_FLAG_MENU_ITEM_FLYANYWHERE, + DEBUG_FLAG_MENU_ITEM_GETALLBADGES, + DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF, + DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF, + DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF, + DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF, + DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF, +}; +enum { // Vars + DEBUG_VARS_MENU_ITEM_VARS, +}; +enum { // Give + DEBUG_GIVE_MENU_ITEM_ITEM, + DEBUG_MENU_ITEM_GIVE_ALLTMS, + DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, + DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, + DEBUG_GIVE_MENU_ITEM_CHEAT, + //DEBUG_MENU_ITEM_ACCESS_PC, +}; + + +// ******************************* // Constants #define DEBUG_MAIN_MENU_WIDTH 13 #define DEBUG_MAIN_MENU_HEIGHT 8 @@ -61,6 +113,32 @@ #define DEBUG_NUMBER_ICON_X 210 #define DEBUG_NUMBER_ICON_Y 50 +// EWRAM +static EWRAM_DATA struct DebugMonData *sDebugMonData = NULL; + + +// ******************************* +struct DebugMonData +{ + u16 mon_speciesId; + u8 mon_level; + u8 isShiny; + u16 mon_natureId; + u16 mon_abilityNum; + u8 mon_iv_hp; + u8 mon_iv_atk; + u8 mon_iv_def; + u8 mon_iv_speed; + u8 mon_iv_satk; + u8 mon_iv_sdef; + u16 mon_move_0; + u16 mon_move_1; + u16 mon_move_2; + u16 mon_move_3; +}; + + +// ******************************* // Define functions static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); void Debug_ShowMainMenu(void); @@ -139,53 +217,6 @@ extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; #define ABILITY_NAME_LENGTH 12 extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; -// ******************************* -// Enums -enum { // Main - DEBUG_MENU_ITEM_UTILITIES, - DEBUG_MENU_ITEM_FLAGS, - DEBUG_MENU_ITEM_VARS, - DEBUG_MENU_ITEM_GIVE, - DEBUG_MENU_ITEM_CANCEL -}; -enum { // Util - DEBUG_UTIL_MENU_ITEM_HEAL_PARTY, - DEBUG_UTIL_MENU_ITEM_FLY, - DEBUG_UTIL_MENU_ITEM_WARP, - DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, - DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, - DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, - DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY, - DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, - DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, - DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, - DEBUG_UTIL_MENU_ITEM_TRAINER_ID, -}; -enum { // Flags - DEBUG_FLAG_MENU_ITEM_FLAGS, - DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS, - DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF, - DEBUG_FLAG_MENU_ITEM_NATDEXONOFF, - DEBUG_FLAG_MENU_ITEM_POKENAVONOFF, - DEBUG_FLAG_MENU_ITEM_FLYANYWHERE, - DEBUG_FLAG_MENU_ITEM_GETALLBADGES, - DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF, - DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF, - DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF, - DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF, - DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF, -}; -enum { // Vars - DEBUG_VARS_MENU_ITEM_VARS, -}; -enum { // Give - DEBUG_GIVE_MENU_ITEM_ITEM, - DEBUG_MENU_ITEM_GIVE_ALLTMS, - DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, - DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, - DEBUG_GIVE_MENU_ITEM_CHEAT, - //DEBUG_MENU_ITEM_ACCESS_PC, -}; // ******************************* //Maps per map group COPY FROM /include/constants/map_groups.h @@ -249,6 +280,12 @@ static const u8 gDebugText_PokemonShiny[] = _("Shiny: static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); @@ -1505,10 +1542,29 @@ static void DebugAction_Give_AllTMs(u8 taskId) } //Pokemon +static void ResetMonDataStruct(struct DebugMonData *sDebugMonData) +{ + sDebugMonData->mon_speciesId = 1; + sDebugMonData->mon_level = 1; + sDebugMonData->isShiny = 0; + sDebugMonData->mon_natureId = 0; + sDebugMonData->mon_abilityNum = 0; + sDebugMonData->mon_iv_hp = 0; + sDebugMonData->mon_iv_atk = 0; + sDebugMonData->mon_iv_def = 0; + sDebugMonData->mon_iv_speed = 0; + sDebugMonData->mon_iv_satk = 0; + sDebugMonData->mon_iv_sdef = 0; +} static void DebugAction_Give_PokemonSimple(u8 taskId) { u8 windowId; + //Mon data struct + sDebugMonData = AllocZeroed(sizeof(struct DebugMonData)); + ResetMonDataStruct(sDebugMonData); + + //Window initialization ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); RemoveWindow(gTasks[taskId].data[1]); @@ -1522,27 +1578,31 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopy(gStringVar1, gSpeciesNames[1]); //CopyItemName(1, gStringVar1); + StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); - + //Set task data gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; gTasks[taskId].data[2] = windowId; gTasks[taskId].data[3] = 1; //Current ID gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 1; //Species ID - FreeMonIconPalettes(); //Free space for new pallete + gTasks[taskId].data[5] = 0; //Complex? + FreeMonIconPalettes(); //Free space for new pallete LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - gTasks[taskId].data[7] = 1; //Level } static void DebugAction_Give_PokemonComplex(u8 taskId) { u8 windowId; + //Mon data struct + sDebugMonData = AllocZeroed(sizeof(struct DebugMonData)); + ResetMonDataStruct(sDebugMonData); + + //Window initialization ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); RemoveWindow(gTasks[taskId].data[1]); @@ -1555,8 +1615,8 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); - ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); - StringCopy(gStringVar1, gSpeciesNames[1]); //CopyItemName(1, gStringVar1); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 4); + StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); @@ -1566,17 +1626,12 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) gTasks[taskId].data[2] = windowId; gTasks[taskId].data[3] = 1; //Current ID gTasks[taskId].data[4] = 0; //Digit Selected - gTasks[taskId].data[5] = 1; //Species ID - FreeMonIconPalettes(); //Free space for new palletes + gTasks[taskId].data[5] = 1; //Complex? + FreeMonIconPalettes(); //Free space for new palletes LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID - gTasks[taskId].data[7] = 0; //Level - gTasks[taskId].data[8] = 0; //Shiny: no 0, yes 1 - gTasks[taskId].data[9] = 0; //Nature ID - gTasks[taskId].data[10] = 0; //Ability - gTasks[taskId].data[11] = 0; //IVs - gTasks[taskId].data[12] = 0; //Move 0 + gTasks[taskId].data[7] = 0; //iterator } static void DebugAction_Give_Pokemon_SelectId(u8 taskId) @@ -1615,7 +1670,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); StringCopy(gStringVar1, gSpeciesNames[gTasks[taskId].data[3]]); //CopyItemName(gTasks[taskId].data[3], gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 4); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -1628,7 +1683,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Species ID + sDebugMonData->mon_speciesId = gTasks[taskId].data[3]; //Species ID gTasks[taskId].data[3] = 1; gTasks[taskId].data[4] = 0; @@ -1643,6 +1698,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite DebugAction_DestroyExtraWindow(taskId); @@ -1688,13 +1744,16 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite - if (gTasks[taskId].data[7] == 1) + if (gTasks[taskId].data[5] == 0) { PlaySE(MUS_LEVEL_UP); - ScriptGiveMon(gTasks[taskId].data[5], gTasks[taskId].data[3], ITEM_NONE, 0,0,0); + ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); - }else{ - gTasks[taskId].data[7] = gTasks[taskId].data[3]; //Level + } + else + { + sDebugMonData->mon_level = gTasks[taskId].data[3]; //Level gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -1710,6 +1769,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite DebugAction_DestroyExtraWindow(taskId); @@ -1747,11 +1807,10 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[8] = gTasks[taskId].data[3]; //isShiny + sDebugMonData->isShiny = gTasks[taskId].data[3]; //isShiny gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; - //("ID: {STR_VAR_3}\nNature: {STR_VAR_1}\n\n{STR_VAR_2}"); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); @@ -1764,6 +1823,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } } @@ -1797,15 +1857,14 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) if (gMain.newKeys & A_BUTTON) { u8 abilityId; - gTasks[taskId].data[9] = gTasks[taskId].data[3]; //NatureId + sDebugMonData->mon_natureId = gTasks[taskId].data[3]; //NatureId gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - abilityId = GetAbilityBySpecies(gTasks[taskId].data[5], 0); + abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, 0); StringCopy(gStringVar1, gAbilityNames[abilityId]); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -1815,6 +1874,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } } @@ -1822,10 +1882,10 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { u8 abilityId; u8 abilityCount = 0; - if (gBaseStats[gTasks[taskId].data[5]].abilities[1] != ABILITY_NONE) + if (gBaseStats[sDebugMonData->mon_speciesId].abilities[1] != ABILITY_NONE) abilityCount++; #ifdef POKEMON_EXPANSION - if (gBaseStats[gTasks[taskId].data[5]].abilityHidden != ABILITY_NONE) + if (gBaseStats[sDebugMonData->mon_speciesId].abilityHidden != ABILITY_NONE) abilityCount++; #endif if (gMain.newKeys & DPAD_ANY) @@ -1845,7 +1905,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) gTasks[taskId].data[3] = 0; } - abilityId = GetAbilityBySpecies(gTasks[taskId].data[5], gTasks[taskId].data[3]); + abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3]); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); @@ -1856,14 +1916,14 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[10] = gTasks[taskId].data[3]; //AbilityNum + sDebugMonData->mon_abilityNum = gTasks[taskId].data[3]; //AbilityNum gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; @@ -1871,6 +1931,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } } @@ -1906,40 +1967,115 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIVs); + switch (gTasks[taskId].data[7]) + { + case 0: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + break; + case 1: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + break; + case 2: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + break; + case 3: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + break; + } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } + //If A or B button if (gMain.newKeys & A_BUTTON) { - gTasks[taskId].data[11] = gTasks[taskId].data[3]; //IVs - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; + switch (gTasks[taskId].data[7]) + { + case 0: + sDebugMonData->mon_iv_hp = gTasks[taskId].data[3]; + break; + case 1: + sDebugMonData->mon_iv_atk = gTasks[taskId].data[3]; + break; + case 2: + sDebugMonData->mon_iv_def = gTasks[taskId].data[3]; + break; + case 3: + sDebugMonData->mon_iv_speed = gTasks[taskId].data[3]; + break; + case 4: + sDebugMonData->mon_iv_satk = gTasks[taskId].data[3]; + break; + case 5: + sDebugMonData->mon_iv_sdef = gTasks[taskId].data[3]; + break; + } - StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); - StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); - AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + //Check if all IVs set + if (gTasks[taskId].data[7] != 5) + { + gTasks[taskId].data[7] += 1; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; - gTasks[taskId].func = DebugAction_Give_Pokemon_Move; + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + switch (gTasks[taskId].data[7]) + { + case 0: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + break; + case 1: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + break; + case 2: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + break; + case 3: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + break; + } + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; + } + else + { + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[7] = 0; //Reset iterator + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_Move; + } } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } } static void DebugAction_Give_Pokemon_Move(u8 taskId) { - u8 j; - for(j=12; j<15; j++) - { - if (gTasks[taskId].data[j] == 0) - break; - } - if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); @@ -1971,18 +2107,18 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - switch (j) + switch (gTasks[taskId].data[7]) { - case 12: + case 0: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); break; - case 13: + case 1: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); break; - case 14: + case 2: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); break; - case 15: + case 3: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); break; } @@ -1991,16 +2127,31 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) if (gMain.newKeys & A_BUTTON) { - + //If MOVE_NONE selected, stop asking for additional moves if (gTasks[taskId].data[3] == 0) - j = 15; - else - gTasks[taskId].data[j] = gTasks[taskId].data[3]; //Move ID + gTasks[taskId].data[7] = 4; - - // If last move or selected MOVE_NONE make mon, else ask for next move - if (j < 15) + //Set current value + switch (gTasks[taskId].data[7]) { + case 0: + sDebugMonData->mon_move_0 = gTasks[taskId].data[3]; + break; + case 1: + sDebugMonData->mon_move_1 = gTasks[taskId].data[3]; + break; + case 2: + sDebugMonData->mon_move_2 = gTasks[taskId].data[3]; + break; + case 3: + sDebugMonData->mon_move_3 = gTasks[taskId].data[3]; + break; + } + + //If NOT last move or selected MOVE_NONE ask for next move, else make mon + if (gTasks[taskId].data[7] < 3) + { + gTasks[taskId].data[7] += 1; gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; @@ -2008,18 +2159,18 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - switch (j+1) + switch (gTasks[taskId].data[7]) { - case 12: + case 0: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); break; - case 13: + case 1: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); break; - case 14: + case 2: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); break; - case 15: + case 3: StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); break; } @@ -2035,12 +2186,11 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) PlaySE(MUS_LEVEL_UP); gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; } - - } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); } } @@ -2051,16 +2201,24 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu struct Pokemon mon; u8 i; u16 moves[4]; - u16 species = gTasks[taskId].data[5]; //species ID - u8 level = gTasks[taskId].data[7]; //Level - u8 isShiny = gTasks[taskId].data[8]; //Shiny: no 0, yes 1 - u8 nature = gTasks[taskId].data[9]; //Nature ID - u8 abilityNum = gTasks[taskId].data[10]; //Ability ID - u8 iv_val = gTasks[taskId].data[11]; //IVs - moves[0] = gTasks[taskId].data[12]; //Move 0 - moves[1] = gTasks[taskId].data[13]; //Move 1 - moves[2] = gTasks[taskId].data[14]; //Move 2 - moves[3] = gTasks[taskId].data[15]; //Move 3 + u8 IVs[6]; + u8 iv_val; + u16 species = sDebugMonData->mon_speciesId; + u8 level = sDebugMonData->mon_level; + u8 isShiny = sDebugMonData->isShiny; //Shiny: no 0, yes 1 + u8 nature = sDebugMonData->mon_natureId; + u8 abilityNum = sDebugMonData->mon_abilityNum; + moves[0] = sDebugMonData->mon_move_0; + moves[1] = sDebugMonData->mon_move_1; + moves[2] = sDebugMonData->mon_move_2; + moves[3] = sDebugMonData->mon_move_3; + IVs[0] = sDebugMonData->mon_iv_hp; + IVs[1] = sDebugMonData->mon_iv_atk; + IVs[2] = sDebugMonData->mon_iv_def; + IVs[3] = sDebugMonData->mon_iv_speed; + IVs[4] = sDebugMonData->mon_iv_satk; + IVs[5] = sDebugMonData->mon_iv_sdef; + //Nature if (nature == NUM_NATURES || nature == 0xFF) @@ -2068,21 +2226,21 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu //Shinyness if (isShiny == 1) + { + u32 personality; + u32 otid = gSaveBlock2Ptr->playerTrainerId[0] + | (gSaveBlock2Ptr->playerTrainerId[1] << 8) + | (gSaveBlock2Ptr->playerTrainerId[2] << 16) + | (gSaveBlock2Ptr->playerTrainerId[3] << 24); + + do { - u32 personality; - u32 otid = gSaveBlock2Ptr->playerTrainerId[0] - | (gSaveBlock2Ptr->playerTrainerId[1] << 8) - | (gSaveBlock2Ptr->playerTrainerId[2] << 16) - | (gSaveBlock2Ptr->playerTrainerId[3] << 24); + personality = Random32(); + personality = ((((Random() % 8) ^ (HIHALF(otid) ^ LOHALF(otid))) ^ LOHALF(personality)) << 16) | LOHALF(personality); + } while (nature != GetNatureFromPersonality(personality)); - do - { - personality = Random32(); - personality = ((((Random() % 8) ^ (HIHALF(otid) ^ LOHALF(otid))) ^ LOHALF(personality)) << 16) | LOHALF(personality); - } while (nature != GetNatureFromPersonality(personality)); - - CreateMon(&mon, species, level, 32, 1, personality, OT_ID_PRESET, otid); - } + CreateMon(&mon, species, level, 32, 1, personality, OT_ID_PRESET, otid); + } else CreateMonWithNature(&mon, species, level, 32, nature); @@ -2101,6 +2259,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu // } // iv + iv_val = IVs[i]; if (iv_val != 32 && iv_val != 0xFF) SetMonData(&mon, MON_DATA_HP_IV + i, &iv_val); } @@ -2157,15 +2316,16 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu nationalDexNum = SpeciesToNationalPokedexNum(species); switch(sentToPc) { - case MON_GIVEN_TO_PARTY: - case MON_GIVEN_TO_PC: - GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); - GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT); - break; - case MON_CANT_GIVE: - break; + case MON_GIVEN_TO_PARTY: + case MON_GIVEN_TO_PC: + GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN); + GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT); + break; + case MON_CANT_GIVE: + break; } + Free(sDebugMonData); //Frees EWRAM of MonData Struct DebugAction_DestroyExtraWindow(taskId); //return sentToPc; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 88c4461cb0..fb9765b20d 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -148,3 +148,4 @@ .include "src/faraway_island.o" .include "src/trainer_hill.o" .include "src/rayquaza_scene.o" + .include "src/debug.o" From 5bb92efa5b0d80341c9c6d56867b88864f1bd191 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Sat, 28 Nov 2020 00:51:38 +0100 Subject: [PATCH 008/271] now closes debug windows after giving all TMs --- src/debug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/debug.c b/src/debug.c index f83acb7735..c4d5b1ecf9 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1539,6 +1539,8 @@ static void DebugAction_Give_AllTMs(u8 taskId) for (i = ITEM_TM01; i <= ITEM_TM50; i++) if(!CheckBagHasItem(i, 1)) AddBagItem(i, 1); + Debug_DestroyMenu(taskId); + EnableBothScriptContexts(); } //Pokemon From edc476f863fedf9ec43d9005a08edf3e0e61e3c2 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Mon, 30 Nov 2020 11:29:13 +0100 Subject: [PATCH 009/271] fixed heal party bug, thanks to jaizu for poitning it out --- src/debug.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index c4d5b1ecf9..e0db6988ef 100644 --- a/src/debug.c +++ b/src/debug.c @@ -683,6 +683,7 @@ static void DebugAction_Util_HealParty(u8 taskId) { PlaySE(SE_USE_ITEM); HealPlayerParty(); + EnableBothScriptContexts(); Debug_DestroyMenu(taskId); } static void DebugAction_Util_Fly(u8 taskId) @@ -944,8 +945,8 @@ static void DebugAction_Util_Trainer_Gender(u8 taskId) gSaveBlock2Ptr->playerGender = 1; else gSaveBlock2Ptr->playerGender = 0; - Debug_DestroyMenu(taskId); EnableBothScriptContexts(); + Debug_DestroyMenu(taskId); } static void DebugAction_Util_Trainer_Id(u8 taskId) { From c15138fdbbf7dca956ad0a0b6ef3be1fd17ca515 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 29 Jan 2021 11:39:09 +0100 Subject: [PATCH 010/271] Fixed problems with changed Deoxys handling in RHH's pokeexpansion, thanks to "Subzero Eclipse" for pointing it out --- src/debug.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/debug.c b/src/debug.c index e0db6988ef..f1672632d4 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1594,7 +1594,12 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) gTasks[taskId].data[5] = 0; //Complex? FreeMonIconPalettes(); //Free space for new pallete LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + #ifndef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + #endif + #ifdef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite + #endif gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID } static void DebugAction_Give_PokemonComplex(u8 taskId) @@ -1632,7 +1637,12 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) gTasks[taskId].data[5] = 1; //Complex? FreeMonIconPalettes(); //Free space for new palletes LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + #ifndef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + #endif + #ifdef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite + #endif gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID gTasks[taskId].data[7] = 0; //iterator } @@ -1680,7 +1690,12 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); FreeMonIconPalettes(); //Free space for new pallete LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create new pokemon sprite + #ifndef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite + #endif + #ifdef POKEMON_EXPANSION + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite + #endif gSprites[gTasks[taskId].data[6]].oam.priority = 0; } From 27a99323da2b5e0767f1c2b1a7777cb6d4d60dd4 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Thu, 4 Feb 2021 16:33:01 +0100 Subject: [PATCH 011/271] WIP reset makefile to new default --- Makefile | 54 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index cee566d78d..98da1e17a1 100644 --- a/Makefile +++ b/Makefile @@ -63,13 +63,13 @@ ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN) ifeq ($(MODERN),0) CC1 := tools/agbcc/bin/agbcc$(EXE) -override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g ROM := pokeemerald.gba OBJ_DIR := build/emerald LIBPATH := -L ../../tools/agbcc/lib else CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g ROM := pokeemerald_modern.gba OBJ_DIR := build/modern LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))" @@ -111,7 +111,7 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern debug modern_debug +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) @@ -136,6 +136,9 @@ C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS)) ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) +# get all the data/*.s files EXCEPT the ones with specific rules +REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(wildcard $(DATA_ASM_SUBDIR)/*.s)) + DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) @@ -178,7 +181,7 @@ mostlyclean: tidy rm -f $(SAMPLE_SUBDIR)/*.bin rm -f $(CRY_SUBDIR)/*.bin rm -f $(MID_SUBDIR)/*.s - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + @@ -248,12 +251,6 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif -# DebugMenu -ifeq ($(DDEBUG),1) -override ASFLAGS += --defsym DEBUG=1 -override CPPFLAGS += -D DEBUG=1 -endif - $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s @@ -281,23 +278,32 @@ endif $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s $$(c_asm_dep) $(AS) $(ASFLAGS) -o $@ $< -ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: asm_dep := -else -$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I "" $(ASM_SUBDIR)/$*.s) -endif +# The dep rules have to be explicit or else missing files won't be reported. +# As a side effect, they're evaluated immediately instead of when the rule is invoked. +# It doesn't look like $(shell) can be deferred so there might not be a better way. -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) + +ifeq ($(NODEP),1) +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $(AS) $(ASFLAGS) -o $@ $< - -ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: data_dep := else -$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s) +define ASM_DEP +$1: $2 $$(shell $(SCANINC) -I include -I "" $2) + $$(AS) $$(ASFLAGS) -o $$@ $$< +endef +$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src)))) endif -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) +ifeq ($(NODEP),1) +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ +else +define DATA_ASM_DEP +$1: $2 $$(shell $(SCANINC) -I include -I "" $2) + $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@ +endef +$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src)))) +endif $(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s $(AS) $(ASFLAGS) -I sound -o $@ $< @@ -338,8 +344,4 @@ berry_fix: @$(MAKE) -C berry_fix COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) libagbsyscall: - @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) - -debug: ; @$(MAKE) DDEBUG=1 DINFO=1 - -modern_debug: ; @$(MAKE) MODERN=1 DDEBUG=1 DINFO=1 + @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) \ No newline at end of file From 965bcfa29d2ea0fea3e181253eb241fa70744f3b Mon Sep 17 00:00:00 2001 From: TheXaman Date: Thu, 4 Feb 2021 18:04:00 +0100 Subject: [PATCH 012/271] Added newest Makefile and fixed making from clean --- Makefile | 16 +++++++++++++--- include/debug.h | 2 +- src/debug.c | 2 +- src/event_object_movement.c | 2 +- src/field_control_avatar.c | 2 +- src/trainer_see.c | 2 +- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 98da1e17a1..7ea5bdb926 100644 --- a/Makefile +++ b/Makefile @@ -111,13 +111,13 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern debugging debugging_modern infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) # Build tools when building the rom # Disable dependency scanning for clean/tidy/tools -ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern debugging debugging_modern berry_fix libagbsyscall,$(MAKECMDGOALS))) $(call infoshell, $(MAKE) tools) else NODEP := 1 @@ -251,6 +251,12 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif +# Debug menu +ifeq ($(DDEBUGGING),1) +override ASFLAGS += --defsym DEBUGGING=1 +override CPPFLAGS += -D DEBUGGING=1 +endif + $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s @@ -344,4 +350,8 @@ berry_fix: @$(MAKE) -C berry_fix COMPARE=$(COMPARE) TOOLCHAIN=$(TOOLCHAIN) libagbsyscall: - @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) \ No newline at end of file + @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) + +# Debug menu +debugging: ; @$(MAKE) DDEBUGGING=1 DINFO=1 +debugging_modern: ; @$(MAKE) MODERN=1 DDEBUGGING=1 DINFO=1 diff --git a/include/debug.h b/include/debug.h index 0d78632e63..4c9c3fffcb 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,7 +1,7 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H -#if DEBUG +#if DEBUGGING void Debug_ShowMainMenu(void); #endif diff --git a/src/debug.c b/src/debug.c index f1672632d4..ec5a4f81ac 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1,4 +1,4 @@ -#if DEBUG +#if DEBUGGING //CREDITS //TheXaman: https://github.com/TheXaman/pokeemerald/tree/tx_debug_system //CODE USED FROM: diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ba90eca7e0..de17be1254 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4724,7 +4724,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; -#if DEBUG //DEBUG +#if DEBUGGING //DEBUG if (FlagGet(FLAG_SYS_NO_COLLISION)) return COLLISION_NONE; #endif // diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index c586656fb1..fa607cd42e 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -219,7 +219,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; -#if DEBUG +#if DEBUGGING if (input->input_field_1_2) { PlaySE(SE_WIN_OPEN); diff --git a/src/trainer_see.c b/src/trainer_see.c index d5b25b0c59..83783469c1 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -177,7 +177,7 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; -#if DEBUG //DEBUG +#if DEBUGGING //DEBUG if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) return FALSE; #endif // From 40ebd6608497dfcfc5b57e226a94afac661b20bf Mon Sep 17 00:00:00 2001 From: TheXaman Date: Thu, 25 Mar 2021 10:21:27 +0100 Subject: [PATCH 013/271] Fixed setting vars not working, thanks to AmbientDinosaur and BSBob for reaching out --- src/debug.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/debug.c b/src/debug.c index ec5a4f81ac..df05735744 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1310,9 +1310,12 @@ static void DebugAction_Vars_SetValue(u8 taskId) { if(gMain.newKeys & DPAD_UP) { - gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[6] >= 100){ - gTasks[taskId].data[6] = 99; + if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].data[4]] <= 32000) + gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; + else + gTasks[taskId].data[6] = 32000-1; + if(gTasks[taskId].data[6] >= 32000){ + gTasks[taskId].data[6] = 32000-1; } } if(gMain.newKeys & DPAD_DOWN) @@ -1333,16 +1336,16 @@ static void DebugAction_Vars_SetValue(u8 taskId) if(gMain.newKeys & DPAD_RIGHT) { gTasks[taskId].data[4] += 1; - if(gTasks[taskId].data[4] > 2) + if(gTasks[taskId].data[4] > 4) { - gTasks[taskId].data[4] = 2; + gTasks[taskId].data[4] = 4; } } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - VarSet(gTasks[taskId].data[3], gTasks[taskId].data[5]); + VarSet(gTasks[taskId].data[3], gTasks[taskId].data[6]); } else if (gMain.newKeys & B_BUTTON) { From c8c81e41560d88ff80f15fe6712c13798ae6bfb4 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 7 May 2021 10:31:59 +0200 Subject: [PATCH 014/271] Fixed "new trainer id" option, thanks to Lunos and Deokishisu --- src/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index df05735744..29a0d06d68 100644 --- a/src/debug.c +++ b/src/debug.c @@ -950,7 +950,7 @@ static void DebugAction_Util_Trainer_Gender(u8 taskId) } static void DebugAction_Util_Trainer_Id(u8 taskId) { - u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower(); + u32 trainerId = ((Random() << 16) | Random()); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); Debug_DestroyMenu(taskId); EnableBothScriptContexts(); From 19cf846ba9e29f1b9a8ec9159ff732321155a763 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 7 May 2021 11:44:03 +0200 Subject: [PATCH 015/271] Added: Toggle running shoes, Poison all mons, Max money, Max coins, Trigger daycare egg, Fill PC CREDITS: @Sierraffinity --- src/debug.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 29a0d06d68..173711a113 100644 --- a/src/debug.c +++ b/src/debug.c @@ -7,8 +7,11 @@ //AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 //Ghoulslash: https://github.com/ghoulslash/pokeemerald #include "global.h" +#include "battle.h" +#include "coins.h" #include "credits.h" #include "data.h" +#include "daycare.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -23,6 +26,7 @@ #include "malloc.h" #include "map_name_popup.h" #include "menu.h" +#include "money.h" #include "naming_screen.h" #include "new_game.h" #include "overworld.h" @@ -60,6 +64,8 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_HEAL_PARTY, DEBUG_UTIL_MENU_ITEM_FLY, DEBUG_UTIL_MENU_ITEM_WARP, + DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES, + DEBUG_UTIL_MENU_ITEM_POISON_MONS, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, @@ -91,6 +97,10 @@ enum { // Give DEBUG_MENU_ITEM_GIVE_ALLTMS, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, + DEBUG_GIVE_MENU_ITEM_MAX_MONEY, + DEBUG_GIVE_MENU_ITEM_MAX_COINS, + DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG, + DEBUG_GIVE_MENU_ITEM_FILL_PC, DEBUG_GIVE_MENU_ITEM_CHEAT, //DEBUG_MENU_ITEM_ACCESS_PC, }; @@ -162,6 +172,8 @@ static void DebugAction_Util_Warp_Warp(u8 taskId); static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId); static void DebugAction_Util_Warp_SelectMap(u8 taskId); static void DebugAction_Util_Warp_SelectWarp(u8 taskId); +static void DebugAction_Util_RunningShoes(u8 taskId); +static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8); static void DebugAction_Util_CheckWallClock(u8); static void DebugAction_Util_SetWallClock(u8); @@ -204,6 +216,10 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId); static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId); static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId); static void DebugAction_Give_Pokemon_Move(u8 taskId); +static void DebugAction_Give_MaxMoney(u8 taskId); +static void DebugAction_Give_MaxCoins(u8 taskId); +static void DebugAction_Give_DayCareEgg(u8 taskId); +static void DebugAction_Give_FillPC(u8 taskId); static void DebugAction_Give_CHEAT(u8 taskId); static void DebugAction_AccessPC(u8 taskId); @@ -237,6 +253,8 @@ static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] =_("Group: {STR_VAR_1 static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); +static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); @@ -290,7 +308,11 @@ static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT start"); +static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); +static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); +static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); +static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); +static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); // static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); @@ -341,6 +363,8 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, @@ -375,6 +399,10 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_MENU_ITEM_GIVE_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_MENU_ITEM_GIVE_ALLTMS}, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, //[DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, }; @@ -394,6 +422,8 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = DebugAction_Util_HealParty, [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = DebugAction_Util_RunningShoes, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, @@ -428,6 +458,10 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_MENU_ITEM_GIVE_ALLTMS] = DebugAction_Give_AllTMs, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = DebugAction_Give_MaxMoney, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = DebugAction_Give_MaxCoins, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = DebugAction_Give_FillPC, [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, //[DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, }; @@ -895,6 +929,36 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) } } +static void DebugAction_Util_RunningShoes(u8 taskId) +{ + if (FlagGet(FLAG_SYS_B_DASH)) + { + FlagClear(FLAG_SYS_B_DASH); + PlaySE(SE_PC_OFF); + } + else + { + FlagSet(FLAG_SYS_B_DASH); + PlaySE(SE_PC_LOGIN); + } +} + +static void DebugAction_Util_PoisonMons(u8 taskId) +{ + int i; + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, 0) + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) + { + u32 curStatus = STATUS1_POISON; + SetMonData(&gPlayerParty[i], MON_DATA_STATUS, &curStatus); + } + } + PlaySE(SE_FIELD_POISON); +} + static void DebugAction_Util_CheckSaveBlock(u8 taskId) { static const u8 gDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); @@ -2350,6 +2414,50 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu DebugAction_DestroyExtraWindow(taskId); //return sentToPc; } +static void DebugAction_Give_MaxMoney(u8 taskId) +{ + SetMoney(&gSaveBlock1Ptr->money, 999999); +} + +static void DebugAction_Give_MaxCoins(u8 taskId) +{ + SetCoins(9999); +} + +static void DebugAction_Give_DayCareEgg(u8 taskId) +{ + TriggerPendingDaycareEgg(); +} + +static void DebugAction_Give_FillPC(u8 taskId) //Credit: Sierraffinity +{ + int boxId, boxPosition; + u32 personality; + struct BoxPokemon boxMon; + + personality = Random32(); + + CreateBoxMon(&boxMon, + SPECIES_DEOXYS, + 100, + 32, + personality, + 0, + OT_ID_PLAYER_ID, + 0); + + for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++) + { + for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++) + { + if (!GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES)) + { + gPokemonStoragePtr->boxes[boxId][boxPosition] = boxMon; + } + } + } +} + static void DebugAction_Give_CHEAT(u8 taskId) { Debug_DestroyMenu(taskId); From 822a6c42608248a4a71199fe94c8d984edc6584b Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 7 May 2021 11:52:51 +0200 Subject: [PATCH 016/271] Formatting --- src/debug.c | 90 ++++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/debug.c b/src/debug.c index 173711a113..28402da5d6 100644 --- a/src/debug.c +++ b/src/debug.c @@ -93,8 +93,8 @@ enum { // Vars DEBUG_VARS_MENU_ITEM_VARS, }; enum { // Give - DEBUG_GIVE_MENU_ITEM_ITEM, - DEBUG_MENU_ITEM_GIVE_ALLTMS, + DEBUG_GIVE_MENU_ITEM_ITEM_X, + DEBUG_GIVE_MENU_ITEM_ALLTMS, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, DEBUG_GIVE_MENU_ITEM_MAX_MONEY, @@ -264,27 +264,27 @@ static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); // Flags Menu -static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); -static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); -static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); -static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); -static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); -static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); -static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); -static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); -static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); -static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); -static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); -static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); -static const u8 gDebugText_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); -static const u8 gDebugText_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_FlagSet[] = _("TRUE"); -static const u8 gDebugText_FlagUnset[] = _("FALSE"); +static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); +static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); +static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); +static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); +static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); +static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); +static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); +static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); +static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); +static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); +static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); +static const u8 gDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); +static const u8 gDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_Flags_FlagSet[] = _("TRUE"); +static const u8 gDebugText_Flags_FlagUnset[] = _("FALSE"); // Variables Menu -static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); -static const u8 gDebugText_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); -static const u8 gDebugText_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); +static const u8 gDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 gDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); // Give Menu static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); @@ -395,8 +395,8 @@ static const struct ListMenuItem sDebugMenu_Items_Vars[] = }; static const struct ListMenuItem sDebugMenu_Items_Give[] = { - [DEBUG_GIVE_MENU_ITEM_ITEM] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM}, - [DEBUG_MENU_ITEM_GIVE_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_MENU_ITEM_GIVE_ALLTMS}, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, @@ -454,8 +454,8 @@ static void (*const sDebugMenu_Actions_Vars[])(u8) = }; static void (*const sDebugMenu_Actions_Give[])(u8) = { - [DEBUG_GIVE_MENU_ITEM_ITEM] = DebugAction_Give_Item, - [DEBUG_MENU_ITEM_GIVE_ALLTMS] = DebugAction_Give_AllTMs, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = DebugAction_Give_Item, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = DebugAction_Give_AllTMs, [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = DebugAction_Give_MaxMoney, @@ -1039,13 +1039,13 @@ static void DebugAction_Flags_Flags(u8 taskId) //Display initial Flag ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, 0, STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_FlagHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); if(FlagGet(0) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flag); + StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Flags_FlagsSelect; @@ -1103,13 +1103,13 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) { ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_FlagHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); if(FlagGet(gTasks[taskId].data[3]) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flag); + StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1275,11 +1275,11 @@ static void DebugAction_Vars_Vars(u8 taskId) //Display initial Variable ConvertIntToDecimalStringN(gStringVar1, VARS_START, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, VARS_START, STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); ConvertIntToDecimalStringN(gStringVar3, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Variable); + StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Vars_Select; @@ -1328,7 +1328,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value, if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1337,7 +1337,7 @@ static void DebugAction_Vars_Select(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit //Combine str's to full window string - StringExpandPlaceholders(gStringVar4, gDebugText_Variable); + StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1349,7 +1349,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1357,7 +1357,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_VariableValueSet); + StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector @@ -1424,12 +1424,12 @@ static void DebugAction_Vars_SetValue(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_VariableHex); + StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[6], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_VariableValueSet); + StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1844,7 +1844,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -1881,9 +1881,9 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) } if(gTasks[taskId].data[3] == 1) - StringCopyPadded(gStringVar2, gDebugText_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); From c92c3456b1a6fee9d298c903927bc5aa80dcfa44 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Mon, 24 May 2021 10:19:22 +0200 Subject: [PATCH 017/271] Fixed bug not beeing able to select last species, thanks to Lunos for finding it --- src/debug.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/debug.c b/src/debug.c index 28402da5d6..36102339e1 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1725,8 +1725,8 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if(gTasks[taskId].data[3] > SPECIES_CELEBI && gTasks[taskId].data[3] < SPECIES_TREECKO) gTasks[taskId].data[3] = SPECIES_TREECKO; - if(gTasks[taskId].data[3] >= NUM_SPECIES - 1) - gTasks[taskId].data[3] = NUM_SPECIES - 2; + if(gTasks[taskId].data[3] >= NUM_SPECIES) + gTasks[taskId].data[3] = NUM_SPECIES - 1; } if(gMain.newKeys & DPAD_DOWN) { From 4e98c268c1ba507bbcd18eddf153bab47bb9abdf Mon Sep 17 00:00:00 2001 From: Jaizu Date: Wed, 9 Jun 2021 23:07:05 +0200 Subject: [PATCH 018/271] Small change to hidden ability (#3) --- src/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 36102339e1..c6bc23fb34 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1970,7 +1970,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) if (gBaseStats[sDebugMonData->mon_speciesId].abilities[1] != ABILITY_NONE) abilityCount++; #ifdef POKEMON_EXPANSION - if (gBaseStats[sDebugMonData->mon_speciesId].abilityHidden != ABILITY_NONE) + if (gBaseStats[sDebugMonData->mon_speciesId].abilities[2] != ABILITY_NONE) abilityCount++; #endif if (gMain.newKeys & DPAD_ANY) From 20ca83bb2001f6ef0188392b0c5b557479a8fba1 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Sun, 20 Jun 2021 15:48:44 +0200 Subject: [PATCH 019/271] Added menu to run custom scripts easily, credit: @Jaizu --- data/scripts/debug.inc | 24 +++++++ src/debug.c | 146 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 9d46ea5fff..70401564e9 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -58,3 +58,27 @@ Debug_CheatStart:: closemessage release end + +Debug_Script_1:: + end + +Debug_Script_2:: + end + +Debug_Script_3:: + end + +Debug_Script_4:: + end + +Debug_Script_5:: + end + +Debug_Script_6:: + end + +Debug_Script_7:: + end + +Debug_Script_8:: + end diff --git a/src/debug.c b/src/debug.c index c6bc23fb34..2de9d8f904 100644 --- a/src/debug.c +++ b/src/debug.c @@ -6,6 +6,7 @@ //Pyredrid: https://github.com/Pyredrid/pokeemerald/tree/debugmenu //AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 //Ghoulslash: https://github.com/ghoulslash/pokeemerald +//Jaizu: https://hastebin.com/raw/rikegejore #include "global.h" #include "battle.h" #include "coins.h" @@ -55,6 +56,7 @@ // Enums enum { // Main DEBUG_MENU_ITEM_UTILITIES, + DEBUG_MENU_ITEM_SCRIPTS, DEBUG_MENU_ITEM_FLAGS, DEBUG_MENU_ITEM_VARS, DEBUG_MENU_ITEM_GIVE, @@ -75,6 +77,16 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, DEBUG_UTIL_MENU_ITEM_TRAINER_ID, }; +enum { + DEBUG_UTIL_MENU_ITEM_SCRIPT_1, + DEBUG_UTIL_MENU_ITEM_SCRIPT_2, + DEBUG_UTIL_MENU_ITEM_SCRIPT_3, + DEBUG_UTIL_MENU_ITEM_SCRIPT_4, + DEBUG_UTIL_MENU_ITEM_SCRIPT_5, + DEBUG_UTIL_MENU_ITEM_SCRIPT_6, + DEBUG_UTIL_MENU_ITEM_SCRIPT_7, + DEBUG_UTIL_MENU_ITEM_SCRIPT_8, +}; enum { // Flags DEBUG_FLAG_MENU_ITEM_FLAGS, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS, @@ -156,12 +168,23 @@ static void Debug_DestroyMenu(u8); static void DebugAction_Cancel(u8); static void DebugAction_DestroyExtraWindow(u8 taskId); +static void DebugAction_Util_Script_1(u8); +static void DebugAction_Util_Script_2(u8); +static void DebugAction_Util_Script_3(u8); +static void DebugAction_Util_Script_4(u8); +static void DebugAction_Util_Script_5(u8); +static void DebugAction_Util_Script_6(u8); +static void DebugAction_Util_Script_7(u8); +static void DebugAction_Util_Script_8(u8); + static void DebugAction_OpenUtilitiesMenu(u8); +static void DebugAction_OpenScriptsMenu(u8); static void DebugAction_OpenFlagsMenu(u8); static void DebugAction_OpenVariablesMenu(u8); static void DebugAction_OpenGiveMenu(u8); static void DebugTask_HandleMenuInput_Main(u8); static void DebugTask_HandleMenuInput_Utilities(u8); +static void DebugTask_HandleMenuInput_Scripts(u8); static void DebugTask_HandleMenuInput_Flags(u8); static void DebugTask_HandleMenuInput_Vars(u8); static void DebugTask_HandleMenuInput_Give(u8); @@ -226,6 +249,15 @@ static void DebugAction_AccessPC(u8 taskId); static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate); +extern u8 Debug_Script_1[]; +extern u8 Debug_Script_2[]; +extern u8 Debug_Script_3[]; +extern u8 Debug_Script_4[]; +extern u8 Debug_Script_5[]; +extern u8 Debug_Script_6[]; +extern u8 Debug_Script_7[]; +extern u8 Debug_Script_8[]; + extern u8 Debug_ShowFieldMessageStringVar4[]; extern u8 Debug_CheatStart[]; extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; @@ -241,10 +273,20 @@ extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; // Text // Main Menu static const u8 gDebugText_Utilities[] = _("Utilities"); +static const u8 gDebugText_Scripts[] = _("Scripts"); static const u8 gDebugText_Flags[] = _("Flags"); static const u8 gDebugText_Vars[] = _("Variables"); static const u8 gDebugText_Give[] = _("Give X"); static const u8 gDebugText_Cancel[] = _("Cancel"); +// Script menu +static const u8 gDebugText_Util_Script_1[] = _("Script 1"); +static const u8 gDebugText_Util_Script_2[] = _("Script 2"); +static const u8 gDebugText_Util_Script_3[] = _("Script 3"); +static const u8 gDebugText_Util_Script_4[] = _("Script 4"); +static const u8 gDebugText_Util_Script_5[] = _("Script 5"); +static const u8 gDebugText_Util_Script_6[] = _("Script 6"); +static const u8 gDebugText_Util_Script_7[] = _("Script 7"); +static const u8 gDebugText_Util_Script_8[] = _("Script 8"); // Util Menu static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); static const u8 gDebugText_Util_Fly[] = _("Fly to map"); @@ -353,6 +395,7 @@ static const s32 sPowersOfTen[] = static const struct ListMenuItem sDebugMenu_Items_Main[] = { [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_SCRIPTS] = {gDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, @@ -374,6 +417,17 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, }; +static const struct ListMenuItem sDebugMenu_Items_Scripts[] = +{ + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {gDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {gDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {gDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {gDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {gDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {gDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {gDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {gDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, +}; static const struct ListMenuItem sDebugMenu_Items_Flags[] = { [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, @@ -412,6 +466,7 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = static void (*const sDebugMenu_Actions_Main[])(u8) = { [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, + [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, [DEBUG_MENU_ITEM_FLAGS] = DebugAction_OpenFlagsMenu, [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, @@ -433,6 +488,17 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, }; +static void (*const sDebugMenu_Actions_Scripts[])(u8) = +{ + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = DebugAction_Util_Script_1, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = DebugAction_Util_Script_2, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = DebugAction_Util_Script_3, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = DebugAction_Util_Script_4, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = DebugAction_Util_Script_5, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = DebugAction_Util_Script_6, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = DebugAction_Util_Script_7, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = DebugAction_Util_Script_8, +}; static void (*const sDebugMenu_Actions_Flags[])(u8) = { [DEBUG_FLAG_MENU_ITEM_FLAGS] = DebugAction_Flags_Flags, @@ -504,6 +570,12 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Utilities = .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Utilities), }; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Scripts = +{ + .items = sDebugMenu_Items_Scripts, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Scripts), +}; static const struct ListMenuTemplate sDebugMenu_ListTemplate_Flags = { .items = sDebugMenu_Items_Flags, @@ -632,6 +704,24 @@ static void DebugTask_HandleMenuInput_Utilities(u8 taskId) Debug_ShowMainMenu(); } } +static void DebugTask_HandleMenuInput_Scripts(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Scripts[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} static void DebugTask_HandleMenuInput_Flags(u8 taskId) { void (*func)(u8); @@ -694,6 +784,11 @@ static void DebugAction_OpenUtilitiesMenu(u8 taskId) Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities); } +static void DebugAction_OpenScriptsMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Scripts, sDebugMenu_ListTemplate_Scripts); +} static void DebugAction_OpenFlagsMenu(u8 taskId) { Debug_DestroyMenu(taskId); @@ -1020,6 +1115,57 @@ static void DebugAction_Util_Trainer_Id(u8 taskId) EnableBothScriptContexts(); } +// ******************************* +// Actions Scripts +static void DebugAction_Util_Script_1(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_1); +} +static void DebugAction_Util_Script_2(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_2); +} +static void DebugAction_Util_Script_3(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_3); +} +static void DebugAction_Util_Script_4(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_4); +} +static void DebugAction_Util_Script_5(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_5); +} +static void DebugAction_Util_Script_6(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_6); +} +static void DebugAction_Util_Script_7(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_7); +} +static void DebugAction_Util_Script_8(u8 taskId) +{ + Debug_DestroyMenu(taskId); + ScriptContext2_Enable(); + ScriptContext1_SetupScript(Debug_Script_8); +} + // ******************************* // Actions Flags static void DebugAction_Flags_Flags(u8 taskId) From 9708ee074427de0160084c6d8ca7eabca501fc69 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Sun, 20 Jun 2021 16:57:34 +0200 Subject: [PATCH 020/271] fixed credit link --- src/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 2de9d8f904..abd3c4d455 100644 --- a/src/debug.c +++ b/src/debug.c @@ -6,7 +6,7 @@ //Pyredrid: https://github.com/Pyredrid/pokeemerald/tree/debugmenu //AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 //Ghoulslash: https://github.com/ghoulslash/pokeemerald -//Jaizu: https://hastebin.com/raw/rikegejore +//Jaizu: https://jaizu.moe/ #include "global.h" #include "battle.h" #include "coins.h" From defd7d9e07a22ee1cc1fb69216aaf4c886dd1267 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Tue, 22 Jun 2021 12:38:00 +0200 Subject: [PATCH 021/271] Added Sound menu for SE and MUS --- include/constants/songs.h | 3 + src/debug.c | 214 +++++++++++++++++++++++++++++++++++++- 2 files changed, 216 insertions(+), 1 deletion(-) diff --git a/include/constants/songs.h b/include/constants/songs.h index a78ee6fafe..8067557449 100644 --- a/include/constants/songs.h +++ b/include/constants/songs.h @@ -276,8 +276,10 @@ #define SE_PIKE_CURTAIN_CLOSE 267 // SE_CURTAIN #define SE_PIKE_CURTAIN_OPEN 268 // SE_CURTAIN1 #define SE_SUDOWOODO_SHAKE 269 // SE_USSOKI +#define END_SE SE_SUDOWOODO_SHAKE // Music +#define START_MUS 350 #define MUS_LITTLEROOT_TEST 350 // MUS_TETSUJI #define MUS_GSC_ROUTE38 351 // MUS_FIELD13 #define MUS_CAUGHT 352 // MUS_KACHI22 @@ -488,6 +490,7 @@ #define MUS_RG_TRAINER_TOWER 556 // MUS_RG_T_TOWER #define MUS_RG_SLOW_PALLET 557 // MUS_RG_SLOWMASARA #define MUS_RG_TEACHY_TV_MENU 558 // MUS_RG_TVNOIZE +#define END_MUS MUS_RG_TEACHY_TV_MENU #define PH_TRAP_BLEND 559 #define PH_TRAP_HELD 560 diff --git a/src/debug.c b/src/debug.c index abd3c4d455..0bd9c7cbbd 100644 --- a/src/debug.c +++ b/src/debug.c @@ -60,6 +60,7 @@ enum { // Main DEBUG_MENU_ITEM_FLAGS, DEBUG_MENU_ITEM_VARS, DEBUG_MENU_ITEM_GIVE, + DEBUG_MENU_ITEM_SOUND, DEBUG_MENU_ITEM_CANCEL }; enum { // Util @@ -77,7 +78,7 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, DEBUG_UTIL_MENU_ITEM_TRAINER_ID, }; -enum { +enum { // Scripts DEBUG_UTIL_MENU_ITEM_SCRIPT_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_3, @@ -116,6 +117,10 @@ enum { // Give DEBUG_GIVE_MENU_ITEM_CHEAT, //DEBUG_MENU_ITEM_ACCESS_PC, }; +enum { //Sound + DEBUG_SOUND_MENU_ITEM_SE, + DEBUG_SOUND_MENU_ITEM_MUS, +}; // ******************************* @@ -182,12 +187,14 @@ static void DebugAction_OpenScriptsMenu(u8); static void DebugAction_OpenFlagsMenu(u8); static void DebugAction_OpenVariablesMenu(u8); static void DebugAction_OpenGiveMenu(u8); +static void DebugAction_OpenSoundMenu(u8); static void DebugTask_HandleMenuInput_Main(u8); static void DebugTask_HandleMenuInput_Utilities(u8); static void DebugTask_HandleMenuInput_Scripts(u8); static void DebugTask_HandleMenuInput_Flags(u8); static void DebugTask_HandleMenuInput_Vars(u8); static void DebugTask_HandleMenuInput_Give(u8); +static void DebugTask_HandleMenuInput_Sound(u8); static void DebugAction_Util_HealParty(u8 taskId); static void DebugAction_Util_Fly(u8 taskId); @@ -246,6 +253,11 @@ static void DebugAction_Give_FillPC(u8 taskId); static void DebugAction_Give_CHEAT(u8 taskId); static void DebugAction_AccessPC(u8 taskId); +static void DebugAction_Sound_SE(u8 taskId); +static void DebugAction_Sound_SE_SelectId(u8 taskId); +static void DebugAction_Sound_MUS(u8 taskId); +static void DebugAction_Sound_MUS_SelectId(u8 taskId); + static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate); @@ -277,6 +289,7 @@ static const u8 gDebugText_Scripts[] = _("Scripts"); static const u8 gDebugText_Flags[] = _("Flags"); static const u8 gDebugText_Vars[] = _("Variables"); static const u8 gDebugText_Give[] = _("Give X"); +static const u8 gDebugText_Sound[] = _("Sound"); static const u8 gDebugText_Cancel[] = _("Cancel"); // Script menu static const u8 gDebugText_Util_Script_1[] = _("Script 1"); @@ -356,6 +369,12 @@ static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); // static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); +// Sound Mneu +static const u8 gDebugText_Sound_SE[] = _("Effects"); +static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Sound_MUS[] = _("Music"); +static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Sound_Empty[] = _(""); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); @@ -399,6 +418,7 @@ static const struct ListMenuItem sDebugMenu_Items_Main[] = [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} }; static const struct ListMenuItem sDebugMenu_Items_Utilities[] = @@ -460,6 +480,11 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, //[DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, }; +static const struct ListMenuItem sDebugMenu_Items_Sound[] = +{ + [DEBUG_SOUND_MENU_ITEM_SE] = {gDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, + [DEBUG_SOUND_MENU_ITEM_MUS] = {gDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, +}; // ******************************* // Menu Actions @@ -470,6 +495,7 @@ static void (*const sDebugMenu_Actions_Main[])(u8) = [DEBUG_MENU_ITEM_FLAGS] = DebugAction_OpenFlagsMenu, [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, + [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel }; static void (*const sDebugMenu_Actions_Utilities[])(u8) = @@ -531,6 +557,11 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, //[DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, }; +static void (*const sDebugMenu_Actions_Sound[])(u8) = +{ + [DEBUG_SOUND_MENU_ITEM_SE] = DebugAction_Sound_SE, + [DEBUG_SOUND_MENU_ITEM_MUS] = DebugAction_Sound_MUS, +}; // ******************************* @@ -594,6 +625,12 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Give = .moveCursorFunc = ListMenuDefaultCursorMoveFunc, .totalItems = ARRAY_COUNT(sDebugMenu_Items_Give), }; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Sound = +{ + .items = sDebugMenu_Items_Sound, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Sound), +}; // ******************************* @@ -776,6 +813,24 @@ static void DebugTask_HandleMenuInput_Give(u8 taskId) Debug_ShowMainMenu(); } } +static void DebugTask_HandleMenuInput_Sound(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Sound[input]) != NULL) + func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMainMenu(); + } +} // ******************************* // Open sub-menus @@ -804,6 +859,11 @@ static void DebugAction_OpenGiveMenu(u8 taskId) Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Give, sDebugMenu_ListTemplate_Give); } +static void DebugAction_OpenSoundMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_Sound, sDebugMenu_ListTemplate_Sound); +} // ******************************* @@ -2619,8 +2679,160 @@ static void DebugAction_Give_CHEAT(u8 taskId) // } +// ******************************* +// Sound Scripts +static void DebugAction_Sound_SE(u8 taskId) +{ + u8 windowId; + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + StopMapMusic(); //Stop map music to better hear sounds + + gTasks[taskId].func = DebugAction_Sound_SE_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 1; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected +} +static void DebugAction_Sound_SE_SelectId(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > END_SE) + gTasks[taskId].data[3] = END_SE; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < 1) + gTasks[taskId].data[3] = 1; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + PlaySE(gTasks[taskId].data[3]); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + MapMusicMain(); + DebugAction_DestroyExtraWindow(taskId); + } +} + +static void DebugAction_Sound_MUS(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + StopMapMusic(); //Stop map music to better hear new music + + gTasks[taskId].func = DebugAction_Sound_MUS_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = START_MUS; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected +} +static void DebugAction_Sound_MUS_SelectId(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if(gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] > END_MUS) + gTasks[taskId].data[3] = END_MUS; + } + if(gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if(gTasks[taskId].data[3] < START_MUS) + gTasks[taskId].data[3] = START_MUS; + } + if(gMain.newKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if(gMain.newKeys & DPAD_RIGHT) + { + if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); + StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + StopMapMusic(); + PlayNewMapMusic(gTasks[taskId].data[3]); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + MapMusicMain(); + DebugAction_DestroyExtraWindow(taskId); + } +} // Additional functions /* From 81d7986d34992e8f26166e14da7da69c7e2f03ee Mon Sep 17 00:00:00 2001 From: TheXaman Date: Tue, 22 Jun 2021 15:57:02 +0200 Subject: [PATCH 022/271] added SE and MUS names --- src/debug.c | 776 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 768 insertions(+), 8 deletions(-) diff --git a/src/debug.c b/src/debug.c index 0bd9c7cbbd..49bef794f7 100644 --- a/src/debug.c +++ b/src/debug.c @@ -130,6 +130,8 @@ enum { //Sound #define DEBUG_NUMBER_DISPLAY_WIDTH 10 #define DEBUG_NUMBER_DISPLAY_HEIGHT 4 +#define DEBUG_NUMBER_DISPLAY_SOUND_WIDTH 20 +#define DEBUG_NUMBER_DISPLAY_SOUND_HEIGHT 6 #define DEBUG_NUMBER_DIGITS_FLAGS 4 #define DEBUG_NUMBER_DIGITS_VARIABLES 5 @@ -371,9 +373,9 @@ static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); // static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); // Sound Mneu static const u8 gDebugText_Sound_SE[] = _("Effects"); -static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); static const u8 gDebugText_Sound_MUS[] = _("Music"); -static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); static const u8 gDebugText_Sound_Empty[] = _(""); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); @@ -586,6 +588,16 @@ static const struct WindowTemplate sDebugNumberDisplayWindowTemplate = .paletteNum = 15, .baseBlock = 1, }; +static const struct WindowTemplate sDebugNumberDisplayLargeWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 30 - DEBUG_NUMBER_DISPLAY_SOUND_WIDTH -1, + .tilemapTop = 1, + .width = DEBUG_NUMBER_DISPLAY_SOUND_WIDTH, + .height = DEBUG_NUMBER_DISPLAY_SOUND_HEIGHT, + .paletteNum = 15, + .baseBlock = 1, +}; // ******************************* // List Menu Templates @@ -2681,6 +2693,8 @@ static void DebugAction_Give_CHEAT(u8 taskId) // ******************************* // Sound Scripts +static const u8 *const gBGMNames[]; +static const u8 *const gSENames[]; static void DebugAction_Sound_SE(u8 taskId) { u8 windowId; @@ -2690,7 +2704,7 @@ static void DebugAction_Sound_SE(u8 taskId) HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); - windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + windowId = AddWindow(&sDebugNumberDisplayLargeWindowTemplate); DrawStdWindowFrame(windowId, FALSE); CopyWindowToVram(windowId, 3); @@ -2698,7 +2712,7 @@ static void DebugAction_Sound_SE(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringCopyPadded(gStringVar1, gSENames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); @@ -2739,7 +2753,7 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringCopyPadded(gStringVar1, gSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2766,7 +2780,7 @@ static void DebugAction_Sound_MUS(u8 taskId) HideMapNamePopUpWindow(); LoadMessageBoxAndBorderGfx(); - windowId = AddWindow(&sDebugNumberDisplayWindowTemplate); + windowId = AddWindow(&sDebugNumberDisplayLargeWindowTemplate); DrawStdWindowFrame(windowId, FALSE); CopyWindowToVram(windowId, 3); @@ -2774,7 +2788,7 @@ static void DebugAction_Sound_MUS(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringCopyPadded(gStringVar1, gBGMNames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); @@ -2815,7 +2829,7 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gDebugText_Sound_Empty, CHAR_SPACE, 15); + StringCopyPadded(gStringVar1, gBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2834,6 +2848,752 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) } } +#define SOUND_LIST_BGM \ + X(MUS_LITTLEROOT_TEST, "MUS-LITTLEROOT-TEST") \ + X(MUS_GSC_ROUTE38, "MUS-GSC-ROUTE38") \ + X(MUS_CAUGHT, "MUS-CAUGHT") \ + X(MUS_VICTORY_WILD, "MUS-VICTORY-WILD") \ + X(MUS_VICTORY_GYM_LEADER, "MUS-VICTORY-GYM-LEADER") \ + X(MUS_VICTORY_LEAGUE, "MUS-VICTORY-LEAGUE") \ + X(MUS_C_COMM_CENTER, "MUS-C-COMM-CENTER") \ + X(MUS_GSC_PEWTER, "MUS-GSC-PEWTER") \ + X(MUS_C_VS_LEGEND_BEAST, "MUS-C-VS-LEGEND-BEAST") \ + X(MUS_ROUTE101, "MUS-ROUTE101") \ + X(MUS_ROUTE110, "MUS-ROUTE110") \ + X(MUS_ROUTE120, "MUS-ROUTE120") \ + X(MUS_PETALBURG, "MUS-PETALBURG") \ + X(MUS_OLDALE, "MUS-OLDALE") \ + X(MUS_GYM, "MUS-GYM") \ + X(MUS_SURF, "MUS-SURF") \ + X(MUS_PETALBURG_WOODS, "MUS-PETALBURG-WOODS") \ + X(MUS_LEVEL_UP, "MUS-LEVEL-UP") \ + X(MUS_HEAL, "MUS-HEAL") \ + X(MUS_OBTAIN_BADGE, "MUS-OBTAIN-BADGE") \ + X(MUS_OBTAIN_ITEM, "MUS-OBTAIN-ITEM") \ + X(MUS_EVOLVED, "MUS-EVOLVED") \ + X(MUS_OBTAIN_TMHM, "MUS-OBTAIN-TMHM") \ + X(MUS_LILYCOVE_MUSEUM, "MUS-LILYCOVE-MUSEUM") \ + X(MUS_ROUTE122, "MUS-ROUTE122") \ + X(MUS_OCEANIC_MUSEUM, "MUS-OCEANIC-MUSEUM") \ + X(MUS_EVOLUTION_INTRO, "MUS-EVOLUTION-INTRO") \ + X(MUS_EVOLUTION, "MUS-EVOLUTION") \ + X(MUS_MOVE_DELETED, "MUS-MOVE-DELETED") \ + X(MUS_ENCOUNTER_GIRL, "MUS-ENCOUNTER-GIRL") \ + X(MUS_ENCOUNTER_MALE, "MUS-ENCOUNTER-MALE") \ + X(MUS_ABANDONED_SHIP, "MUS-ABANDONED-SHIP") \ + X(MUS_FORTREE, "MUS-FORTREE") \ + X(MUS_BIRCH_LAB, "MUS-BIRCH-LAB") \ + X(MUS_B_TOWER_RS, "MUS-B-TOWER-RS") \ + X(MUS_ENCOUNTER_SWIMMER, "MUS-ENCOUNTER-SWIMMER") \ + X(MUS_CAVE_OF_ORIGIN, "MUS-CAVE-OF-ORIGIN") \ + X(MUS_OBTAIN_BERRY, "MUS-OBTAIN-BERRY") \ + X(MUS_AWAKEN_LEGEND, "MUS-AWAKEN-LEGEND") \ + X(MUS_SLOTS_JACKPOT, "MUS-SLOTS-JACKPOT") \ + X(MUS_SLOTS_WIN, "MUS-SLOTS-WIN") \ + X(MUS_TOO_BAD, "MUS-TOO-BAD") \ + X(MUS_ROULETTE, "MUS-ROULETTE") \ + X(MUS_LINK_CONTEST_P1, "MUS-LINK-CONTEST-P1") \ + X(MUS_LINK_CONTEST_P2, "MUS-LINK-CONTEST-P2") \ + X(MUS_LINK_CONTEST_P3, "MUS-LINK-CONTEST-P3") \ + X(MUS_LINK_CONTEST_P4, "MUS-LINK-CONTEST-P4") \ + X(MUS_ENCOUNTER_RICH, "MUS-ENCOUNTER-RICH") \ + X(MUS_VERDANTURF, "MUS-VERDANTURF") \ + X(MUS_RUSTBORO, "MUS-RUSTBORO") \ + X(MUS_POKE_CENTER, "MUS-POKE-CENTER") \ + X(MUS_ROUTE104, "MUS-ROUTE104") \ + X(MUS_ROUTE119, "MUS-ROUTE119") \ + X(MUS_CYCLING, "MUS-CYCLING") \ + X(MUS_POKE_MART, "MUS-POKE-MART") \ + X(MUS_LITTLEROOT, "MUS-LITTLEROOT") \ + X(MUS_MT_CHIMNEY, "MUS-MT-CHIMNEY") \ + X(MUS_ENCOUNTER_FEMALE, "MUS-ENCOUNTER-FEMALE") \ + X(MUS_LILYCOVE, "MUS-LILYCOVE") \ + X(MUS_ROUTE111, "MUS-ROUTE111") \ + X(MUS_HELP, "MUS-HELP") \ + X(MUS_UNDERWATER, "MUS-UNDERWATER") \ + X(MUS_VICTORY_TRAINER, "MUS-VICTORY-TRAINER") \ + X(MUS_TITLE, "MUS-TITLE") \ + X(MUS_INTRO, "MUS-INTRO") \ + X(MUS_ENCOUNTER_MAY, "MUS-ENCOUNTER-MAY") \ + X(MUS_ENCOUNTER_INTENSE, "MUS-ENCOUNTER-INTENSE") \ + X(MUS_ENCOUNTER_COOL, "MUS-ENCOUNTER-COOL") \ + X(MUS_ROUTE113, "MUS-ROUTE113") \ + X(MUS_ENCOUNTER_AQUA, "MUS-ENCOUNTER-AQUA") \ + X(MUS_FOLLOW_ME, "MUS-FOLLOW-ME") \ + X(MUS_ENCOUNTER_BRENDAN, "MUS-ENCOUNTER-BRENDAN") \ + X(MUS_EVER_GRANDE, "MUS-EVER-GRANDE") \ + X(MUS_ENCOUNTER_SUSPICIOUS, "MUS-ENCOUNTER-SUSPICIOUS") \ + X(MUS_VICTORY_AQUA_MAGMA, "MUS-VICTORY-AQUA-MAGMA") \ + X(MUS_CABLE_CAR, "MUS-CABLE-CAR") \ + X(MUS_GAME_CORNER, "MUS-GAME-CORNER") \ + X(MUS_DEWFORD, "MUS-DEWFORD") \ + X(MUS_SAFARI_ZONE, "MUS-SAFARI-ZONE") \ + X(MUS_VICTORY_ROAD, "MUS-VICTORY-ROAD") \ + X(MUS_AQUA_MAGMA_HIDEOUT, "MUS-AQUA-MAGMA-HIDEOUT") \ + X(MUS_SAILING, "MUS-SAILING") \ + X(MUS_MT_PYRE, "MUS-MT-PYRE") \ + X(MUS_SLATEPORT, "MUS-SLATEPORT") \ + X(MUS_MT_PYRE_EXTERIOR, "MUS-MT-PYRE-EXTERIOR") \ + X(MUS_SCHOOL, "MUS-SCHOOL") \ + X(MUS_HALL_OF_FAME, "MUS-HALL-OF-FAME") \ + X(MUS_FALLARBOR, "MUS-FALLARBOR") \ + X(MUS_SEALED_CHAMBER, "MUS-SEALED-CHAMBER") \ + X(MUS_CONTEST_WINNER, "MUS-CONTEST-WINNER") \ + X(MUS_CONTEST, "MUS-CONTEST") \ + X(MUS_ENCOUNTER_MAGMA, "MUS-ENCOUNTER-MAGMA") \ + X(MUS_INTRO_BATTLE, "MUS-INTRO-BATTLE") \ + X(MUS_WEATHER_KYOGRE, "MUS-WEATHER-KYOGRE") \ + X(MUS_WEATHER_GROUDON, "MUS-WEATHER-GROUDON") \ + X(MUS_SOOTOPOLIS, "MUS-SOOTOPOLIS") \ + X(MUS_CONTEST_RESULTS, "MUS-CONTEST-RESULTS") \ + X(MUS_HALL_OF_FAME_ROOM, "MUS-HALL-OF-FAME-ROOM") \ + X(MUS_TRICK_HOUSE, "MUS-TRICK-HOUSE") \ + X(MUS_ENCOUNTER_TWINS, "MUS-ENCOUNTER-TWINS") \ + X(MUS_ENCOUNTER_ELITE_FOUR, "MUS-ENCOUNTER-ELITE-FOUR") \ + X(MUS_ENCOUNTER_HIKER, "MUS-ENCOUNTER-HIKER") \ + X(MUS_CONTEST_LOBBY, "MUS-CONTEST-LOBBY") \ + X(MUS_ENCOUNTER_INTERVIEWER, "MUS-ENCOUNTER-INTERVIEWER") \ + X(MUS_ENCOUNTER_CHAMPION, "MUS-ENCOUNTER-CHAMPION") \ + X(MUS_CREDITS, "MUS-CREDITS") \ + X(MUS_END, "MUS-END") \ + X(MUS_B_FRONTIER, "MUS-B-FRONTIER") \ + X(MUS_B_ARENA, "MUS-B-ARENA") \ + X(MUS_OBTAIN_B_POINTS, "MUS-OBTAIN-B-POINTS") \ + X(MUS_REGISTER_MATCH_CALL, "MUS-REGISTER-MATCH-CALL") \ + X(MUS_B_PYRAMID, "MUS-B-PYRAMID") \ + X(MUS_B_PYRAMID_TOP, "MUS-B-PYRAMID-TOP") \ + X(MUS_B_PALACE, "MUS-B-PALACE") \ + X(MUS_RAYQUAZA_APPEARS, "MUS-RAYQUAZA-APPEARS") \ + X(MUS_B_TOWER, "MUS-B-TOWER") \ + X(MUS_OBTAIN_SYMBOL, "MUS-OBTAIN-SYMBOL") \ + X(MUS_B_DOME, "MUS-B-DOME") \ + X(MUS_B_PIKE, "MUS-B-PIKE") \ + X(MUS_B_FACTORY, "MUS-B-FACTORY") \ + X(MUS_VS_RAYQUAZA, "MUS-VS-RAYQUAZA") \ + X(MUS_VS_FRONTIER_BRAIN, "MUS-VS-FRONTIER-BRAIN") \ + X(MUS_VS_MEW, "MUS-VS-MEW") \ + X(MUS_B_DOME_LOBBY, "MUS-B-DOME-LOBBY") \ + X(MUS_VS_WILD, "MUS-VS-WILD") \ + X(MUS_VS_AQUA_MAGMA, "MUS-VS-AQUA-MAGMA") \ + X(MUS_VS_TRAINER, "MUS-VS-TRAINER") \ + X(MUS_VS_GYM_LEADER, "MUS-VS-GYM-LEADER") \ + X(MUS_VS_CHAMPION, "MUS-VS-CHAMPION") \ + X(MUS_VS_REGI, "MUS-VS-REGI") \ + X(MUS_VS_KYOGRE_GROUDON, "MUS-VS-KYOGRE-GROUDON") \ + X(MUS_VS_RIVAL, "MUS-VS-RIVAL") \ + X(MUS_VS_ELITE_FOUR, "MUS-VS-ELITE-FOUR") \ + X(MUS_VS_AQUA_MAGMA_LEADER, "MUS-VS-AQUA-MAGMA-LEADER") \ + X(MUS_RG_FOLLOW_ME, "MUS-RG-FOLLOW-ME") \ + X(MUS_RG_GAME_CORNER, "MUS-RG-GAME-CORNER") \ + X(MUS_RG_ROCKET_HIDEOUT, "MUS-RG-ROCKET-HIDEOUT") \ + X(MUS_RG_GYM, "MUS-RG-GYM") \ + X(MUS_RG_JIGGLYPUFF, "MUS-RG-JIGGLYPUFF") \ + X(MUS_RG_INTRO_FIGHT, "MUS-RG-INTRO-FIGHT") \ + X(MUS_RG_TITLE, "MUS-RG-TITLE") \ + X(MUS_RG_CINNABAR, "MUS-RG-CINNABAR") \ + X(MUS_RG_LAVENDER, "MUS-RG-LAVENDER") \ + X(MUS_RG_HEAL, "MUS-RG-HEAL") \ + X(MUS_RG_CYCLING, "MUS-RG-CYCLING") \ + X(MUS_RG_ENCOUNTER_ROCKET, "MUS-RG-ENCOUNTER-ROCKET") \ + X(MUS_RG_ENCOUNTER_GIRL, "MUS-RG-ENCOUNTER-GIRL") \ + X(MUS_RG_ENCOUNTER_BOY, "MUS-RG-ENCOUNTER-BOY") \ + X(MUS_RG_HALL_OF_FAME, "MUS-RG-HALL-OF-FAME") \ + X(MUS_RG_VIRIDIAN_FOREST, "MUS-RG-VIRIDIAN-FOREST") \ + X(MUS_RG_MT_MOON, "MUS-RG-MT-MOON") \ + X(MUS_RG_POKE_MANSION, "MUS-RG-POKE-MANSION") \ + X(MUS_RG_CREDITS, "MUS-RG-CREDITS") \ + X(MUS_RG_ROUTE1, "MUS-RG-ROUTE1") \ + X(MUS_RG_ROUTE24, "MUS-RG-ROUTE24") \ + X(MUS_RG_ROUTE3, "MUS-RG-ROUTE3") \ + X(MUS_RG_ROUTE11, "MUS-RG-ROUTE11") \ + X(MUS_RG_VICTORY_ROAD, "MUS-RG-VICTORY-ROAD") \ + X(MUS_RG_VS_GYM_LEADER, "MUS-RG-VS-GYM-LEADER") \ + X(MUS_RG_VS_TRAINER, "MUS-RG-VS-TRAINER") \ + X(MUS_RG_VS_WILD, "MUS-RG-VS-WILD") \ + X(MUS_RG_VS_CHAMPION, "MUS-RG-VS-CHAMPION") \ + X(MUS_RG_PALLET, "MUS-RG-PALLET") \ + X(MUS_RG_OAK_LAB, "MUS-RG-OAK-LAB") \ + X(MUS_RG_OAK, "MUS-RG-OAK") \ + X(MUS_RG_POKE_CENTER, "MUS-RG-POKE-CENTER") \ + X(MUS_RG_SS_ANNE, "MUS-RG-SS-ANNE") \ + X(MUS_RG_SURF, "MUS-RG-SURF") \ + X(MUS_RG_POKE_TOWER, "MUS-RG-POKE-TOWER") \ + X(MUS_RG_SILPH, "MUS-RG-SILPH") \ + X(MUS_RG_FUCHSIA, "MUS-RG-FUCHSIA") \ + X(MUS_RG_CELADON, "MUS-RG-CELADON") \ + X(MUS_RG_VICTORY_TRAINER, "MUS-RG-VICTORY-TRAINER") \ + X(MUS_RG_VICTORY_WILD, "MUS-RG-VICTORY-WILD") \ + X(MUS_RG_VICTORY_GYM_LEADER, "MUS-RG-VICTORY-GYM-LEADER") \ + X(MUS_RG_VERMILLION, "MUS-RG-VERMILLION") \ + X(MUS_RG_PEWTER, "MUS-RG-PEWTER") \ + X(MUS_RG_ENCOUNTER_RIVAL, "MUS-RG-ENCOUNTER-RIVAL") \ + X(MUS_RG_RIVAL_EXIT, "MUS-RG-RIVAL-EXIT") \ + X(MUS_RG_DEX_RATING, "MUS-RG-DEX-RATING") \ + X(MUS_RG_OBTAIN_KEY_ITEM, "MUS-RG-OBTAIN-KEY-ITEM") \ + X(MUS_RG_CAUGHT_INTRO, "MUS-RG-CAUGHT-INTRO") \ + X(MUS_RG_PHOTO, "MUS-RG-PHOTO") \ + X(MUS_RG_GAME_FREAK, "MUS-RG-GAME-FREAK") \ + X(MUS_RG_CAUGHT, "MUS-RG-CAUGHT") \ + X(MUS_RG_NEW_GAME_INSTRUCT, "MUS-RG-NEW-GAME-INSTRUCT") \ + X(MUS_RG_NEW_GAME_INTRO, "MUS-RG-NEW-GAME-INTRO") \ + X(MUS_RG_NEW_GAME_EXIT, "MUS-RG-NEW-GAME-EXIT") \ + X(MUS_RG_POKE_JUMP, "MUS-RG-POKE-JUMP") \ + X(MUS_RG_UNION_ROOM, "MUS-RG-UNION-ROOM") \ + X(MUS_RG_NET_CENTER, "MUS-RG-NET-CENTER") \ + X(MUS_RG_MYSTERY_GIFT, "MUS-RG-MYSTERY-GIFT") \ + X(MUS_RG_BERRY_PICK, "MUS-RG-BERRY-PICK") \ + X(MUS_RG_SEVII_CAVE, "MUS-RG-SEVII-CAVE") \ + X(MUS_RG_TEACHY_TV_SHOW, "MUS-RG-TEACHY-TV-SHOW") \ + X(MUS_RG_SEVII_ROUTE, "MUS-RG-SEVII-ROUTE") \ + X(MUS_RG_SEVII_DUNGEON, "MUS-RG-SEVII-DUNGEON") \ + X(MUS_RG_SEVII_123, "MUS-RG-SEVII-123") \ + X(MUS_RG_SEVII_45, "MUS-RG-SEVII-45") \ + X(MUS_RG_SEVII_67, "MUS-RG-SEVII-67") \ + X(MUS_RG_POKE_FLUTE, "MUS-RG-POKE-FLUTE") \ + X(MUS_RG_VS_DEOXYS, "MUS-RG-VS-DEOXYS") \ + X(MUS_RG_VS_MEWTWO, "MUS-RG-VS-MEWTWO") \ + X(MUS_RG_VS_LEGEND, "MUS-RG-VS-LEGEND") \ + X(MUS_RG_ENCOUNTER_GYM_LEADER, "MUS-RG-ENCOUNTER-GYM-LEADER") \ + X(MUS_RG_ENCOUNTER_DEOXYS, "MUS-RG-ENCOUNTER-DEOXYS") \ + X(MUS_RG_TRAINER_TOWER, "MUS-RG-TRAINER-TOWER") \ + X(MUS_RG_SLOW_PALLET, "MUS-RG-SLOW-PALLET") \ + X(MUS_RG_TEACHY_TV_MENU, "MUS-RG-TEACHY-TV-MENU") \ + X(DP_SEQ_TITLE00 , "DP-SEQ-TITLE00") \ + X(DP_SEQ_TITLE01 , "DP-SEQ-TITLE01") \ + X(DP_SEQ_OPENING , "DP-SEQ-OPENING") \ + X(DP_SEQ_TV_HOUSOU , "DP-SEQ-TV-HOUSOU") \ + X(DP_SEQ_TV_END , "DP-SEQ-TV-END") \ + X(DP_SEQ_TOWN01_D , "DP-SEQ-TOWN01-D") \ + X(DP_SEQ_TOWN01_N , "DP-SEQ-TOWN01-N") \ + X(DP_SEQ_THE_RIV , "DP-SEQ-THE-RIV") \ + X(DP_SEQ_ROAD_A_D , "DP-SEQ-ROAD-A-D") \ + X(DP_SEQ_ROAD_A_N , "DP-SEQ-ROAD-A-N") \ + X(DP_SEQ_D_LAKE , "DP-SEQ-D-LAKE") \ + X(DP_SEQ_THE_EVENT01, "DP-SEQ-THE-EVENT01") \ + X(DP_SEQ_BA_POKE , "DP-SEQ-BA-POKE") \ + X(DP_SEQ_WINPOKE , "DP-SEQ-WINPOKE") \ + X(DP_SEQ_THE_GIRL , "DP-SEQ-THE-GIRL") \ + X(DP_SEQ_THE_BOY , "DP-SEQ-THE-BOY") \ + X(DP_SEQ_FANFA4 , "DP-SEQ-FANFA4") \ + X(DP_SEQ_TOWN02_D , "DP-SEQ-TOWN02-D") \ + X(DP_SEQ_TOWN02_N , "DP-SEQ-TOWN02-N") \ + X(DP_SEQ_KENKYUJO , "DP-SEQ-KENKYUJO") \ + X(DP_SEQ_TSURETEKE , "DP-SEQ-TSURETEKE") \ + X(DP_SEQ_PC_01 , "DP-SEQ-PC-01") \ + X(DP_SEQ_PC_02 , "DP-SEQ-PC-02") \ + X(DP_SEQ_ASA , "DP-SEQ-ASA") \ + X(DP_SEQ_EYE_BOY , "DP-SEQ-EYE-BOY") \ + X(DP_SEQ_EYE_GIRL , "DP-SEQ-EYE-GIRL") \ + X(DP_SEQ_BA_TRAIN , "DP-SEQ-BA-TRAIN") \ + X(DP_SEQ_WINTRAIN , "DP-SEQ-WINTRAIN") \ + X(DP_SEQ_CITY01_D , "DP-SEQ-CITY01-D") \ + X(DP_SEQ_CITY01_N , "DP-SEQ-CITY01-N") \ + X(DP_SEQ_FANFA3 , "DP-SEQ-FANFA3") \ + X(DP_SEQ_FS , "DP-SEQ-FS") \ + X(DP_SEQ_ROAD_B_D , "DP-SEQ-ROAD-B-D") \ + X(DP_SEQ_ROAD_B_N , "DP-SEQ-ROAD-B-N") \ + X(DP_SEQ_BA_RIVAL , "DP-SEQ-BA-RIVAL") \ + X(DP_SEQ_D_05 , "DP-SEQ-D-05") \ + X(DP_SEQ_WAZA , "DP-SEQ-WAZA") \ + X(DP_SEQ_CITY03_D , "DP-SEQ-CITY03-D") \ + X(DP_SEQ_CITY03_N , "DP-SEQ-CITY03-N") \ + X(DP_SEQ_D_04 , "DP-SEQ-D-04") \ + X(DP_SEQ_GYM , "DP-SEQ-GYM") \ + X(DP_SEQ_BA_GYM , "DP-SEQ-BA-GYM") \ + X(DP_SEQ_WINTGYM , "DP-SEQ-WINTGYM") \ + X(DP_SEQ_BADGE , "DP-SEQ-BADGE") \ + X(DP_SEQ_EYE_KID , "DP-SEQ-EYE-KID") \ + X(DP_SEQ_FANFA1 , "DP-SEQ-FANFA1") \ + X(DP_SEQ_TOWN03_D , "DP-SEQ-TOWN03-D") \ + X(DP_SEQ_TOWN03_N , "DP-SEQ-TOWN03-N") \ + X(DP_SEQ_KINOMI , "DP-SEQ-KINOMI") \ + X(DP_SEQ_ROAD_C_D , "DP-SEQ-ROAD-C-D") \ + X(DP_SEQ_ROAD_C_N , "DP-SEQ-ROAD-C-N") \ + X(DP_SEQ_EYE_GINGA , "DP-SEQ-EYE-GINGA") \ + X(DP_SEQ_BA_GINGA , "DP-SEQ-BA-GINGA") \ + X(DP_SEQ_D_02 , "DP-SEQ-D-02") \ + X(DP_SEQ_GONIN , "DP-SEQ-GONIN") \ + X(DP_SEQ_CITY04_D , "DP-SEQ-CITY04-D") \ + X(DP_SEQ_CITY04_N , "DP-SEQ-CITY04-N") \ + X(DP_SEQ_D_GINLOBBY , "DP-SEQ-D-GINLOBBY") \ + X(DP_SEQ_BA_GINGA3 , "DP-SEQ-BA-GINGA3") \ + X(DP_SEQ_WINGINGA , "DP-SEQ-WINGINGA") \ + X(DP_SEQ_SHINKA , "DP-SEQ-SHINKA") \ + X(DP_SEQ_FANFA5 , "DP-SEQ-FANFA5") \ + X(DP_SEQ_BICYCLE , "DP-SEQ-BICYCLE") \ + X(DP_SEQ_EYE_SPORT , "DP-SEQ-EYE-SPORT") \ + X(DP_SEQ_ROAD_D_D , "DP-SEQ-ROAD-D-D") \ + X(DP_SEQ_ROAD_D_N , "DP-SEQ-ROAD-D-N") \ + X(DP_SEQ_CITY05_D , "DP-SEQ-CITY05-D") \ + X(DP_SEQ_CITY05_N , "DP-SEQ-CITY05-N") \ + X(DP_SEQ_ROAD_E_D , "DP-SEQ-ROAD-E-D") \ + X(DP_SEQ_ROAD_E_N , "DP-SEQ-ROAD-E-N") \ + X(DP_SEQ_EYE_MOUNT , "DP-SEQ-EYE-MOUNT") \ + X(DP_SEQ_TOWN04_D , "DP-SEQ-TOWN04-D") \ + X(DP_SEQ_TOWN04_N , "DP-SEQ-TOWN04-N") \ + X(DP_SEQ_POCKETCH , "DP-SEQ-POCKETCH") \ + X(DP_SEQ_ROAD_F_D , "DP-SEQ-ROAD-F-D") \ + X(DP_SEQ_ROAD_F_N , "DP-SEQ-ROAD-F-N") \ + X(DP_SEQ_CITY07_D , "DP-SEQ-CITY07-D") \ + X(DP_SEQ_CITY07_N , "DP-SEQ-CITY07-N") \ + X(DP_SEQ_TOWN07_D , "DP-SEQ-TOWN07-D") \ + X(DP_SEQ_TOWN07_N , "DP-SEQ-TOWN07-N") \ + X(DP_SEQ_CITY02_D , "DP-SEQ-CITY02-D") \ + X(DP_SEQ_CITY02_N , "DP-SEQ-CITY02-N") \ + X(DP_SEQ_ROAD_SNOW_D , "DP-SEQ-ROAD-SNOW-D") \ + X(DP_SEQ_ROAD_SNOW_N , "DP-SEQ-ROAD-SNOW-N") \ + X(DP_SEQ_CITY09_D , "DP-SEQ-CITY09-D") \ + X(DP_SEQ_CITY09_N , "DP-SEQ-CITY09-N") \ + X(DP_SEQ_D_AGITO , "DP-SEQ-D-AGITO") \ + X(DP_SEQ_BA_AGAKI , "DP-SEQ-BA-AGAKI") \ + X(DP_SEQ_THE_EVENT04 , "DP-SEQ-THE-EVENT04") \ + X(DP_SEQ_D_MOUNT1 , "DP-SEQ-D-MOUNT1") \ + X(DP_SEQ_D_MOUNT2 , "DP-SEQ-D-MOUNT2") \ + X(DP_SEQ_THE_EVENT02 , "DP-SEQ-THE-EVENT02") \ + X(DP_SEQ_THE_EVENT03 , "DP-SEQ-THE-EVENT03") \ + X(DP_SEQ_BA_DPOKE2 , "DP-SEQ-BA-DPOKE2") \ + X(DP_SEQ_CITY08_D , "DP-SEQ-CITY08-D") \ + X(DP_SEQ_CITY08_N , "DP-SEQ-CITY08-N") \ + X(DP_SEQ_D_01 , "DP-SEQ-D-01") \ + X(DP_SEQ_EYE_ELITE , "DP-SEQ-EYE-ELITE") \ + X(DP_SEQ_CITY10_D , "DP-SEQ-CITY10-D") \ + X(DP_SEQ_CITY10_N , "DP-SEQ-CITY10-N") \ + X(DP_SEQ_CITY11_D , "DP-SEQ-CITY11-D") \ + X(DP_SEQ_CITY11_N , "DP-SEQ-CITY11-N") \ + X(DP_SEQ_TOWN06_D , "DP-SEQ-TOWN06-D") \ + X(DP_SEQ_TOWN06_N , "DP-SEQ-TOWN06-N") \ + X(DP_SEQ_ROAD_BZA_D , "DP-SEQ-ROAD-BZA-D") \ + X(DP_SEQ_ROAD_BZA_N , "DP-SEQ-ROAD-BZA-N") \ + X(DP_SEQ_WIFILOBBY , "DP-SEQ-WIFILOBBY") \ + X(DP_SEQ_BLD_TV , "DP-SEQ-BLD-TV") \ + X(DP_SEQ_BLD_BLD_GTC , "DP-SEQ-BLD-BLD-GTC") \ + X(DP_SEQ_NAMINORI , "DP-SEQ-NAMINORI") \ + X(DP_SEQ_WASURE , "DP-SEQ-WASURE") \ + X(DP_SEQ_EYE_FIGHT , "DP-SEQ-EYE-FIGHT") \ + X(DP_SEQ_EYE_ENKA , "DP-SEQ-EYE-ENKA") \ + X(DP_SEQ_TANKOU , "DP-SEQ-TANKOU") \ + X(DP_SEQ_HATANIGE , "DP-SEQ-HATANIGE") \ + X(DP_SEQ_EYE_LADY , "DP-SEQ-EYE-LADY") \ + X(DP_SEQ_D_03 , "DP-SEQ-D-03") \ + X(DP_SEQ_D_SAFARI , "DP-SEQ-D-SAFARI") \ + X(DP_SEQ_EYE_MYS , "DP-SEQ-EYE-MYS") \ + X(DP_SEQ_BLD_GAME , "DP-SEQ-BLD-GAME") \ + X(DP_SEQ_SLOT_ATARI , "DP-SEQ-SLOT-ATARI") \ + X(DP_SEQ_SLOT_OOATARI , "DP-SEQ-SLOT-OOATARI") \ + X(DP_SEQ_EYE_RICH , "DP-SEQ-EYE-RICH") \ + X(DP_SEQ_D_RYAYHY , "DP-SEQ-D-RYAYHY") \ + X(DP_SEQ_BA_DPOKE1 , "DP-SEQ-BA-DPOKE1") \ + X(DP_SEQ_KUSAGASA , "DP-SEQ-KUSAGASA") \ + X(DP_SEQ_EYE_FUN , "DP-SEQ-EYE-FUN") \ + X(DP_SEQ_D_KOUEN , "DP-SEQ-D-KOUEN") \ + X(DP_SEQ_ACCE , "DP-SEQ-ACCE") \ + X(DP_SEQ_BLD_CON , "DP-SEQ-BLD-CON") \ + X(DP_SEQ_KINOMI1 , "DP-SEQ-KINOMI1") \ + X(DP_SEQ_CON_TEST , "DP-SEQ-CON-TEST") \ + X(DP_SEQ_CO_DRESS , "DP-SEQ-CO-DRESS") \ + X(DP_SEQ_CO_KASHI , "DP-SEQ-CO-KASHI") \ + X(DP_SEQ_CO_TAKUMA , "DP-SEQ-CO-TAKUMA") \ + X(DP_SEQ_CO_KEKKA , "DP-SEQ-CO-KEKKA") \ + X(DP_SEQ_CO_FANFA , "DP-SEQ-CO-FANFA") \ + X(DP_SEQ_BF_TOWWER , "DP-SEQ-BF-TOWWER") \ + X(DP_SEQ_D_06 , "DP-SEQ-D-06") \ + X(DP_SEQ_BA_SECRET2 , "DP-SEQ-BA-SECRET2") \ + X(DP_SEQ_PRESENT , "DP-SEQ-PRESENT") \ + X(DP_SEQ_D_LEAGUE , "DP-SEQ-D-LEAGUE") \ + X(DP_SEQ_EYE_TENNO , "DP-SEQ-EYE-TENNO") \ + X(DP_SEQ_BA_TENNO , "DP-SEQ-BA-TENNO") \ + X(DP_SEQ_WINTENNO , "DP-SEQ-WINTENNO") \ + X(DP_SEQ_EYE_CHAMP , "DP-SEQ-EYE-CHAMP") \ + X(DP_SEQ_BA_CHANP , "DP-SEQ-BA-CHANP") \ + X(DP_SEQ_WINCHAMP , "DP-SEQ-WINCHAMP") \ + X(DP_SEQ_BLD_DENDO , "DP-SEQ-BLD-DENDO") \ + X(DP_SEQ_BLD_EV_DENDO2 , "DP-SEQ-BLD-EV-DENDO2") \ + X(DP_SEQ_BLD_ENDING , "DP-SEQ-BLD-ENDING") \ + X(DP_SEQ_FUE , "DP-SEQ-FUE") \ + X(DP_SEQ_AUS , "DP-SEQ-AUS") \ + X(DP_SEQ_BA_SECRET1 , "DP-SEQ-BA-SECRET1") \ + X(PL_SEQ_TITLE00 , "PL-SEQ-TITLE00") \ + X(PL_SEQ_TITLE01 , "PL-SEQ-TITLE01") \ + X(PL_SEQ_TV_HOUSOU , "PL-SEQ-TV-HOUSOU") \ + X(PL_SEQ_TV_END , "PL-SEQ-TV-END") \ + X(PL_SEQ_PL_HANDSOME , "PL-SEQ-PL-HANDSOME") \ + X(PL_SEQ_PL_WIFITOWER , "PL-SEQ-PL-WIFITOWER") \ + X(PL_SEQ_PL_WIFIUNION , "PL-SEQ-PL-WIFIUNION") \ + X(PL_SEQ_PL_WIFIGAME , "PL-SEQ-PL-WIFIGAME") \ + X(PL_SEQ_PL_WINMINI2 , "PL-SEQ-PL-WINMINI2") \ + X(PL_SEQ_PL_WIFIPARADE , "PL-SEQ-PL-WIFIPARADE") \ + X(PL_SEQ_PL_EV_GIRA , "PL-SEQ-PL-EV-GIRA") \ + X(PL_SEQ_PL_EV_GIRA2 , "PL-SEQ-PL-EV-GIRA2") \ + X(PL_SEQ_PL_D_GIRATINA , "PL-SEQ-PL-D-GIRATINA") \ + X(PL_SEQ_PL_BA_GIRA , "PL-SEQ-PL-BA-GIRA") \ + X(PL_SEQ_PL_GURUGURU , "PL-SEQ-PL-GURUGURU") \ + X(PL_SEQ_PL_PTHAIFU , "PL-SEQ-PL-PTHAIFU") \ + X(PL_SEQ_PL_MTKAWA , "PL-SEQ-PL-MTKAWA") \ + X(PL_SEQ_PL_MTKAKKO , "PL-SEQ-PL-MTKAKKO") \ + X(PL_SEQ_PL_MTTAKMA , "PL-SEQ-PL-MTTAKMA") \ + X(PL_SEQ_PL_MTUTSUK , "PL-SEQ-PL-MTUTSUK") \ + X(PL_SEQ_PL_MTKASHI , "PL-SEQ-PL-MTKASHI") \ + X(PL_SEQ_PL_TOWN02 , "PL-SEQ-PL-TOWN02") \ + X(PL_SEQ_PL_AUDIO , "PL-SEQ-PL-AUDIO") \ + X(PL_SEQ_CITY11_D , "PL-SEQ-CITY11-D") \ + X(PL_SEQ_PL_BF_ROULETTE , "PL-SEQ-PL-BF-ROULETTE") \ + X(PL_SEQ_PL_DON2 , "PL-SEQ-PL-DON2") \ + X(PL_SEQ_PL_BF_STAGE , "PL-SEQ-PL-BF-STAGE") \ + X(PL_SEQ_PL_BF_FACTORY , "PL-SEQ-PL-BF-FACTORY") \ + X(PL_SEQ_PL_BF_CASTLE , "PL-SEQ-PL-BF-CASTLE") \ + X(PL_SEQ_PL_FRO , "PL-SEQ-PL-FRO") \ + X(PL_SEQ_PL_POINTGET3 , "PL-SEQ-PL-POINTGET3") \ + X(PL_SEQ_PL_BA_BRAIN , "PL-SEQ-PL-BA-BRAIN") \ + X(PL_SEQ_PL_WINBRAIN , "PL-SEQ-PL-WINBRAIN") \ + X(PL_SEQ_PL_BA_REGI , "PL-SEQ-PL-BA-REGI") \ + X(PH_TRAP_BLEND, "PH-TRAP-BLEND") \ + X(PH_TRAP_HELD, "PH-TRAP-HELD") \ + X(PH_TRAP_SOLO, "PH-TRAP-SOLO") \ + X(PH_FACE_BLEND, "PH-FACE-BLEND") \ + X(PH_FACE_HELD, "PH-FACE-HELD") \ + X(PH_FACE_SOLO, "PH-FACE-SOLO") \ + X(PH_CLOTH_BLEND, "PH-CLOTH-BLEND") \ + X(PH_CLOTH_HELD, "PH-CLOTH-HELD") \ + X(PH_CLOTH_SOLO, "PH-CLOTH-SOLO") \ + X(PH_DRESS_BLEND, "PH-DRESS-BLEND") \ + X(PH_DRESS_HELD, "PH-DRESS-HELD") \ + X(PH_DRESS_SOLO, "PH-DRESS-SOLO") \ + X(PH_FLEECE_BLEND, "PH-FLEECE-BLEND") \ + X(PH_FLEECE_HELD, "PH-FLEECE-HELD") \ + X(PH_FLEECE_SOLO, "PH-FLEECE-SOLO") \ + X(PH_KIT_BLEND, "PH-KIT-BLEND") \ + X(PH_KIT_HELD, "PH-KIT-HELD") \ + X(PH_KIT_SOLO, "PH-KIT-SOLO") \ + X(PH_PRICE_BLEND, "PH-PRICE-BLEND") \ + X(PH_PRICE_HELD, "PH-PRICE-HELD") \ + X(PH_PRICE_SOLO, "PH-PRICE-SOLO") \ + X(PH_LOT_BLEND, "PH-LOT-BLEND") \ + X(PH_LOT_HELD, "PH-LOT-HELD") \ + X(PH_LOT_SOLO, "PH-LOT-SOLO") \ + X(PH_GOAT_BLEND, "PH-GOAT-BLEND") \ + X(PH_GOAT_HELD, "PH-GOAT-HELD") \ + X(PH_GOAT_SOLO, "PH-GOAT-SOLO") \ + X(PH_THOUGHT_BLEND, "PH-THOUGHT-BLEND") \ + X(PH_THOUGHT_HELD, "PH-THOUGHT-HELD") \ + X(PH_THOUGHT_SOLO, "PH-THOUGHT-SOLO") \ + X(PH_CHOICE_BLEND, "PH-CHOICE-BLEND") \ + X(PH_CHOICE_HELD, "PH-CHOICE-HELD") \ + X(PH_CHOICE_SOLO, "PH-CHOICE-SOLO") \ + X(PH_MOUTH_BLEND, "PH-MOUTH-BLEND") \ + X(PH_MOUTH_HELD, "PH-MOUTH-HELD") \ + X(PH_MOUTH_SOLO, "PH-MOUTH-SOLO") \ + X(PH_FOOT_BLEND, "PH-FOOT-BLEND") \ + X(PH_FOOT_HELD, "PH-FOOT-HELD") \ + X(PH_FOOT_SOLO, "PH-FOOT-SOLO") \ + X(PH_GOOSE_BLEND, "PH-GOOSE-BLEND") \ + X(PH_GOOSE_HELD, "PH-GOOSE-HELD") \ + X(PH_GOOSE_SOLO, "PH-GOOSE-SOLO") \ + X(PH_STRUT_BLEND, "PH-STRUT-BLEND") \ + X(PH_STRUT_HELD, "PH-STRUT-HELD") \ + X(PH_STRUT_SOLO, "PH-STRUT-SOLO") \ + X(PH_CURE_BLEND, "PH-CURE-BLEND") \ + X(PH_CURE_HELD, "PH-CURE-HELD") \ + X(PH_CURE_SOLO, "PH-CURE-SOLO") \ + X(PH_NURSE_BLEND, "PH-NURSE-BLEND") \ + X(PH_NURSE_HELD, "PH-NURSE-HELD") \ + X(PH_NURSE_SOLO, "PH-NURSE-SOLO") \ + +#define SOUND_LIST_SE \ + X(SE_USE_ITEM, "SE-USE-ITEM") \ + X(SE_PC_LOGIN, "SE-PC-LOGIN") \ + X(SE_PC_OFF, "SE-PC-OFF") \ + X(SE_PC_ON, "SE-PC-ON") \ + X(SE_SELECT, "SE-SELECT") \ + X(SE_WIN_OPEN, "SE-WIN-OPEN") \ + X(SE_WALL_HIT, "SE-WALL-HIT") \ + X(SE_DOOR, "SE-DOOR") \ + X(SE_EXIT, "SE-EXIT") \ + X(SE_LEDGE, "SE-LEDGE") \ + X(SE_BIKE_BELL, "SE-BIKE-BELL") \ + X(SE_NOT_EFFECTIVE, "SE-NOT-EFFECTIVE") \ + X(SE_EFFECTIVE, "SE-EFFECTIVE") \ + X(SE_SUPER_EFFECTIVE, "SE-SUPER-EFFECTIVE") \ + X(SE_BALL_OPEN, "SE-BALL-OPEN") \ + X(SE_FAINT, "SE-FAINT") \ + X(SE_FLEE, "SE-FLEE") \ + X(SE_SLIDING_DOOR, "SE-SLIDING-DOOR") \ + X(SE_SHIP, "SE-SHIP") \ + X(SE_BANG, "SE-BANG") \ + X(SE_PIN, "SE-PIN") \ + X(SE_BOO, "SE-BOO") \ + X(SE_BALL, "SE-BALL") \ + X(SE_CONTEST_PLACE, "SE-CONTEST-PLACE") \ + X(SE_A, "SE-A") \ + X(SE_I, "SE-I") \ + X(SE_U, "SE-U") \ + X(SE_E, "SE-E") \ + X(SE_O, "SE-O") \ + X(SE_N, "SE-N") \ + X(SE_SUCCESS, "SE-SUCCESS") \ + X(SE_FAILURE, "SE-FAILURE") \ + X(SE_EXP, "SE-EXP") \ + X(SE_BIKE_HOP, "SE-BIKE-HOP") \ + X(SE_SWITCH, "SE-SWITCH") \ + X(SE_CLICK, "SE-CLICK") \ + X(SE_FU_ZAKU, "SE-FU-ZAKU") \ + X(SE_CONTEST_CONDITION_LOSE, "SE-CONTEST-CONDITION-LOSE") \ + X(SE_LAVARIDGE_FALL_WARP, "SE-LAVARIDGE-FALL-WARP") \ + X(SE_ICE_STAIRS, "SE-ICE-STAIRS") \ + X(SE_ICE_BREAK, "SE-ICE-BREAK") \ + X(SE_ICE_CRACK, "SE-ICE-CRACK") \ + X(SE_FALL, "SE-FALL") \ + X(SE_UNLOCK, "SE-UNLOCK") \ + X(SE_WARP_IN, "SE-WARP-IN") \ + X(SE_WARP_OUT, "SE-WARP-OUT") \ + X(SE_REPEL, "SE-REPEL") \ + X(SE_ROTATING_GATE, "SE-ROTATING-GATE") \ + X(SE_TRUCK_MOVE, "SE-TRUCK-MOVE") \ + X(SE_TRUCK_STOP, "SE-TRUCK-STOP") \ + X(SE_TRUCK_UNLOAD, "SE-TRUCK-UNLOAD") \ + X(SE_TRUCK_DOOR, "SE-TRUCK-DOOR") \ + X(SE_BERRY_BLENDER, "SE-BERRY-BLENDER") \ + X(SE_CARD, "SE-CARD") \ + X(SE_SAVE, "SE-SAVE") \ + X(SE_BALL_BOUNCE_1, "SE-BALL-BOUNCE-1") \ + X(SE_BALL_BOUNCE_2, "SE-BALL-BOUNCE-2") \ + X(SE_BALL_BOUNCE_3, "SE-BALL-BOUNCE-3") \ + X(SE_BALL_BOUNCE_4, "SE-BALL-BOUNCE-4") \ + X(SE_BALL_TRADE, "SE-BALL-TRADE") \ + X(SE_BALL_THROW, "SE-BALL-THROW") \ + X(SE_NOTE_C, "SE-NOTE-C") \ + X(SE_NOTE_D, "SE-NOTE-D") \ + X(SE_NOTE_E, "SE-NOTE-E") \ + X(SE_NOTE_F, "SE-NOTE-F") \ + X(SE_NOTE_G, "SE-NOTE-G") \ + X(SE_NOTE_A, "SE-NOTE-A") \ + X(SE_NOTE_B, "SE-NOTE-B") \ + X(SE_NOTE_C_HIGH, "SE-NOTE-C-HIGH") \ + X(SE_PUDDLE, "SE-PUDDLE") \ + X(SE_BRIDGE_WALK, "SE-BRIDGE-WALK") \ + X(SE_ITEMFINDER, "SE-ITEMFINDER") \ + X(SE_DING_DONG, "SE-DING-DONG") \ + X(SE_BALLOON_RED, "SE-BALLOON-RED") \ + X(SE_BALLOON_BLUE, "SE-BALLOON-BLUE") \ + X(SE_BALLOON_YELLOW, "SE-BALLOON-YELLOW") \ + X(SE_BREAKABLE_DOOR, "SE-BREAKABLE-DOOR") \ + X(SE_MUD_BALL, "SE-MUD-BALL") \ + X(SE_FIELD_POISON, "SE-FIELD-POISON") \ + X(SE_ESCALATOR, "SE-ESCALATOR") \ + X(SE_THUNDERSTORM, "SE-THUNDERSTORM") \ + X(SE_THUNDERSTORM_STOP, "SE-THUNDERSTORM-STOP") \ + X(SE_DOWNPOUR, "SE-DOWNPOUR") \ + X(SE_DOWNPOUR_STOP, "SE-DOWNPOUR-STOP") \ + X(SE_RAIN, "SE-RAIN") \ + X(SE_RAIN_STOP, "SE-RAIN-STOP") \ + X(SE_THUNDER, "SE-THUNDER") \ + X(SE_THUNDER2, "SE-THUNDER2") \ + X(SE_ELEVATOR, "SE-ELEVATOR") \ + X(SE_LOW_HEALTH, "SE-LOW-HEALTH") \ + X(SE_EXP_MAX, "SE-EXP-MAX") \ + X(SE_ROULETTE_BALL, "SE-ROULETTE-BALL") \ + X(SE_ROULETTE_BALL2, "SE-ROULETTE-BALL2") \ + X(SE_TAILLOW_WING_FLAP, "SE-TAILLOW-WING-FLAP") \ + X(SE_SHOP, "SE-SHOP") \ + X(SE_CONTEST_HEART, "SE-CONTEST-HEART") \ + X(SE_CONTEST_CURTAIN_RISE, "SE-CONTEST-CURTAIN-RISE") \ + X(SE_CONTEST_CURTAIN_FALL, "SE-CONTEST-CURTAIN-FALL") \ + X(SE_CONTEST_ICON_CHANGE, "SE-CONTEST-ICON-CHANGE") \ + X(SE_CONTEST_ICON_CLEAR, "SE-CONTEST-ICON-CLEAR") \ + X(SE_CONTEST_MONS_TURN, "SE-CONTEST-MONS-TURN") \ + X(SE_SHINY, "SE-SHINY") \ + X(SE_INTRO_BLAST, "SE-INTRO-BLAST") \ + X(SE_MUGSHOT, "SE-MUGSHOT") \ + X(SE_APPLAUSE, "SE-APPLAUSE") \ + X(SE_VEND, "SE-VEND") \ + X(SE_ORB, "SE-ORB") \ + X(SE_DEX_SCROLL, "SE-DEX-SCROLL") \ + X(SE_DEX_PAGE, "SE-DEX-PAGE") \ + X(SE_POKENAV_ON, "SE-POKENAV-ON") \ + X(SE_POKENAV_OFF, "SE-POKENAV-OFF") \ + X(SE_DEX_SEARCH, "SE-DEX-SEARCH") \ + X(SE_EGG_HATCH, "SE-EGG-HATCH") \ + X(SE_BALL_TRAY_ENTER, "SE-BALL-TRAY-ENTER") \ + X(SE_BALL_TRAY_BALL, "SE-BALL-TRAY-BALL") \ + X(SE_BALL_TRAY_EXIT, "SE-BALL-TRAY-EXIT") \ + X(SE_GLASS_FLUTE, "SE-GLASS-FLUTE") \ + X(SE_M_THUNDERBOLT, "SE-M-THUNDERBOLT") \ + X(SE_M_THUNDERBOLT2, "SE-M-THUNDERBOLT2") \ + X(SE_M_HARDEN, "SE-M-HARDEN") \ + X(SE_M_NIGHTMARE, "SE-M-NIGHTMARE") \ + X(SE_M_VITAL_THROW, "SE-M-VITAL-THROW") \ + X(SE_M_VITAL_THROW2, "SE-M-VITAL-THROW2") \ + X(SE_M_BUBBLE, "SE-M-BUBBLE") \ + X(SE_M_BUBBLE2, "SE-M-BUBBLE2") \ + X(SE_M_BUBBLE3, "SE-M-BUBBLE3") \ + X(SE_M_RAIN_DANCE, "SE-M-RAIN-DANCE") \ + X(SE_M_CUT, "SE-M-CUT") \ + X(SE_M_STRING_SHOT, "SE-M-STRING-SHOT") \ + X(SE_M_STRING_SHOT2, "SE-M-STRING-SHOT2") \ + X(SE_M_ROCK_THROW, "SE-M-ROCK-THROW") \ + X(SE_M_GUST, "SE-M-GUST") \ + X(SE_M_GUST2, "SE-M-GUST2") \ + X(SE_M_DOUBLE_SLAP, "SE-M-DOUBLE-SLAP") \ + X(SE_M_DOUBLE_TEAM, "SE-M-DOUBLE-TEAM") \ + X(SE_M_RAZOR_WIND, "SE-M-RAZOR-WIND") \ + X(SE_M_ICY_WIND, "SE-M-ICY-WIND") \ + X(SE_M_THUNDER_WAVE, "SE-M-THUNDER-WAVE") \ + X(SE_M_COMET_PUNCH, "SE-M-COMET-PUNCH") \ + X(SE_M_MEGA_KICK, "SE-M-MEGA-KICK") \ + X(SE_M_MEGA_KICK2, "SE-M-MEGA-KICK2") \ + X(SE_M_CRABHAMMER, "SE-M-CRABHAMMER") \ + X(SE_M_JUMP_KICK, "SE-M-JUMP-KICK") \ + X(SE_M_FLAME_WHEEL, "SE-M-FLAME-WHEEL") \ + X(SE_M_FLAME_WHEEL2, "SE-M-FLAME-WHEEL2") \ + X(SE_M_FLAMETHROWER, "SE-M-FLAMETHROWER") \ + X(SE_M_FIRE_PUNCH, "SE-M-FIRE-PUNCH") \ + X(SE_M_TOXIC, "SE-M-TOXIC") \ + X(SE_M_SACRED_FIRE, "SE-M-SACRED-FIRE") \ + X(SE_M_SACRED_FIRE2, "SE-M-SACRED-FIRE2") \ + X(SE_M_EMBER, "SE-M-EMBER") \ + X(SE_M_TAKE_DOWN, "SE-M-TAKE-DOWN") \ + X(SE_M_BLIZZARD, "SE-M-BLIZZARD") \ + X(SE_M_BLIZZARD2, "SE-M-BLIZZARD2") \ + X(SE_M_SCRATCH, "SE-M-SCRATCH") \ + X(SE_M_VICEGRIP, "SE-M-VICEGRIP") \ + X(SE_M_WING_ATTACK, "SE-M-WING-ATTACK") \ + X(SE_M_FLY, "SE-M-FLY") \ + X(SE_M_SAND_ATTACK, "SE-M-SAND-ATTACK") \ + X(SE_M_RAZOR_WIND2, "SE-M-RAZOR-WIND2") \ + X(SE_M_BITE, "SE-M-BITE") \ + X(SE_M_HEADBUTT, "SE-M-HEADBUTT") \ + X(SE_M_SURF, "SE-M-SURF") \ + X(SE_M_HYDRO_PUMP, "SE-M-HYDRO-PUMP") \ + X(SE_M_WHIRLPOOL, "SE-M-WHIRLPOOL") \ + X(SE_M_HORN_ATTACK, "SE-M-HORN-ATTACK") \ + X(SE_M_TAIL_WHIP, "SE-M-TAIL-WHIP") \ + X(SE_M_MIST, "SE-M-MIST") \ + X(SE_M_POISON_POWDER, "SE-M-POISON-POWDER") \ + X(SE_M_BIND, "SE-M-BIND") \ + X(SE_M_DRAGON_RAGE, "SE-M-DRAGON-RAGE") \ + X(SE_M_SING, "SE-M-SING") \ + X(SE_M_PERISH_SONG, "SE-M-PERISH-SONG") \ + X(SE_M_PAY_DAY, "SE-M-PAY-DAY") \ + X(SE_M_DIG, "SE-M-DIG") \ + X(SE_M_DIZZY_PUNCH, "SE-M-DIZZY-PUNCH") \ + X(SE_M_SELF_DESTRUCT, "SE-M-SELF-DESTRUCT") \ + X(SE_M_EXPLOSION, "SE-M-EXPLOSION") \ + X(SE_M_ABSORB_2, "SE-M-ABSORB-2") \ + X(SE_M_ABSORB, "SE-M-ABSORB") \ + X(SE_M_SCREECH, "SE-M-SCREECH") \ + X(SE_M_BUBBLE_BEAM, "SE-M-BUBBLE-BEAM") \ + X(SE_M_BUBBLE_BEAM2, "SE-M-BUBBLE-BEAM2") \ + X(SE_M_SUPERSONIC, "SE-M-SUPERSONIC") \ + X(SE_M_BELLY_DRUM, "SE-M-BELLY-DRUM") \ + X(SE_M_METRONOME, "SE-M-METRONOME") \ + X(SE_M_BONEMERANG, "SE-M-BONEMERANG") \ + X(SE_M_LICK, "SE-M-LICK") \ + X(SE_M_PSYBEAM, "SE-M-PSYBEAM") \ + X(SE_M_FAINT_ATTACK, "SE-M-FAINT-ATTACK") \ + X(SE_M_SWORDS_DANCE, "SE-M-SWORDS-DANCE") \ + X(SE_M_LEER, "SE-M-LEER") \ + X(SE_M_SWAGGER, "SE-M-SWAGGER") \ + X(SE_M_SWAGGER2, "SE-M-SWAGGER2") \ + X(SE_M_HEAL_BELL, "SE-M-HEAL-BELL") \ + X(SE_M_CONFUSE_RAY, "SE-M-CONFUSE-RAY") \ + X(SE_M_SNORE, "SE-M-SNORE") \ + X(SE_M_BRICK_BREAK, "SE-M-BRICK-BREAK") \ + X(SE_M_GIGA_DRAIN, "SE-M-GIGA-DRAIN") \ + X(SE_M_PSYBEAM2, "SE-M-PSYBEAM2") \ + X(SE_M_SOLAR_BEAM, "SE-M-SOLAR-BEAM") \ + X(SE_M_PETAL_DANCE, "SE-M-PETAL-DANCE") \ + X(SE_M_TELEPORT, "SE-M-TELEPORT") \ + X(SE_M_MINIMIZE, "SE-M-MINIMIZE") \ + X(SE_M_SKETCH, "SE-M-SKETCH") \ + X(SE_M_SWIFT, "SE-M-SWIFT") \ + X(SE_M_REFLECT, "SE-M-REFLECT") \ + X(SE_M_BARRIER, "SE-M-BARRIER") \ + X(SE_M_DETECT, "SE-M-DETECT") \ + X(SE_M_LOCK_ON, "SE-M-LOCK-ON") \ + X(SE_M_MOONLIGHT, "SE-M-MOONLIGHT") \ + X(SE_M_CHARM, "SE-M-CHARM") \ + X(SE_M_CHARGE, "SE-M-CHARGE") \ + X(SE_M_STRENGTH, "SE-M-STRENGTH") \ + X(SE_M_HYPER_BEAM, "SE-M-HYPER-BEAM") \ + X(SE_M_WATERFALL, "SE-M-WATERFALL") \ + X(SE_M_REVERSAL, "SE-M-REVERSAL") \ + X(SE_M_ACID_ARMOR, "SE-M-ACID-ARMOR") \ + X(SE_M_SANDSTORM, "SE-M-SANDSTORM") \ + X(SE_M_TRI_ATTACK, "SE-M-TRI-ATTACK") \ + X(SE_M_TRI_ATTACK2, "SE-M-TRI-ATTACK2") \ + X(SE_M_ENCORE, "SE-M-ENCORE") \ + X(SE_M_ENCORE2, "SE-M-ENCORE2") \ + X(SE_M_BATON_PASS, "SE-M-BATON-PASS") \ + X(SE_M_MILK_DRINK, "SE-M-MILK-DRINK") \ + X(SE_M_ATTRACT, "SE-M-ATTRACT") \ + X(SE_M_ATTRACT2, "SE-M-ATTRACT2") \ + X(SE_M_MORNING_SUN, "SE-M-MORNING-SUN") \ + X(SE_M_FLATTER, "SE-M-FLATTER") \ + X(SE_M_SAND_TOMB, "SE-M-SAND-TOMB") \ + X(SE_M_GRASSWHISTLE, "SE-M-GRASSWHISTLE") \ + X(SE_M_SPIT_UP, "SE-M-SPIT-UP") \ + X(SE_M_DIVE, "SE-M-DIVE") \ + X(SE_M_EARTHQUAKE, "SE-M-EARTHQUAKE") \ + X(SE_M_TWISTER, "SE-M-TWISTER") \ + X(SE_M_SWEET_SCENT, "SE-M-SWEET-SCENT") \ + X(SE_M_YAWN, "SE-M-YAWN") \ + X(SE_M_SKY_UPPERCUT, "SE-M-SKY-UPPERCUT") \ + X(SE_M_STAT_INCREASE, "SE-M-STAT-INCREASE") \ + X(SE_M_HEAT_WAVE, "SE-M-HEAT-WAVE") \ + X(SE_M_UPROAR, "SE-M-UPROAR") \ + X(SE_M_HAIL, "SE-M-HAIL") \ + X(SE_M_COSMIC_POWER, "SE-M-COSMIC-POWER") \ + X(SE_M_TEETER_DANCE, "SE-M-TEETER-DANCE") \ + X(SE_M_STAT_DECREASE, "SE-M-STAT-DECREASE") \ + X(SE_M_HAZE, "SE-M-HAZE") \ + X(SE_M_HYPER_BEAM2, "SE-M-HYPER-BEAM2") \ + X(SE_RG_DOOR, "SE-RG-DOOR") \ + X(SE_RG_CARD_FLIP, "SE-RG-CARD-FLIP") \ + X(SE_RG_CARD_FLIPPING, "SE-RG-CARD-FLIPPING") \ + X(SE_RG_CARD_OPEN, "SE-RG-CARD-OPEN") \ + X(SE_RG_BAG_CURSOR, "SE-RG-BAG-CURSOR") \ + X(SE_RG_BAG_POCKET, "SE-RG-BAG-POCKET") \ + X(SE_RG_BALL_CLICK, "SE-RG-BALL-CLICK") \ + X(SE_RG_SHOP, "SE-RG-SHOP") \ + X(SE_RG_SS_ANNE_HORN, "SE-RG-SS-ANNE-HORN") \ + X(SE_RG_HELP_OPEN, "SE-RG-HELP-OPEN") \ + X(SE_RG_HELP_CLOSE, "SE-RG-HELP-CLOSE") \ + X(SE_RG_HELP_ERROR, "SE-RG-HELP-ERROR") \ + X(SE_RG_DEOXYS_MOVE, "SE-RG-DEOXYS-MOVE") \ + X(SE_RG_POKE_JUMP_SUCCESS, "SE-RG-POKE-JUMP-SUCCESS") \ + X(SE_RG_POKE_JUMP_FAILURE, "SE-RG-POKE-JUMP-FAILURE") \ + X(SE_PHONE_CALL, "SE-PHONE-CALL") \ + X(SE_PHONE_CLICK, "SE-PHONE-CLICK") \ + X(SE_ARENA_TIMEUP1, "SE-ARENA-TIMEUP1") \ + X(SE_ARENA_TIMEUP2, "SE-ARENA-TIMEUP2") \ + X(SE_PIKE_CURTAIN_CLOSE, "SE-PIKE-CURTAIN-CLOSE") \ + X(SE_PIKE_CURTAIN_OPEN, "SE-PIKE-CURTAIN-OPEN") \ + X(SE_SUDOWOODO_SHAKE, "SE-SUDOWOODO-SHAKE") \ + +// Create BGM list +#define X(songId, name) static const u8 sBGMName_##songId[] = _(name); +SOUND_LIST_BGM +#undef X + +#define X(songId, name) sBGMName_##songId, +static const u8 *const gBGMNames[] = +{ +SOUND_LIST_BGM +}; +#undef X + +// Create SE list +#define X(songId, name) static const u8 sSEName_##songId[] = _(name); +SOUND_LIST_SE +#undef X + +#define X(songId, name) sSEName_##songId, +static const u8 *const gSENames[] = +{ +SOUND_LIST_SE +}; +#undef X + + // Additional functions /* static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate) From 010c1b5d824cf03d7a6410886388522be36f1b7d Mon Sep 17 00:00:00 2001 From: TheXaman Date: Tue, 22 Jun 2021 18:29:04 +0200 Subject: [PATCH 023/271] fixed some songs not properly stopping and overlapping others, thanks to @Lunos for reporting --- src/debug.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/debug.c b/src/debug.c index 49bef794f7..abed662460 100644 --- a/src/debug.c +++ b/src/debug.c @@ -22,6 +22,7 @@ #include "item.h" #include "item_icon.h" #include "list_menu.h" +#include "m4a.h" #include "main.h" #include "main_menu.h" #include "malloc.h" @@ -2720,8 +2721,9 @@ static void DebugAction_Sound_SE(u8 taskId) gTasks[taskId].func = DebugAction_Sound_SE_SelectId; gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 1; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[3] = 1; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Last song played (for stopping) } static void DebugAction_Sound_SE_SelectId(u8 taskId) { @@ -2761,12 +2763,14 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) if (gMain.newKeys & A_BUTTON) { - PlaySE(gTasks[taskId].data[3]); + m4aSongNumStop(gTasks[taskId].data[5]); + gTasks[taskId].data[5] = gTasks[taskId].data[3]; + m4aSongNumStart(gTasks[taskId].data[3]); } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - MapMusicMain(); + m4aSongNumStop(gTasks[taskId].data[5]); DebugAction_DestroyExtraWindow(taskId); } } @@ -2796,8 +2800,9 @@ static void DebugAction_Sound_MUS(u8 taskId) gTasks[taskId].func = DebugAction_Sound_MUS_SelectId; gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = START_MUS; //Current ID - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[3] = START_MUS; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[5] = gTasks[taskId].data[3]; //Last song played (for stopping) } static void DebugAction_Sound_MUS_SelectId(u8 taskId) { @@ -2837,13 +2842,14 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) if (gMain.newKeys & A_BUTTON) { - StopMapMusic(); - PlayNewMapMusic(gTasks[taskId].data[3]); + m4aSongNumStop(gTasks[taskId].data[5]); + gTasks[taskId].data[5] = gTasks[taskId].data[3]; + m4aSongNumStart(gTasks[taskId].data[3]); } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - MapMusicMain(); + // m4aSongNumStop(gTasks[taskId].data[5]); //Uncomment if music should stop after leaving menu DebugAction_DestroyExtraWindow(taskId); } } From 45012a66d74e8c475e08b04054ed26517c4ab8eb Mon Sep 17 00:00:00 2001 From: TheXaman Date: Tue, 22 Jun 2021 19:04:39 +0200 Subject: [PATCH 024/271] fixes PlaySE overwriting some "music tracks" like MUS_MOVE_DELETED --- src/debug.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/debug.c b/src/debug.c index abed662460..7fbeec4d84 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2729,8 +2729,6 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) { if (gMain.newKeys & DPAD_ANY) { - PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; @@ -2808,8 +2806,6 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) { if (gMain.newKeys & DPAD_ANY) { - PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; From a663742ebaefe364bd3b909ef27c2e82fff41423 Mon Sep 17 00:00:00 2001 From: TheXaman Date: Wed, 30 Jun 2021 10:44:09 +0200 Subject: [PATCH 025/271] fixed a bug not showing hidden abilities (POKEMON_EXPANSION) if the second ability was ABILITY_NONE, thanks to Syreldar --- src/debug.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/debug.c b/src/debug.c index 7fbeec4d84..8cb5ddbaca 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2185,13 +2185,12 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { u8 abilityId; - u8 abilityCount = 0; - if (gBaseStats[sDebugMonData->mon_speciesId].abilities[1] != ABILITY_NONE) - abilityCount++; + u8 abilityCount = 2 - 1; //-1 for proper iteration + u8 i = 0; #ifdef POKEMON_EXPANSION - if (gBaseStats[sDebugMonData->mon_speciesId].abilities[2] != ABILITY_NONE) - abilityCount++; + abilityCount = NUM_ABILITY_SLOTS - 1; #endif + if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); @@ -2209,7 +2208,11 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) gTasks[taskId].data[3] = 0; } - abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3]); + while (GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i) == ABILITY_NONE) + { + i++; + } + abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); @@ -2220,7 +2223,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) if (gMain.newKeys & A_BUTTON) { - sDebugMonData->mon_abilityNum = gTasks[taskId].data[3]; //AbilityNum + sDebugMonData->mon_abilityNum = gTasks[taskId].data[3] - i; //AbilityNum gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = 0; From af355fcb1211b0fb3eebdd852e04aacf361f5d3c Mon Sep 17 00:00:00 2001 From: TheXaman Date: Fri, 2 Jul 2021 11:49:32 +0200 Subject: [PATCH 026/271] added Debug to StartMenu via DEBUG_MENU option --- include/debug.h | 2 ++ src/field_control_avatar.c | 6 ++-- src/start_menu.c | 69 +++++++++++++++++++++++++++++++++++--- 3 files changed, 69 insertions(+), 8 deletions(-) diff --git a/include/debug.h b/include/debug.h index 4c9c3fffcb..864176e4f3 100644 --- a/include/debug.h +++ b/include/debug.h @@ -5,4 +5,6 @@ void Debug_ShowMainMenu(void); #endif +#define DEBUG_MENU FALSE + #endif // GUARD_DEBUG_H \ No newline at end of file diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index fa607cd42e..916287b0b7 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -132,7 +132,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; - +#if DEBUGGING && !DEBUG_MENU //DEBUG if (heldKeys & R_BUTTON) { @@ -158,7 +158,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) input->pressedStartButton = FALSE; } } - // +#endif } @@ -219,7 +219,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; -#if DEBUGGING +#if DEBUGGING && !DEBUG_MENU if (input->input_field_1_2) { PlaySE(SE_WIN_OPEN); diff --git a/src/start_menu.c b/src/start_menu.c index fa51766e8e..b765761513 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -3,6 +3,7 @@ #include "battle_pyramid.h" #include "battle_pyramid_bag.h" #include "bg.h" +#include "debug.h" #include "event_data.h" #include "event_object_movement.h" #include "event_object_lock.h" @@ -61,7 +62,8 @@ enum MENU_ACTION_PLAYER_LINK, MENU_ACTION_REST_FRONTIER, MENU_ACTION_RETIRE_FRONTIER, - MENU_ACTION_PYRAMID_BAG + MENU_ACTION_PYRAMID_BAG, + MENU_ACTION_DEBUG, }; // Save status @@ -102,6 +104,7 @@ static bool8 StartMenuSafariZoneRetireCallback(void); static bool8 StartMenuLinkModePlayerNameCallback(void); static bool8 StartMenuBattlePyramidRetireCallback(void); static bool8 StartMenuBattlePyramidBagCallback(void); +static bool8 StartMenuDebugCallback(void); // Menu callbacks static bool8 SaveStartCallback(void); @@ -153,6 +156,8 @@ static const u8* const sPyramindFloorNames[] = static const struct WindowTemplate sPyramidFloorWindowTemplate_2 = {0, 1, 1, 0xA, 4, 0xF, 8}; static const struct WindowTemplate sPyramidFloorWindowTemplate_1 = {0, 1, 1, 0xC, 4, 0xF, 8}; +static const u8 gText_MenuDebug[] = _("DEBUG"); + static const struct MenuAction sStartMenuItems[] = { {gText_MenuPokedex, {.u8_void = StartMenuPokedexCallback}}, @@ -167,7 +172,8 @@ static const struct MenuAction sStartMenuItems[] = {gText_MenuPlayer, {.u8_void = StartMenuLinkModePlayerNameCallback}}, {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, - {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}} + {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, + {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, }; static const struct BgTemplate sUnknown_085105A8[] = @@ -195,6 +201,7 @@ static const struct WindowTemplate sSaveInfoWindowTemplate = {0, 1, 1, 0xE, 0xA, static void BuildStartMenuActions(void); static void AddStartMenuAction(u8 action); static void BuildNormalStartMenu(void); +static void BuildDebugStartMenu(void); static void BuildSafariZoneStartMenu(void); static void BuildLinkModeStartMenu(void); static void BuildUnionRoomStartMenu(void); @@ -223,6 +230,7 @@ static void CB2_SaveAfterLinkBattle(void); static void ShowSaveInfoWindow(void); static void RemoveSaveInfoWindow(void); static void HideStartMenuWindow(void); +static void HideStartMenuDebug(void); void SetDexPokemonPokenavFlags(void) // unused { @@ -259,10 +267,17 @@ static void BuildStartMenuActions(void) { BuildMultiPartnerRoomStartMenu(); } + #if DEBUGGING && DEBUG_MENU + else + { + BuildDebugStartMenu(); + } + #else else - { - BuildNormalStartMenu(); - } + { + BuildNormalStartMenu(); + } + #endif } static void AddStartMenuAction(u8 action) @@ -294,6 +309,30 @@ static void BuildNormalStartMenu(void) AddStartMenuAction(MENU_ACTION_EXIT); } +static void BuildDebugStartMenu(void) +{ + if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) + { + AddStartMenuAction(MENU_ACTION_POKEDEX); + } + if (FlagGet(FLAG_SYS_POKEMON_GET) == TRUE) + { + AddStartMenuAction(MENU_ACTION_POKEMON); + } + + AddStartMenuAction(MENU_ACTION_BAG); + + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) + { + AddStartMenuAction(MENU_ACTION_POKENAV); + } + + AddStartMenuAction(MENU_ACTION_PLAYER); + AddStartMenuAction(MENU_ACTION_SAVE); + AddStartMenuAction(MENU_ACTION_OPTION); + AddStartMenuAction(MENU_ACTION_DEBUG); +} + static void BuildSafariZoneStartMenu(void) { AddStartMenuAction(MENU_ACTION_RETIRE_SAFARI); @@ -575,6 +614,7 @@ static bool8 HandleStartMenuInput(void) if (gMenuCallback != StartMenuSaveCallback && gMenuCallback != StartMenuExitCallback + && gMenuCallback != StartMenuDebugCallback && gMenuCallback != StartMenuSafariZoneRetireCallback && gMenuCallback != StartMenuBattlePyramidRetireCallback) { @@ -710,6 +750,18 @@ static bool8 StartMenuExitCallback(void) return TRUE; } +static bool8 StartMenuDebugCallback(void) +{ + RemoveExtraStartMenuWindows(); + HideStartMenuDebug(); // Hide start menu without enabling movement + + #if DEBUGGING + Debug_ShowMainMenu(); + #endif + + return TRUE; +} + static bool8 StartMenuSafariZoneRetireCallback(void) { RemoveExtraStartMenuWindows(); @@ -719,6 +771,13 @@ static bool8 StartMenuSafariZoneRetireCallback(void) return TRUE; } +static void HideStartMenuDebug(void) +{ + PlaySE(SE_SELECT); + ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); + RemoveStartMenuWindow(); +} + static bool8 StartMenuLinkModePlayerNameCallback(void) { if (!gPaletteFade.active) From 5104293344cb469379dae051eb92d007f6fc7c5d Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Thu, 18 Nov 2021 15:09:06 +0100 Subject: [PATCH 027/271] Changed to TX_DEBUGGING define instead of makefile DEBUGGING option --- Makefile | 54 +++++++++------------------- include/debug.h | 9 ++--- src/debug.c | 3 -- src/event_object_movement.c | 8 ++--- src/field_control_avatar.c | 71 ++++++++++++++++++++----------------- src/start_menu.c | 14 +++++--- src/trainer_see.c | 8 ++--- 7 files changed, 76 insertions(+), 91 deletions(-) diff --git a/Makefile b/Makefile index 7ea5bdb926..ca282d07e6 100644 --- a/Makefile +++ b/Makefile @@ -63,13 +63,13 @@ ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN) ifeq ($(MODERN),0) CC1 := tools/agbcc/bin/agbcc$(EXE) -override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g +override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm ROM := pokeemerald.gba OBJ_DIR := build/emerald LIBPATH := -L ../../tools/agbcc/lib else CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet -override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g +override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mcpu=arm7tdmi -fno-toplevel-reorder -Wno-pointer-to-int-cast ROM := pokeemerald_modern.gba OBJ_DIR := build/modern LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))" @@ -111,13 +111,13 @@ MAKEFLAGS += --no-print-directory # Secondary expansion is required for dependency variables in object rules. .SECONDEXPANSION: -.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern debugging debugging_modern +.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS) berry_fix libagbsyscall modern infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line)))) # Build tools when building the rom # Disable dependency scanning for clean/tidy/tools -ifeq (,$(filter-out all rom compare modern debugging debugging_modern berry_fix libagbsyscall,$(MAKECMDGOALS))) +ifeq (,$(filter-out all rom compare modern berry_fix libagbsyscall,$(MAKECMDGOALS))) $(call infoshell, $(MAKE) tools) else NODEP := 1 @@ -136,9 +136,6 @@ C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS)) ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s) ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS)) -# get all the data/*.s files EXCEPT the ones with specific rules -REGULAR_DATA_ASM_SRCS := $(filter-out $(DATA_ASM_SUBDIR)/maps.s $(DATA_ASM_SUBDIR)/map_events.s, $(wildcard $(DATA_ASM_SUBDIR)/*.s)) - DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s) DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS)) @@ -181,7 +178,7 @@ mostlyclean: tidy rm -f $(SAMPLE_SUBDIR)/*.bin rm -f $(CRY_SUBDIR)/*.bin rm -f $(MID_SUBDIR)/*.s - find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + + find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} + @@ -251,12 +248,6 @@ ifeq ($(DINFO),1) override CFLAGS += -g endif -# Debug menu -ifeq ($(DDEBUGGING),1) -override ASFLAGS += --defsym DEBUGGING=1 -override CPPFLAGS += -D DEBUGGING=1 -endif - $(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep) @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s @@ -284,33 +275,24 @@ endif $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s $$(c_asm_dep) $(AS) $(ASFLAGS) -o $@ $< -# The dep rules have to be explicit or else missing files won't be reported. -# As a side effect, they're evaluated immediately instead of when the rule is invoked. -# It doesn't look like $(shell) can be deferred so there might not be a better way. - - ifeq ($(NODEP),1) -$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s +$(ASM_BUILDDIR)/%.o: asm_dep := +else +$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) -I "" $(ASM_SUBDIR)/$*.s) +endif + +$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep) $(AS) $(ASFLAGS) -o $@ $< -else -define ASM_DEP -$1: $2 $$(shell $(SCANINC) -I include -I "" $2) - $$(AS) $$(ASFLAGS) -o $$@ $$< -endef -$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src)))) -endif ifeq ($(NODEP),1) -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s - $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ +$(DATA_ASM_BUILDDIR)/%.o: data_dep := else -define DATA_ASM_DEP -$1: $2 $$(shell $(SCANINC) -I include -I "" $2) - $$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@ -endef -$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src)))) +$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s) endif +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep) + $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@ + $(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s $(AS) $(ASFLAGS) -I sound -o $@ $< @@ -351,7 +333,3 @@ berry_fix: libagbsyscall: @$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) - -# Debug menu -debugging: ; @$(MAKE) DDEBUGGING=1 DINFO=1 -debugging_modern: ; @$(MAKE) MODERN=1 DDEBUGGING=1 DINFO=1 diff --git a/include/debug.h b/include/debug.h index 864176e4f3..1014690a5a 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,10 +1,11 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H -#if DEBUGGING -void Debug_ShowMainMenu(void); -#endif +#define TX_DEBUGGING +#define TX_DEBUG_MENU_OPTION FALSE + + +void Debug_ShowMainMenu(void); -#define DEBUG_MENU FALSE #endif // GUARD_DEBUG_H \ No newline at end of file diff --git a/src/debug.c b/src/debug.c index 8cb5ddbaca..ae3ff02e0b 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1,4 +1,3 @@ -#if DEBUGGING //CREDITS //TheXaman: https://github.com/TheXaman/pokeemerald/tree/tx_debug_system //CODE USED FROM: @@ -3626,5 +3625,3 @@ static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)) } */ - -#endif diff --git a/src/event_object_movement.c b/src/event_object_movement.c index de17be1254..44686fefe7 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4724,10 +4724,10 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; -#if DEBUGGING //DEBUG - if (FlagGet(FLAG_SYS_NO_COLLISION)) - return COLLISION_NONE; -#endif // + #ifdef TX_DEBUGGING //DEBUG + if (FlagGet(FLAG_SYS_NO_COLLISION)) + return COLLISION_NONE; + #endif // if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 916287b0b7..3089c13671 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -132,34 +132,36 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; -#if DEBUGGING && !DEBUG_MENU //DEBUG - if (heldKeys & R_BUTTON) - { - if(input->pressedSelectButton) + #ifdef TX_DEBUGGING + if (!TX_DEBUG_MENU_OPTION) { - input->input_field_1_0 = TRUE; - input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) - { - input->input_field_1_2 = TRUE; - input->pressedStartButton = FALSE; + if (heldKeys & R_BUTTON) + { + if(input->pressedSelectButton) + { + input->input_field_1_0 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_2 = TRUE; + input->pressedStartButton = FALSE; + } + } + if (heldKeys & L_BUTTON) + { + if(input->pressedSelectButton) + { + input->input_field_1_1 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_3 = TRUE; + input->pressedStartButton = FALSE; + } + } } - } - if (heldKeys & L_BUTTON) - { - if(input->pressedSelectButton) - { - input->input_field_1_1 = TRUE; - input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) - { - input->input_field_1_3 = TRUE; - input->pressedStartButton = FALSE; - } - } -#endif - + #endif } int ProcessPlayerFieldInput(struct FieldInput *input) @@ -219,14 +221,17 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; -#if DEBUGGING && !DEBUG_MENU - if (input->input_field_1_2) - { - PlaySE(SE_WIN_OPEN); - Debug_ShowMainMenu(); - return TRUE; - } -#endif + #ifdef TX_DEBUGGING + if (!TX_DEBUG_MENU_OPTION) + { + if (input->input_field_1_2) + { + PlaySE(SE_WIN_OPEN); + Debug_ShowMainMenu(); + return TRUE; + } + } + #endif return FALSE; } diff --git a/src/start_menu.c b/src/start_menu.c index b765761513..75bdc618a0 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -267,16 +267,20 @@ static void BuildStartMenuActions(void) { BuildMultiPartnerRoomStartMenu(); } - #if DEBUGGING && DEBUG_MENU - else + #ifdef TX_DEBUGGING + if (TX_DEBUG_MENU_OPTION) { BuildDebugStartMenu(); } - #else - else + else { BuildNormalStartMenu(); } + #else + else + { + BuildNormalStartMenu(); + } #endif } @@ -755,7 +759,7 @@ static bool8 StartMenuDebugCallback(void) RemoveExtraStartMenuWindows(); HideStartMenuDebug(); // Hide start menu without enabling movement - #if DEBUGGING + #ifdef TX_DEBUGGING Debug_ShowMainMenu(); #endif diff --git a/src/trainer_see.c b/src/trainer_see.c index 83783469c1..4ca19cd7f0 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -177,10 +177,10 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; -#if DEBUGGING //DEBUG - if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) - return FALSE; -#endif // + #ifdef TX_DEBUGGING //DEBUG + if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + return FALSE; + #endif // gNoOfApproachingTrainers = 0; gApproachingTrainerId = 0; From 578056000725b370e57bee22de8967ed658ec66d Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Sun, 28 Nov 2021 20:28:54 +0100 Subject: [PATCH 028/271] fixed some bugs, thanks to cbt --- include/pokemon.h | 1 + src/debug.c | 8 ++++---- src/event_object_movement.c | 1 + src/item_use.c | 2 +- src/pokemon.c | 3 +-- src/trainer_see.c | 1 + 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 315416c383..f3f7586888 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -348,6 +348,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg); void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg); void CopyMon(void *dest, void *src, size_t size); u8 GiveMonToPlayer(struct Pokemon *mon); +u8 SendMonToPC(struct Pokemon* mon); u8 CalculatePlayerPartyCount(void); u8 CalculateEnemyPartyCount(void); u8 GetMonsStateToDoubles(void); diff --git a/src/debug.c b/src/debug.c index ae3ff02e0b..ec8c1251ff 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1683,8 +1683,8 @@ static void DebugAction_Give_Item(u8 taskId) gTasks[taskId].data[3] = 1; //Current ID gTasks[taskId].data[4] = 0; //Digit Selected gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); - gSprites[gTasks[taskId].data[6]].pos2.x = DEBUG_NUMBER_ICON_X+10; - gSprites[gTasks[taskId].data[6]].pos2.y = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].data[6]].x2 = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].data[6]].y2 = DEBUG_NUMBER_ICON_Y+10; gSprites[gTasks[taskId].data[6]].oam.priority = 0; } static void DebugAction_Give_Item_SelectId(u8 taskId) @@ -1728,8 +1728,8 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon DestroySprite(&gSprites[gTasks[taskId].data[6]]); //Destroy item icon gTasks[taskId].data[6] = AddItemIconSprite(ITEM_TAG, ITEM_TAG, gTasks[taskId].data[3]); - gSprites[gTasks[taskId].data[6]].pos2.x = DEBUG_NUMBER_ICON_X+10; - gSprites[gTasks[taskId].data[6]].pos2.y = DEBUG_NUMBER_ICON_Y+10; + gSprites[gTasks[taskId].data[6]].x2 = DEBUG_NUMBER_ICON_X+10; + gSprites[gTasks[taskId].data[6]].y2 = DEBUG_NUMBER_ICON_Y+10; gSprites[gTasks[taskId].data[6]].oam.priority = 0; } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a782872d69..054f1d233d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2,6 +2,7 @@ #include "malloc.h" #include "battle_pyramid.h" #include "berry.h" +#include "debug.h" #include "decoration.h" #include "event_data.h" #include "event_object_movement.h" diff --git a/src/item_use.c b/src/item_use.c index b875b19103..de14e3ab9e 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -943,7 +943,7 @@ void ItemUseInBattle_PokeBall(u8 taskId) { if (FlagGet(FLAG_SYS_NO_CATCHING)){ //DEBUG static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); - DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, BagMenu_InitListsMenu); + DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); } // else if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { diff --git a/src/pokemon.c b/src/pokemon.c index 1607e1a40f..0cbb127a6d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -61,7 +61,6 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId); static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId); static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move); static bool8 ShouldSkipFriendshipChange(void); -static u8 SendMonToPC(struct Pokemon* mon); EWRAM_DATA static u8 sLearningMoveTableID = 0; EWRAM_DATA u8 gPlayerPartyCount = 0; @@ -4385,7 +4384,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon) return MON_GIVEN_TO_PARTY; } -static u8 SendMonToPC(struct Pokemon* mon) +u8 SendMonToPC(struct Pokemon* mon) { s32 boxNo, boxPos; diff --git a/src/trainer_see.c b/src/trainer_see.c index b3f4a77bd0..dfc898cf76 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle_setup.h" +#include "debug.h" #include "event_data.h" #include "event_object_movement.h" #include "field_effect.h" From df8dfd9a6520828488e9a7da972bf65b04110daa Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Sun, 28 Nov 2021 20:53:23 +0100 Subject: [PATCH 029/271] added #ifdef TX_DEBUGGING for wild encounter, bag use and catching flags --- src/battle_main.c | 9 +++++++++ src/field_control_avatar.c | 2 ++ src/item_use.c | 10 +++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/battle_main.c b/src/battle_main.c index 944efd1639..133daa1963 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -15,6 +15,7 @@ #include "berry.h" #include "bg.h" #include "data.h" +#include "debug.h" #include "decompress.h" #include "dma3.h" #include "event_data.h" @@ -4187,11 +4188,19 @@ static void HandleTurnActionSelectionState(void) } break; case B_ACTION_USE_ITEM: + #ifdef TX_DEBUGGING if (FlagGet(FLAG_SYS_NO_BAG_USE) || gBattleTypeFlags & (BATTLE_TYPE_LINK //DEBUG | BATTLE_TYPE_FRONTIER_NO_PYRAMID | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK)) { + #else + if (gBattleTypeFlags & (BATTLE_TYPE_LINK //DEBUG + | BATTLE_TYPE_FRONTIER_NO_PYRAMID + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_RECORDED_LINK)) + { + #endif RecordedBattle_ClearBattlerAction(gActiveBattler, 1); gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 1e25f89b33..1916d60ff2 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -713,8 +713,10 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { + #ifdef TX_DEBUGGING if (FlagGet(FLAG_SYS_NO_ENCOUNTER)) //DEBUG return FALSE;// + #endif if (sWildEncounterImmunitySteps < 4) { diff --git a/src/item_use.c b/src/item_use.c index de14e3ab9e..6e33dad33e 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -8,6 +8,7 @@ #include "bike.h" #include "coins.h" #include "data.h" +#include "debug.h" #include "event_data.h" #include "event_object_lock.h" #include "event_object_movement.h" @@ -941,11 +942,14 @@ void ItemUseOutOfBattle_EvolutionStone(u8 taskId) void ItemUseInBattle_PokeBall(u8 taskId) { + #ifdef TX_DEBUGGING if (FlagGet(FLAG_SYS_NO_CATCHING)){ //DEBUG static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); - DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); - } // - else if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? + DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); + return; + } + #endif + if (IsPlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) From b6fff16a7deb9d457725437b6f08a9148d629bc0 Mon Sep 17 00:00:00 2001 From: SonikkuA-DatH <58025603+SonikkuA-DatH@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:04:44 -0800 Subject: [PATCH 030/271] Update battle.h --- include/battle.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/battle.h b/include/battle.h index 5658f603cf..6e04aa05d4 100644 --- a/include/battle.h +++ b/include/battle.h @@ -158,6 +158,7 @@ struct ProtectStruct u32 quickDraw:1; u32 physicalDmg; u32 specialDmg; + u8 quash : 1; u8 physicalBattlerId; u8 specialBattlerId; }; From a32ac0d2905edb295e6eb1307eb034b2dd0380f4 Mon Sep 17 00:00:00 2001 From: SonikkuA-DatH <58025603+SonikkuA-DatH@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:05:39 -0800 Subject: [PATCH 031/271] Update battle_message.c --- src/battle_message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_message.c b/src/battle_message.c index d64d02f902..3819e5c45a 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -621,7 +621,7 @@ static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} bl static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSTICKY WEB!"); static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSTEALTH ROCK!"); static const u8 sText_StickyWebUsed[] = _("A sticky web spreads out on the\nground around {B_DEF_TEAM2} team!"); -static const u8 sText_QuashSuccess[] = _("The opposing {B_ATK_NAME_WITH_PREFIX}'s move was postponed!"); +static const u8 sText_QuashSuccess[] = _("The opposing {B_DEF_NAME_WITH_PREFIX}'s\nmove was postponed!"); static const u8 sText_IonDelugeOn[] = _("A deluge of ions showers\nthe battlefield!"); static const u8 sText_TopsyTurvySwitchedStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s stat changes were\nall reversed!"); static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!"); From 76136c48589037ba6af78c90c76276521d8c9d15 Mon Sep 17 00:00:00 2001 From: SonikkuA-DatH <58025603+SonikkuA-DatH@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:07:35 -0800 Subject: [PATCH 032/271] Update battle_main.c --- src/battle_main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/battle_main.c b/src/battle_main.c index 7667360488..4d52adc73d 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4412,6 +4412,10 @@ s8 GetMovePriority(u32 battlerId, u16 move) break; } } + if (gProtectStructs[battlerId].quash == 1) + { + priority = -8; + } return priority; } @@ -4636,6 +4640,7 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[gActiveBattler].spikyShielded = FALSE; gProtectStructs[gActiveBattler].kingsShielded = FALSE; gProtectStructs[gActiveBattler].banefulBunkered = FALSE; + gProtectStructs[gBattlerTarget].quash = FALSE; } else { From 78ab05e6504cde844e76e706bcf1b637c85dd0c5 Mon Sep 17 00:00:00 2001 From: SonikkuA-DatH <58025603+SonikkuA-DatH@users.noreply.github.com> Date: Fri, 3 Dec 2021 18:09:07 -0800 Subject: [PATCH 033/271] Update battle_script_commands.c --- src/battle_script_commands.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index fcac028945..b5296fb7c7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8142,28 +8142,14 @@ static void Cmd_various(void) } return; case VARIOUS_TRY_QUASH: - if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) + if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) // is true if foe is faster, has a bigger priority, or switches { - gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - } - else + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); // This replaces the current battlescript with the "fail" script, if the condition + } // we checked is true + else // If the condition is not true, it means we are faster than the foe, so we can set the quash bit { - for (i = 0; i < gBattlersCount; i++) - data[i] = gBattlerByTurnOrder[i]; - for (i = 0; i < gBattlersCount; i++) - { - if (data[i] == gBattlerTarget) - { - for (j = i + 1; j < gBattlersCount; j++) - data[i++] = data[j]; - } - else - { - gBattlerByTurnOrder[i] = data[i]; - } - } - gBattlerByTurnOrder[gBattlersCount - 1] = gBattlerTarget; - gBattlescriptCurrInstr += 7; + gProtectStructs[gBattlerTarget].quash = 1; + gBattlescriptCurrInstr += 7; // and then we proceed with the rest of our battlescript } return; case VARIOUS_INVERT_STAT_STAGES: From 224b9a15493c6c734425980cca26289e34409d71 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 21 Feb 2022 20:29:46 -0300 Subject: [PATCH 034/271] Fixed softlock when pressing the start button while in link room --- src/start_menu.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/start_menu.c b/src/start_menu.c index 71fb78f68d..a9ecb2c47b 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -283,21 +283,17 @@ static void BuildStartMenuActions(void) { BuildMultiPartnerRoomStartMenu(); } - #ifdef TX_DEBUGGING - if (TX_DEBUG_MENU_OPTION) - { - BuildDebugStartMenu(); - } - else - { - BuildNormalStartMenu(); - } - #else - else - { - BuildNormalStartMenu(); - } - #endif +#if defined(TX_DEBUGGING) && TX_DEBUG_MENU_OPTION + else + { + BuildDebugStartMenu(); + } +#else + else + { + BuildNormalStartMenu(); + } +#endif } static void AddStartMenuAction(u8 action) From e0885523981048f0f97ec5f1c413e0481f73c189 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 7 Mar 2022 21:17:31 -0300 Subject: [PATCH 035/271] Fixed going out of bounds when choosing a move for detailed Give Mon --- src/debug.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/debug.c b/src/debug.c index ec8c1251ff..255ac335fd 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2389,8 +2389,8 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) if(gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > MOVES_COUNT) - gTasks[taskId].data[3] = MOVES_COUNT; + if(gTasks[taskId].data[3] >= MOVES_COUNT) + gTasks[taskId].data[3] = MOVES_COUNT - 1; } if(gMain.newKeys & DPAD_DOWN) { @@ -2574,7 +2574,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu //Moves for (i = 0; i < MAX_MON_MOVES; i++) { - if (moves[i] == 0 || moves[i] == 0xFF || moves[i] > MOVES_COUNT) + if (moves[i] == 0 || moves[i] == 0xFF || moves[i] >= MOVES_COUNT) continue; SetMonMoveSlot(&mon, moves[i], i); From 315813d186733b2cf8784d9270e4300213b00757 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 16 Mar 2022 10:38:07 -0300 Subject: [PATCH 036/271] Update debug.c --- src/debug.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/debug.c b/src/debug.c index 255ac335fd..9fa7d73213 100644 --- a/src/debug.c +++ b/src/debug.c @@ -276,7 +276,11 @@ extern u8 Debug_ShowFieldMessageStringVar4[]; extern u8 Debug_CheatStart[]; extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; +#ifdef BATTLE_ENGINE +#define ABILITY_NAME_LENGTH 16 +#else #define ABILITY_NAME_LENGTH 12 +#endif extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; From 0036a4dc36c766fd3de8ea6484cc46679548b0a6 Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Fri, 18 Mar 2022 13:30:08 -0400 Subject: [PATCH 037/271] pc acccess --- include/constants/flags.h | 2 +- include/pokemon_storage_system.h | 2 ++ src/debug.c | 33 ++++++++++++++++++++++---------- src/pokemon_storage_system.c | 15 +++++++++------ 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/include/constants/flags.h b/include/constants/flags.h index 4d5a7c1166..cab8b51e5f 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -46,7 +46,7 @@ #define FLAG_SYS_NO_TRAINER_SEE 0x22 // Unused Flag //DEBUG #define FLAG_SYS_NO_BAG_USE 0x23 // Unused Flag //DEBUG #define FLAG_SYS_NO_CATCHING 0x24 // Unused Flag //DEBUG -#define FLAG_UNUSED_0x025 0x25 // Unused Flag +#define FLAG_SYS_PC_FROM_DEBUG_MENU 0x25 // Unused Flag //DEBUG #define FLAG_UNUSED_0x026 0x26 // Unused Flag #define FLAG_UNUSED_0x027 0x27 // Unused Flag #define FLAG_UNUSED_0x028 0x28 // Unused Flag diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index b7fca23311..a4575ac9ab 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -72,4 +72,6 @@ u8 *GetWaldaPhrasePtr(void); void SetWaldaPhrase(const u8 *src); bool32 IsWaldaPhraseEmpty(void); +void EnterPokeStorage(u8 boxOption); + #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/src/debug.c b/src/debug.c index 9fa7d73213..0e464fa8b9 100644 --- a/src/debug.c +++ b/src/debug.c @@ -31,6 +31,7 @@ #include "naming_screen.h" #include "new_game.h" #include "overworld.h" +#include "palette.h" #include "pokedex.h" #include "pokemon.h" #include "pokemon_icon.h" @@ -48,6 +49,7 @@ #include "constants/flags.h" #include "constants/items.h" #include "constants/map_groups.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/species.h" @@ -61,6 +63,7 @@ enum { // Main DEBUG_MENU_ITEM_VARS, DEBUG_MENU_ITEM_GIVE, DEBUG_MENU_ITEM_SOUND, + DEBUG_MENU_ITEM_ACCESS_PC, DEBUG_MENU_ITEM_CANCEL }; enum { // Util @@ -115,7 +118,6 @@ enum { // Give DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG, DEBUG_GIVE_MENU_ITEM_FILL_PC, DEBUG_GIVE_MENU_ITEM_CHEAT, - //DEBUG_MENU_ITEM_ACCESS_PC, }; enum { //Sound DEBUG_SOUND_MENU_ITEM_SE, @@ -374,7 +376,7 @@ static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); -// static const u8 gDebugText_Give_AccessPC[] = _("Access PC"); +static const u8 gDebugText_AccessPC[] = _("Access PC"); // Sound Mneu static const u8 gDebugText_Sound_SE[] = _("Effects"); static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); @@ -425,6 +427,7 @@ static const struct ListMenuItem sDebugMenu_Items_Main[] = [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, + [DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} }; static const struct ListMenuItem sDebugMenu_Items_Utilities[] = @@ -484,7 +487,6 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, - //[DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, }; static const struct ListMenuItem sDebugMenu_Items_Sound[] = { @@ -502,6 +504,7 @@ static void (*const sDebugMenu_Actions_Main[])(u8) = [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, + [DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel }; static void (*const sDebugMenu_Actions_Utilities[])(u8) = @@ -561,7 +564,6 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, [DEBUG_GIVE_MENU_ITEM_FILL_PC] = DebugAction_Give_FillPC, [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, - //[DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, }; static void (*const sDebugMenu_Actions_Sound[])(u8) = { @@ -2690,12 +2692,23 @@ static void DebugAction_Give_CHEAT(u8 taskId) ScriptContext1_SetupScript(Debug_CheatStart); } -// static void DebugAction_AccessPC(u8 taskId) -// { -// Debug_DestroyMenu(taskId); -// PlaySE(SE_PC_ON); -// ScriptContext1_SetupScript(EventScript_PC); -// } +static void Task_WaitFadeAccessPC(u8 taskId) +{ + if (!gPaletteFade.active) + { + DestroyTask(taskId); + FlagSet(FLAG_SYS_PC_FROM_DEBUG_MENU); + EnterPokeStorage(2); + } +} + +static void DebugAction_AccessPC(u8 taskId) +{ + Debug_DestroyMenu(taskId); + CleanupOverworldWindowsAndTilemaps(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + CreateTask(Task_WaitFadeAccessPC, 0); +} // ******************************* diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index f18dc68d13..62966e8e09 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -571,7 +571,6 @@ EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0; EWRAM_DATA static bool8 sAutoActionOn = 0; // Main tasks -static void EnterPokeStorage(u8); static void Task_InitPokeStorage(u8); static void Task_PlaceMon(u8); static void Task_ChangeScreen(u8); @@ -1676,10 +1675,14 @@ static void FieldTask_ReturnToPcMenu(void) MainCallback vblankCb = gMain.vblankCallback; SetVBlankCallback(NULL); - taskId = CreateTask(Task_PCMainMenu, 80); - gTasks[taskId].tState = 0; - gTasks[taskId].tSelectedOption = sPreviousBoxOption; - Task_PCMainMenu(taskId); + if (!FlagGet(FLAG_SYS_PC_FROM_DEBUG_MENU)) { + taskId = CreateTask(Task_PCMainMenu, 80); + gTasks[taskId].tState = 0; + gTasks[taskId].tSelectedOption = sPreviousBoxOption; + Task_PCMainMenu(taskId); + } else { + FlagClear(FLAG_SYS_PC_FROM_DEBUG_MENU); + } SetVBlankCallback(vblankCb); FadeInFromBlack(); } @@ -2009,7 +2012,7 @@ static void CB2_PokeStorage(void) BuildOamBuffer(); } -static void EnterPokeStorage(u8 boxOption) +void EnterPokeStorage(u8 boxOption) { ResetTasks(); sCurrentBoxOption = boxOption; From 192969c492d4df5be40f9b1860f9e9f22e89011e Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Fri, 18 Mar 2022 20:47:12 +0100 Subject: [PATCH 038/271] small fix --- src/pokemon_storage_system.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 62966e8e09..4ead75965e 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1682,6 +1682,7 @@ static void FieldTask_ReturnToPcMenu(void) Task_PCMainMenu(taskId); } else { FlagClear(FLAG_SYS_PC_FROM_DEBUG_MENU); + EnableBothScriptContexts(); } SetVBlankCallback(vblankCb); FadeInFromBlack(); From 03c21c3b71f848340baf90bad318c0027622b6e5 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 15 May 2022 21:28:23 -0700 Subject: [PATCH 039/271] implementation of EXP candies --- src/data/items.h | 36 ++++++++++++++++++++++++--------- src/data/pokemon/item_effects.h | 10 ++++----- src/pokemon.c | 26 +++++++++++++++++++++++- 3 files changed, 56 insertions(+), 16 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 63ad66dfec..298f65b4a6 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1354,11 +1354,17 @@ const struct Item gItems[] = // Candy +#define ONE_HUNDRED 1 << 4 +#define ONE_THOUSAND 1 << 5 +#define TEN_THOUSAND 1 << 6 +#define FULL_LEVEL 1 << 7 + [ITEM_RARE_CANDY] = { .name = _("Rare Candy"), .itemId = ITEM_RARE_CANDY, .price = 10000, + .holdEffectParam = FULL_LEVEL, .description = sRareCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1371,10 +1377,11 @@ const struct Item gItems[] = .name = _("Exp.Candy XS"), .itemId = ITEM_EXP_CANDY_XS, .price = 20, + .holdEffectParam = 1 | ONE_HUNDRED, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo .flingPower = 30, }, @@ -1383,10 +1390,11 @@ const struct Item gItems[] = .name = _("Exp.Candy S"), .itemId = ITEM_EXP_CANDY_S, .price = 240, + .holdEffectParam = 8 | ONE_HUNDRED, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo .flingPower = 30, }, @@ -1395,10 +1403,11 @@ const struct Item gItems[] = .name = _("Exp.Candy M"), .itemId = ITEM_EXP_CANDY_M, .price = 1000, + .holdEffectParam = 3 | ONE_THOUSAND, .description = sExpCandyMDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo .flingPower = 30, }, @@ -1407,10 +1416,11 @@ const struct Item gItems[] = .name = _("Exp.Candy L"), .itemId = ITEM_EXP_CANDY_L, .price = 3000, + .holdEffectParam = 1 | TEN_THOUSAND, .description = sExpCandyLDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo .flingPower = 30, }, @@ -1419,10 +1429,11 @@ const struct Item gItems[] = .name = _("Exp.Candy XL"), .itemId = ITEM_EXP_CANDY_XL, .price = 10000, + .holdEffectParam = 3 | TEN_THOUSAND, .description = sExpCandyXLDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo .flingPower = 30, }, @@ -1438,6 +1449,11 @@ const struct Item gItems[] = .flingPower = 30, }, +#undef ONE_HUNDRED +#undef ONE_THOUSAND +#undef TEN_THOUSAND +#undef FULL_LEVEL + // Medicinal Flutes [ITEM_BLUE_FLUTE] = diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index ff621356e1..8892cb66f3 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -532,11 +532,11 @@ const u8 *const gItemEffectTable[] = // Candy [ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy, - //[ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_ExpCandy, // Todo - //[ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_ExpCandy, // Todo - //[ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_ExpCandy, // Todo - //[ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_ExpCandy, // Todo - //[ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_ExpCandy, // Todo + [ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_RareCandy, // Todo + [ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_RareCandy, // Todo + [ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_RareCandy, // Todo + [ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_RareCandy, // Todo + [ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_RareCandy, // Todo //[ITEM_DYNAMAX_CANDY - ITEM_POTION] = gItemEffect_DynamaxCandy, // Todo // Medicinal Flutes diff --git a/src/pokemon.c b/src/pokemon.c index 11be4da1f7..f987b24a89 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4873,16 +4873,40 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } +#define ONE_HUNDRED 1 << 4 +#define ONE_THOUSAND 1 << 5 +#define TEN_THOUSAND 1 << 6 +#define FULL_LEVEL 1 << 7 + // Rare Candy if ((itemEffect[i] & ITEM3_LEVEL_UP) && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + if (ItemId_GetHoldEffectParam(item) & FULL_LEVEL) + dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + else + { + temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; + if (ItemId_GetHoldEffectParam(item) & ONE_HUNDRED) + temp1 *= 100; + if (ItemId_GetHoldEffectParam(item) & ONE_THOUSAND) + temp1 *= 1000; + if (ItemId_GetHoldEffectParam(item) & TEN_THOUSAND) + temp1 *= 10000; + dataUnsigned = temp1 + gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL)]; + if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) + dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; + } SetMonData(mon, MON_DATA_EXP, &dataUnsigned); CalculateMonStats(mon); retVal = FALSE; } +#undef ONE_HUNDRED +#undef ONE_THOUSAND +#undef TEN_THOUSAND +#undef FULL_LEVEL + // Cure status if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battlerId) == 0) From 3e44ce08b35e5f97ba6eb8c11b0492e332732182 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Sun, 15 May 2022 21:34:50 -0700 Subject: [PATCH 040/271] Revert "implementation of EXP candies" This reverts commit 03c21c3b71f848340baf90bad318c0027622b6e5. --- src/data/items.h | 36 +++++++++------------------------ src/data/pokemon/item_effects.h | 10 ++++----- src/pokemon.c | 26 +----------------------- 3 files changed, 16 insertions(+), 56 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 298f65b4a6..63ad66dfec 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1354,17 +1354,11 @@ const struct Item gItems[] = // Candy -#define ONE_HUNDRED 1 << 4 -#define ONE_THOUSAND 1 << 5 -#define TEN_THOUSAND 1 << 6 -#define FULL_LEVEL 1 << 7 - [ITEM_RARE_CANDY] = { .name = _("Rare Candy"), .itemId = ITEM_RARE_CANDY, .price = 10000, - .holdEffectParam = FULL_LEVEL, .description = sRareCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1377,11 +1371,10 @@ const struct Item gItems[] = .name = _("Exp.Candy XS"), .itemId = ITEM_EXP_CANDY_XS, .price = 20, - .holdEffectParam = 1 | ONE_HUNDRED, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, @@ -1390,11 +1383,10 @@ const struct Item gItems[] = .name = _("Exp.Candy S"), .itemId = ITEM_EXP_CANDY_S, .price = 240, - .holdEffectParam = 8 | ONE_HUNDRED, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, @@ -1403,11 +1395,10 @@ const struct Item gItems[] = .name = _("Exp.Candy M"), .itemId = ITEM_EXP_CANDY_M, .price = 1000, - .holdEffectParam = 3 | ONE_THOUSAND, .description = sExpCandyMDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, @@ -1416,11 +1407,10 @@ const struct Item gItems[] = .name = _("Exp.Candy L"), .itemId = ITEM_EXP_CANDY_L, .price = 3000, - .holdEffectParam = 1 | TEN_THOUSAND, .description = sExpCandyLDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, @@ -1429,11 +1419,10 @@ const struct Item gItems[] = .name = _("Exp.Candy XL"), .itemId = ITEM_EXP_CANDY_XL, .price = 10000, - .holdEffectParam = 3 | TEN_THOUSAND, .description = sExpCandyXLDesc, .pocket = POCKET_ITEMS, - .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, @@ -1449,11 +1438,6 @@ const struct Item gItems[] = .flingPower = 30, }, -#undef ONE_HUNDRED -#undef ONE_THOUSAND -#undef TEN_THOUSAND -#undef FULL_LEVEL - // Medicinal Flutes [ITEM_BLUE_FLUTE] = diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 8892cb66f3..ff621356e1 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -532,11 +532,11 @@ const u8 *const gItemEffectTable[] = // Candy [ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_RareCandy, // Todo + //[ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_ExpCandy, // Todo + //[ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_ExpCandy, // Todo + //[ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_ExpCandy, // Todo + //[ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_ExpCandy, // Todo + //[ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_ExpCandy, // Todo //[ITEM_DYNAMAX_CANDY - ITEM_POTION] = gItemEffect_DynamaxCandy, // Todo // Medicinal Flutes diff --git a/src/pokemon.c b/src/pokemon.c index f987b24a89..11be4da1f7 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4873,40 +4873,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } -#define ONE_HUNDRED 1 << 4 -#define ONE_THOUSAND 1 << 5 -#define TEN_THOUSAND 1 << 6 -#define FULL_LEVEL 1 << 7 - // Rare Candy if ((itemEffect[i] & ITEM3_LEVEL_UP) && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { - if (ItemId_GetHoldEffectParam(item) & FULL_LEVEL) - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; - else - { - temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; - if (ItemId_GetHoldEffectParam(item) & ONE_HUNDRED) - temp1 *= 100; - if (ItemId_GetHoldEffectParam(item) & ONE_THOUSAND) - temp1 *= 1000; - if (ItemId_GetHoldEffectParam(item) & TEN_THOUSAND) - temp1 *= 10000; - dataUnsigned = temp1 + gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL)]; - if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; - } + dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; SetMonData(mon, MON_DATA_EXP, &dataUnsigned); CalculateMonStats(mon); retVal = FALSE; } -#undef ONE_HUNDRED -#undef ONE_THOUSAND -#undef TEN_THOUSAND -#undef FULL_LEVEL - // Cure status if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battlerId) == 0) From 793e8ef5a47504cc60f96c06040186dbf63f9e67 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 13:12:41 -0700 Subject: [PATCH 041/271] fixed learning moves --- src/data/items.h | 12 +++---- src/party_menu.c | 89 +++++++++++++++++++++++++++++++----------------- src/pokemon.c | 20 +++++------ 3 files changed, 74 insertions(+), 47 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 298f65b4a6..12ca812475 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1381,7 +1381,7 @@ const struct Item gItems[] = .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .flingPower = 30, }, @@ -1394,7 +1394,7 @@ const struct Item gItems[] = .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .flingPower = 30, }, @@ -1407,7 +1407,7 @@ const struct Item gItems[] = .description = sExpCandyMDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .flingPower = 30, }, @@ -1420,7 +1420,7 @@ const struct Item gItems[] = .description = sExpCandyLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .flingPower = 30, }, @@ -1433,7 +1433,7 @@ const struct Item gItems[] = .description = sExpCandyXLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_RareCandy, // Todo + .fieldUseFunc = ItemUseOutOfBattle_RareCandy, .flingPower = 30, }, @@ -1445,7 +1445,7 @@ const struct Item gItems[] = .description = sDynamaxCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, .flingPower = 30, }, diff --git a/src/party_menu.c b/src/party_menu.c index 4091437772..cef8e617e9 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -151,6 +151,8 @@ EWRAM_DATA u8 gSelectedOrderFromParty[MAX_FRONTIER_PARTY_SIZE] = {0}; static EWRAM_DATA u16 sPartyMenuItemId = 0; static EWRAM_DATA u16 sUnused = 0; EWRAM_DATA u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2] = {0}; // bits 0-3 are the current pos of Slot 1, 4-7 are Slot 2, and so on +static EWRAM_DATA u8 sInitialLevel = 0; +static EWRAM_DATA u8 sFinalLevel = 0; // IWRAM common void (*gItemUseCB)(u8, TaskFunc); @@ -4822,7 +4824,10 @@ static void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) if (IsFanfareTaskInactive() && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { if (gPartyMenu.learnMoveState == 1) - Task_TryLearningNextMove(taskId); + if (sInitialLevel < sFinalLevel) + Task_TryLearnNewMoves(taskId); + else + Task_TryLearningNextMove(taskId); else { if (gPartyMenu.learnMoveState == 2) // never occurs @@ -4874,6 +4879,7 @@ static void CB2_ShowSummaryScreenToForgetMove(void) static void CB2_ReturnToPartyMenuWhileLearningMove(void) { + SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); } @@ -4979,8 +4985,9 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) s16 *arrayPtr = ptr->data; u16 *itemPtr = &gSpecialVar_ItemId; bool8 cannotUseEffect; + sInitialLevel = GetMonData(mon, MON_DATA_LEVEL); - if (GetMonData(mon, MON_DATA_LEVEL) != MAX_LEVEL) + if (sInitialLevel != MAX_LEVEL) { BufferMonStatsToTaskData(mon, arrayPtr); cannotUseEffect = ExecuteTableBasedItemEffect_(gPartyMenu.slotId, *itemPtr, 0); @@ -5009,6 +5016,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); + sFinalLevel = GetMonData(mon, MON_DATA_LEVEL, NULL); gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; } } @@ -5067,49 +5075,68 @@ static void DisplayLevelUpStatsPg2(u8 taskId) static void Task_TryLearnNewMoves(u8 taskId) { + u8 i; u16 learnMove; if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { RemoveLevelUpStatsWindow(); - learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); - gPartyMenu.learnMoveState = 1; - switch (learnMove) + for (; sInitialLevel < sFinalLevel; sInitialLevel++) { - case 0: // No moves to learn - PartyMenuTryEvolution(taskId); - break; - case MON_HAS_MAX_MOVES: - DisplayMonNeedsToReplaceMove(taskId); - break; - case MON_ALREADY_KNOWS_MOVE: - gTasks[taskId].func = Task_TryLearningNextMove; - break; - default: - DisplayMonLearnedMove(taskId, learnMove); - break; + SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sInitialLevel); + learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); + gPartyMenu.learnMoveState = 1; + switch (learnMove) + { + case 0: // No moves to learn + if(sInitialLevel >= sFinalLevel) + PartyMenuTryEvolution(taskId); + break; + case MON_HAS_MAX_MOVES: + DisplayMonNeedsToReplaceMove(taskId); + break; + case MON_ALREADY_KNOWS_MOVE: + gTasks[taskId].func = Task_TryLearningNextMove; + break; + default: + DisplayMonLearnedMove(taskId, learnMove); + break; + } + if (learnMove) + break; } } } static void Task_TryLearningNextMove(u8 taskId) { - u16 result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); - - switch (result) + u8 i; + u16 result; + for (; sInitialLevel < sFinalLevel; sInitialLevel++) { - case 0: // No moves to learn - PartyMenuTryEvolution(taskId); - break; - case MON_HAS_MAX_MOVES: - DisplayMonNeedsToReplaceMove(taskId); - break; - case MON_ALREADY_KNOWS_MOVE: - return; - default: - DisplayMonLearnedMove(taskId, result); - break; + SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sInitialLevel); + result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); + gPartyMenu.learnMoveState = 1; + switch (result) + { + case 0: // No moves to learn + if(sInitialLevel >= sFinalLevel) + PartyMenuTryEvolution(taskId); + break; + case MON_HAS_MAX_MOVES: + DisplayMonNeedsToReplaceMove(taskId); + break; + case MON_ALREADY_KNOWS_MOVE: + return; + default: + DisplayMonLearnedMove(taskId, result); + break; + } + if (result) + break; } + if(sInitialLevel >= sFinalLevel) + PartyMenuTryEvolution(taskId); } static void PartyMenuTryEvolution(u8 taskId) diff --git a/src/pokemon.c b/src/pokemon.c index f987b24a89..a064d6acc6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4708,6 +4708,11 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } \ } +#define ONE_HUNDRED 1 << 4 +#define ONE_THOUSAND 1 << 5 +#define TEN_THOUSAND 1 << 6 +#define FULL_LEVEL 1 << 7 + // Returns TRUE if the item has no effect on the Pokémon, FALSE otherwise bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, bool8 usedByAI) { @@ -4873,11 +4878,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } -#define ONE_HUNDRED 1 << 4 -#define ONE_THOUSAND 1 << 5 -#define TEN_THOUSAND 1 << 6 -#define FULL_LEVEL 1 << 7 - // Rare Candy if ((itemEffect[i] & ITEM3_LEVEL_UP) && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) @@ -4902,11 +4902,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } -#undef ONE_HUNDRED -#undef ONE_THOUSAND -#undef TEN_THOUSAND -#undef FULL_LEVEL - // Cure status if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, partyIndex, STATUS1_SLEEP, battlerId) == 0) @@ -5301,6 +5296,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov return retVal; } +#undef ONE_HUNDRED +#undef ONE_THOUSAND +#undef TEN_THOUSAND +#undef FULL_LEVEL + bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId) { u32 status = GetMonData(mon, MON_DATA_STATUS, 0); From d212a136dacfc2f4223186067cd4fbedc824cb7d Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 13:25:30 -0700 Subject: [PATCH 042/271] clean-up --- src/party_menu.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index cef8e617e9..1b1755d0c7 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5075,7 +5075,6 @@ static void DisplayLevelUpStatsPg2(u8 taskId) static void Task_TryLearnNewMoves(u8 taskId) { - u8 i; u16 learnMove; if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) @@ -5110,7 +5109,6 @@ static void Task_TryLearnNewMoves(u8 taskId) static void Task_TryLearningNextMove(u8 taskId) { - u8 i; u16 result; for (; sInitialLevel < sFinalLevel; sInitialLevel++) { From 0de15db56417f57c52fbd006519c8650036f1c19 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 13:26:26 -0700 Subject: [PATCH 043/271] clean-up --- src/data/pokemon/item_effects.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index 8892cb66f3..49293889a7 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -532,11 +532,11 @@ const u8 *const gItemEffectTable[] = // Candy [ITEM_RARE_CANDY - ITEM_POTION] = gItemEffect_RareCandy, - [ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_RareCandy, // Todo - [ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_RareCandy, // Todo + [ITEM_EXP_CANDY_XS - ITEM_POTION] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_S - ITEM_POTION] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_M - ITEM_POTION] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_L - ITEM_POTION] = gItemEffect_RareCandy, + [ITEM_EXP_CANDY_XL - ITEM_POTION] = gItemEffect_RareCandy, //[ITEM_DYNAMAX_CANDY - ITEM_POTION] = gItemEffect_DynamaxCandy, // Todo // Medicinal Flutes From 6cb152e45271884603c32d7e227ebeb01261defd Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 13:51:28 -0700 Subject: [PATCH 044/271] removing nonessential stuff --- src/party_menu.c | 12 +++--------- src/pokemon.c | 2 ++ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index 1b1755d0c7..f0069300bf 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4824,10 +4824,7 @@ static void Task_LearnNextMoveOrClosePartyMenu(u8 taskId) if (IsFanfareTaskInactive() && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { if (gPartyMenu.learnMoveState == 1) - if (sInitialLevel < sFinalLevel) - Task_TryLearnNewMoves(taskId); - else - Task_TryLearningNextMove(taskId); + Task_TryLearningNextMove(taskId); else { if (gPartyMenu.learnMoveState == 2) // never occurs @@ -5088,7 +5085,7 @@ static void Task_TryLearnNewMoves(u8 taskId) switch (learnMove) { case 0: // No moves to learn - if(sInitialLevel >= sFinalLevel) + if (sInitialLevel >= sFinalLevel) PartyMenuTryEvolution(taskId); break; case MON_HAS_MAX_MOVES: @@ -5114,12 +5111,9 @@ static void Task_TryLearningNextMove(u8 taskId) { SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sInitialLevel); result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); - gPartyMenu.learnMoveState = 1; switch (result) { case 0: // No moves to learn - if(sInitialLevel >= sFinalLevel) - PartyMenuTryEvolution(taskId); break; case MON_HAS_MAX_MOVES: DisplayMonNeedsToReplaceMove(taskId); @@ -5133,7 +5127,7 @@ static void Task_TryLearningNextMove(u8 taskId) if (result) break; } - if(sInitialLevel >= sFinalLevel) + if (sInitialLevel >= sFinalLevel) PartyMenuTryEvolution(taskId); } diff --git a/src/pokemon.c b/src/pokemon.c index a064d6acc6..953278846a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4883,7 +4883,9 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { if (ItemId_GetHoldEffectParam(item) & FULL_LEVEL) + { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + } else { temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; From 01665c0213fd52219d6b9b118295dca3a3ac5f27 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 13:52:38 -0700 Subject: [PATCH 045/271] reverted todo for dynamax candy --- src/data/items.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/items.h b/src/data/items.h index 12ca812475..af62f0abed 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1445,7 +1445,7 @@ const struct Item gItems[] = .description = sDynamaxCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo .flingPower = 30, }, From bd008e4c80515c4d299b9ba98f9ed689bb2b2fe7 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 15:25:13 -0700 Subject: [PATCH 046/271] fixed softlocks / messages --- include/strings.h | 1 + src/party_menu.c | 31 ++++++++++++++++++++++--------- src/strings.c | 1 + 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/include/strings.h b/include/strings.h index a22aa307bb..f3a86eb464 100644 --- a/include/strings.h +++ b/include/strings.h @@ -498,6 +498,7 @@ extern const u8 gText_12PoofForgotMove[]; extern const u8 gText_StopLearningMove2[]; extern const u8 gText_MoveNotLearned[]; extern const u8 gText_PkmnElevatedToLvVar2[]; +extern const u8 gText_PkmnGainedExp[]; extern const u8 gText_RemoveMailBeforeItem[]; extern const u8 gText_PkmnHoldingItemCantHoldMail[]; extern const u8 gText_MailTransferredFromMailbox[]; diff --git a/src/party_menu.c b/src/party_menu.c index f0069300bf..07d4d9a155 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5004,17 +5004,29 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) } else { + sFinalLevel = GetMonData(mon, MON_DATA_LEVEL, NULL); gPartyMenuUseExitCallback = TRUE; - PlayFanfareByFanfareNum(FANFARE_LEVEL_UP); UpdateMonDisplayInfoAfterRareCandy(gPartyMenu.slotId, mon); RemoveBagItem(gSpecialVar_ItemId, 1); GetMonNickname(mon, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, GetMonData(mon, MON_DATA_LEVEL), STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); - DisplayPartyMenuMessage(gStringVar4, TRUE); - ScheduleBgCopyTilemapToVram(2); - sFinalLevel = GetMonData(mon, MON_DATA_LEVEL, NULL); - gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; + if (sFinalLevel > sInitialLevel) + { + PlayFanfareByFanfareNum(FANFARE_LEVEL_UP); + ConvertIntToDecimalStringN(gStringVar2, GetMonData(mon, MON_DATA_LEVEL), STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); + DisplayPartyMenuMessage(gStringVar4, TRUE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; + } + else + { + PlaySE(SE_USE_ITEM); + gPartyMenuUseExitCallback = FALSE; + StringExpandPlaceholders(gStringVar4, gText_PkmnGainedExp); + DisplayPartyMenuMessage(gStringVar4, FALSE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; + } } } @@ -5047,6 +5059,7 @@ static void Task_DisplayLevelUpStatsPg2(u8 taskId) { PlaySE(SE_SELECT); DisplayLevelUpStatsPg2(taskId); + sInitialLevel += 1; // so the Pokemon doesn't learn a move meant for its previous level gTasks[taskId].func = Task_TryLearnNewMoves; } } @@ -5077,7 +5090,7 @@ static void Task_TryLearnNewMoves(u8 taskId) if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))) { RemoveLevelUpStatsWindow(); - for (; sInitialLevel < sFinalLevel; sInitialLevel++) + for (; sInitialLevel <= sFinalLevel; sInitialLevel++) { SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sInitialLevel); learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE); @@ -5107,7 +5120,7 @@ static void Task_TryLearnNewMoves(u8 taskId) static void Task_TryLearningNextMove(u8 taskId) { u16 result; - for (; sInitialLevel < sFinalLevel; sInitialLevel++) + for (; sInitialLevel <= sFinalLevel; sInitialLevel++) { SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sInitialLevel); result = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], FALSE); diff --git a/src/strings.c b/src/strings.c index 492a9601d2..731cde1a36 100644 --- a/src/strings.c +++ b/src/strings.c @@ -417,6 +417,7 @@ const u8 gText_PkmnRegainhedHealth[] = _("{STR_VAR_1} regained health.{PAUSE_UNT const u8 gText_PkmnBecameHealthy[] = _("{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}"); const u8 gText_MovesPPIncreased[] = _("{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnElevatedToLvVar2[] = _("{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}."); +const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained EXP. POINTS.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnBaseVar2StatIncreased[] = _("{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnFriendlyBaseVar2Fell[] = _("{STR_VAR_1} turned friendly.\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAdoresBaseVar2Fell[] = _("{STR_VAR_1} adores you!\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); From d385b838c8fd6ca32f35a4327dc17f9d2a7434b3 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Mon, 16 May 2022 15:53:42 -0700 Subject: [PATCH 047/271] fixed exp resetting --- src/pokemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index 953278846a..7cb72b37f6 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4895,7 +4895,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov temp1 *= 1000; if (ItemId_GetHoldEffectParam(item) & TEN_THOUSAND) temp1 *= 10000; - dataUnsigned = temp1 + gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL)]; + dataUnsigned = temp1 + GetMonData(mon, MON_DATA_EXP, NULL); if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; } From b197da077f6c14a1108f50aa643c556a12fc071e Mon Sep 17 00:00:00 2001 From: AgustinGDLV <103095241+AgustinGDLV@users.noreply.github.com> Date: Mon, 16 May 2022 16:08:26 -0700 Subject: [PATCH 048/271] Update src/strings.c Co-authored-by: LOuroboros --- src/strings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/strings.c b/src/strings.c index 731cde1a36..edd9522072 100644 --- a/src/strings.c +++ b/src/strings.c @@ -417,7 +417,7 @@ const u8 gText_PkmnRegainhedHealth[] = _("{STR_VAR_1} regained health.{PAUSE_UNT const u8 gText_PkmnBecameHealthy[] = _("{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}"); const u8 gText_MovesPPIncreased[] = _("{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnElevatedToLvVar2[] = _("{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}."); -const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained EXP. POINTS.{PAUSE_UNTIL_PRESS}"); +const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained Exp. Points!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnBaseVar2StatIncreased[] = _("{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnFriendlyBaseVar2Fell[] = _("{STR_VAR_1} turned friendly.\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAdoresBaseVar2Fell[] = _("{STR_VAR_1} adores you!\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); From 2d25cd56b987062357806ca1ba652abe78b89e39 Mon Sep 17 00:00:00 2001 From: AgustinGDLV <103095241+AgustinGDLV@users.noreply.github.com> Date: Mon, 16 May 2022 16:58:08 -0700 Subject: [PATCH 049/271] Apply suggestions from code review Co-authored-by: sneed <56992013+Sneed69@users.noreply.github.com> --- src/pokemon.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 7cb72b37f6..095d7f414b 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4885,9 +4885,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (ItemId_GetHoldEffectParam(item) & FULL_LEVEL) { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + SetMonData(mon, MON_DATA_EXP, &dataUnsigned); + CalculateMonStats(mon); } else { + u32 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; if (ItemId_GetHoldEffectParam(item) & ONE_HUNDRED) temp1 *= 100; @@ -4896,11 +4900,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (ItemId_GetHoldEffectParam(item) & TEN_THOUSAND) temp1 *= 10000; dataUnsigned = temp1 + GetMonData(mon, MON_DATA_EXP, NULL); - if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; + if (dataUnsigned > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) + dataUnsigned = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; + SetMonData(mon, MON_DATA_EXP, &dataUnsigned); + if (dataUnsigned >= gExperienceTables[gBaseStats[species].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]) + CalculateMonStats(mon); } - SetMonData(mon, MON_DATA_EXP, &dataUnsigned); - CalculateMonStats(mon); retVal = FALSE; } From e9669ccbfeaef5cfd03ae37298af0f88dd8d311a Mon Sep 17 00:00:00 2001 From: AgustinGDLV <103095241+AgustinGDLV@users.noreply.github.com> Date: Mon, 16 May 2022 17:41:18 -0700 Subject: [PATCH 050/271] Update src/pokemon.c Co-authored-by: sneed <56992013+Sneed69@users.noreply.github.com> --- src/pokemon.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pokemon.c b/src/pokemon.c index 095d7f414b..d0f4f8a717 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4892,6 +4892,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov { u32 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + gBattleScripting.levelUpHP = 0; // Prevents reviving mons that don't level up. temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; if (ItemId_GetHoldEffectParam(item) & ONE_HUNDRED) temp1 *= 100; From cbe8f3000104a841132dbb61f7109ea6bd9d76b2 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Sat, 21 May 2022 12:54:02 +0200 Subject: [PATCH 051/271] added FLAG_ADVENTURE_STARTED to cheat start --- data/scripts/debug.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 70401564e9..4ced7d9716 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -15,6 +15,7 @@ Debug_CheatStart:: setflag FLAG_SYS_POKEMON_GET setflag FLAG_RESCUED_BIRCH setflag FLAG_HIDE_ROUTE_101_BIRCH_ZIGZAGOON_BATTLE + setflag FLAG_ADVENTURE_STARTED clearflag FLAG_HIDE_LITTLEROOT_TOWN_BIRCHS_LAB_BIRCH setflag FLAG_HIDE_ROUTE_101_BIRCH_STARTERS_BAG setvar VAR_BIRCH_LAB_STATE, 2 From d0a2be963068072fbdd59f5608cb39dbb0f32c42 Mon Sep 17 00:00:00 2001 From: Sneed69 Date: Sun, 22 May 2022 01:44:51 +0300 Subject: [PATCH 052/271] weather forms fixes and config --- asm/macros/battle_script.inc | 4 +- data/battle_anim_scripts.s | 12 +-- data/battle_scripts_1.s | 27 ++++--- include/battle_scripts.h | 2 +- include/battle_util.h | 2 +- include/constants/battle_config.h | 1 + include/constants/battle_script_commands.h | 5 +- src/battle_script_commands.c | 40 ++++++++-- src/battle_util.c | 93 ++++++++++++++++++---- 9 files changed, 139 insertions(+), 47 deletions(-) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index b434332054..dc258e9aae 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1186,11 +1186,11 @@ .byte 0xe5 .endm - .macro docastformchangeanimation + .macro doweatherformchangeanimation .byte 0xe6 .endm - .macro trycastformdatachange + .macro tryweatherformdatachange .byte 0xe7 .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index d76aff05a6..098419c008 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -796,7 +796,7 @@ gBattleAnims_StatusConditions:: .align 2 gBattleAnims_General:: - .4byte General_CastformChange @ B_ANIM_CASTFORM_CHANGE + .4byte General_WeatherFormChange @ B_ANIM_CASTFORM_CHANGE .4byte General_StatsChange @ B_ANIM_STATS_CHANGE .4byte General_SubstituteFade @ B_ANIM_SUBSTITUTE_FADE .4byte General_SubstituteAppear @ B_ANIM_SUBSTITUTE_APPEAR @@ -24152,11 +24152,11 @@ Status_Nightmare: Status_Powder: end -General_CastformChange: +General_WeatherFormChange: createvisualtask AnimTask_IsMonInvisible, 2 - jumpreteq TRUE, CastformChangeSkipAnim - goto CastformChangeContinue -CastformChangeContinue: + jumpreteq TRUE, WeatherFormChangeSkipAnim + goto WeatherFormChangeContinue +WeatherFormChangeContinue: monbg ANIM_ATTACKER playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 @@ -24164,7 +24164,7 @@ CastformChangeContinue: waitforvisualfinish clearmonbg ANIM_ATTACKER end -CastformChangeSkipAnim: +WeatherFormChangeSkipAnim: createvisualtask AnimTask_CastformGfxDataChange, 2, 1 end diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a9c15040d3..c79ba5e9c2 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6511,11 +6511,9 @@ BattleScript_LearnMoveReturn:: BattleScript_RainContinuesOrEnds:: printfromtable gRainContinuesStringIds waitmessage B_WAIT_TIME_LONG - jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainEnds + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES - end2 -BattleScript_RainEnds:: - call BattleScript_WeatherFormChanges +BattleScript_RainContinuesOrEndsEnd:: end2 BattleScript_DamagingWeatherContinues:: @@ -6554,7 +6552,6 @@ BattleScript_DamagingWeatherContinuesEnd:: BattleScript_SandStormHailEnds:: printfromtable gSandStormHailEndStringIds waitmessage B_WAIT_TIME_LONG - call BattleScript_WeatherFormChanges end2 BattleScript_SunlightContinues:: @@ -6566,7 +6563,6 @@ BattleScript_SunlightContinues:: BattleScript_SunlightFaded:: printstring STRINGID_SUNLIGHTFADED waitmessage B_WAIT_TIME_LONG - call BattleScript_WeatherFormChanges end2 BattleScript_OverworldWeatherStarts:: @@ -8167,19 +8163,28 @@ BattleScript_ShedSkinActivates:: BattleScript_WeatherFormChanges:: setbyte sBATTLER, 0 BattleScript_WeatherFormChangesLoop:: - trycastformdatachange + tryweatherformdatachange addbyte sBATTLER, 1 jumpifbytenotequal sBATTLER, gBattlersCount, BattleScript_WeatherFormChangesLoop return -BattleScript_CastformChange:: - call BattleScript_DoCastformChange +BattleScript_WeatherFormChange:: + call BattleScript_DoWeatherFormChange end3 -BattleScript_DoCastformChange:: +BattleScript_DoWeatherFormChange:: copybyte gBattlerAbility, sBATTLER + jumpifspecies BS_SCRIPTING, SPECIES_CASTFORM, BattleScript_DoWeatherFormChange_ForecastCheck +BattleScript_DoWeatherFormChange_FlowerGiftCheck: + jumpifability BS_SCRIPTING, ABILITY_FLOWER_GIFT, BattleScript_DoWeatherFormChange_PopUp + goto BattleScript_DoWeatherFormChange_AfterPopUp +BattleScript_DoWeatherFormChange_ForecastCheck: + jumpifability BS_SCRIPTING, ABILITY_FORECAST, BattleScript_DoWeatherFormChange_PopUp + goto BattleScript_DoWeatherFormChange_AfterPopUp +BattleScript_DoWeatherFormChange_PopUp: call BattleScript_AbilityPopUp - docastformchangeanimation +BattleScript_DoWeatherFormChange_AfterPopUp: + doweatherformchangeanimation waitstate printstring STRINGID_PKMNTRANSFORMED waitmessage B_WAIT_TIME_LONG diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 4134a87dcf..d44598789f 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -151,7 +151,7 @@ extern const u8 BattleScript_SandstreamActivates[]; extern const u8 BattleScript_ShedSkinActivates[]; extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChangesLoop[]; -extern const u8 BattleScript_CastformChange[]; +extern const u8 BattleScript_WeatherFormChange[]; extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_DroughtActivates[]; diff --git a/include/battle_util.h b/include/battle_util.h index f1864f0967..4ebe3c8d4e 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -16,7 +16,7 @@ #define ABILITYEFFECT_MOVE_END_ATTACKER 4 #define ABILITYEFFECT_MOVE_END 5 #define ABILITYEFFECT_IMMUNITY 6 -#define ABILITYEFFECT_FORECAST 7 +#define ABILITYEFFECT_WEATHER_FORM 7 #define ABILITYEFFECT_SYNCHRONIZE 8 #define ABILITYEFFECT_ATK_SYNCHRONIZE 9 #define ABILITYEFFECT_INTIMIDATE1 10 diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 74ac9e1299..e68f40fc54 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -190,6 +190,7 @@ #define B_SYNCHRONIZE_TOXIC GEN_8 // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. #define B_UPDATED_INTIMIDATE GEN_8 // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. #define B_OBLIVIOUS_TAUNT GEN_7 // In Gen6+, Pokémon with Oblivious can't be taunted. +#define B_WEATHER_FORMS GEN_5 // In Gen5+, Castform and Cherrim revert to their base form upon losing their respective ability. Cherrim needs Flower Gift to swap forms. // Item settings #define B_HP_BERRIES GEN_7 // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index da44714e21..16d911e6fa 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -310,8 +310,9 @@ #define MOVEEND_PICKPOCKET 27 #define MOVEEND_DANCER 28 #define MOVEEND_EMERGENCY_EXIT 29 -#define MOVEEND_CLEAR_BITS 30 -#define MOVEEND_COUNT 31 +#define MOVEEND_WEATHER_FORM 30 +#define MOVEEND_CLEAR_BITS 31 +#define MOVEEND_COUNT 32 // switch cases #define B_SWITCH_NORMAL 0 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 15915c71a6..7ba9ad1766 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -537,8 +537,8 @@ static void Cmd_switchoutabilities(void); static void Cmd_jumpifhasnohp(void); static void Cmd_getsecretpowereffect(void); static void Cmd_pickup(void); -static void Cmd_docastformchangeanimation(void); -static void Cmd_trycastformdatachange(void); +static void Cmd_doweatherformchangeanimation(void); +static void Cmd_tryweatherformdatachange(void); static void Cmd_settypebasedhalvers(void); static void Cmd_jumpifsubstituteblocks(void); static void Cmd_tryrecycleitem(void); @@ -796,8 +796,8 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_jumpifhasnohp, //0xE3 Cmd_getsecretpowereffect, //0xE4 Cmd_pickup, //0xE5 - Cmd_docastformchangeanimation, //0xE6 - Cmd_trycastformdatachange, //0xE7 + Cmd_doweatherformchangeanimation, //0xE6 + Cmd_tryweatherformdatachange, //0xE7 Cmd_settypebasedhalvers, //0xE8 Cmd_jumpifsubstituteblocks, //0xE9 Cmd_tryrecycleitem, //0xEA @@ -5601,6 +5601,30 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; + case MOVEEND_WEATHER_FORM: + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + switch (gBattleMons[i].species) + { + case SPECIES_CASTFORM: + case SPECIES_CHERRIM: +#ifdef POKEMON_EXPANSION + case SPECIES_CASTFORM_RAINY: + case SPECIES_CASTFORM_SNOWY: + case SPECIES_CASTFORM_SUNNY: + case SPECIES_CHERRIM_SUNSHINE: +#endif + effect = TryWeatherFormChange(i); + if (effect) + { + BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); + gBattleScripting.battler = i; + gBattleStruct->formToChangeInto = effect - 1; + } + } + } + gBattleScripting.moveendState++; + break; case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits. if (gSpecialStatuses[gBattlerAttacker].instructedChosenTarget) *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].instructedChosenTarget & 0x3; @@ -6415,7 +6439,7 @@ static void Cmd_switchineffects(void) || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) || AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE2, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0) - || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) + || AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0)) return; gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED); @@ -13267,7 +13291,7 @@ static void Cmd_pickup(void) gBattlescriptCurrInstr++; } -static void Cmd_docastformchangeanimation(void) +static void Cmd_doweatherformchangeanimation(void) { gActiveBattler = gBattleScripting.battler; @@ -13280,7 +13304,7 @@ static void Cmd_docastformchangeanimation(void) gBattlescriptCurrInstr++; } -static void Cmd_trycastformdatachange(void) +static void Cmd_tryweatherformdatachange(void) { u8 form; @@ -13288,7 +13312,7 @@ static void Cmd_trycastformdatachange(void) form = TryWeatherFormChange(gBattleScripting.battler); if (form) { - BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); *(&gBattleStruct->formToChangeInto) = form - 1; } } diff --git a/src/battle_util.c b/src/battle_util.c index d0ff7c5beb..03e6bc2405 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2104,6 +2104,7 @@ enum ENDTURN_ION_DELUGE, ENDTURN_FAIRY_LOCK, ENDTURN_RETALIATE, + ENDTURN_WEATHER_FORM, ENDTURN_FIELD_COUNT, }; @@ -2551,6 +2552,10 @@ u8 DoFieldEndTurnEffects(void) gSideTimers[B_SIDE_OPPONENT].retaliateTimer--; gBattleStruct->turnCountersTracker++; break; + case ENDTURN_WEATHER_FORM: + AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0); + gBattleStruct->turnCountersTracker++; + break; case ENDTURN_FIELD_COUNT: effect++; break; @@ -3902,21 +3907,49 @@ u8 TryWeatherFormChange(u8 battler) bool32 weatherEffect = WEATHER_HAS_EFFECT; u16 holdEffect = GetBattlerHoldEffect(battler, TRUE); - if (gBattleMons[battler].species == SPECIES_CASTFORM) + switch (gBattleMons[battler].species) { + case SPECIES_CASTFORM: +#ifdef POKEMON_EXPANSION + case SPECIES_CASTFORM_RAINY: + case SPECIES_CASTFORM_SNOWY: + case SPECIES_CASTFORM_SUNNY: +#endif +#if B_WEATHER_FORMS >= GEN_5 + if (gBattleMons[battler].hp == 0) + { + ret = 0; // No change + } + else if (GetBattlerAbility(battler) != ABILITY_FORECAST || !weatherEffect) + { + if (!IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) + { + SET_BATTLER_TYPE(battler, TYPE_NORMAL); + ret = CASTFORM_NORMAL + 1; + } + else + { + ret = 0; // No change + } + } +#else if (GetBattlerAbility(battler) != ABILITY_FORECAST || gBattleMons[battler].hp == 0) { ret = 0; // No change } - else if (!weatherEffect && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) - { - SET_BATTLER_TYPE(battler, TYPE_NORMAL); - ret = CASTFORM_NORMAL + 1; - } else if (!weatherEffect) { - ret = 0; // No change + if (!IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL)) + { + SET_BATTLER_TYPE(battler, TYPE_NORMAL); + ret = CASTFORM_NORMAL + 1; + } + else + { + ret = 0; // No change + } } +#endif else if (holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || (!(gBattleWeather & (B_WEATHER_RAIN | B_WEATHER_SUN | B_WEATHER_HAIL)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL))) { SET_BATTLER_TYPE(battler, TYPE_NORMAL); @@ -3937,15 +3970,25 @@ u8 TryWeatherFormChange(u8 battler) SET_BATTLER_TYPE(battler, TYPE_ICE); ret = CASTFORM_ICE + 1; } - } - else if (gBattleMons[battler].species == SPECIES_CHERRIM) - { - if (GetBattlerAbility(battler) != ABILITY_FLOWER_GIFT || gBattleMons[battler].hp == 0) + break; + case SPECIES_CHERRIM: +#ifdef POKEMON_EXPANSION + case SPECIES_CHERRIM_SUNSHINE: +#endif + if (gBattleMons[battler].hp == 0) ret = 0; // No change +#if B_WEATHER_FORMS >= GEN_5 + if (GetBattlerAbility(battler) != ABILITY_FLOWER_GIFT) + if (gBattleMonForms[battler] != 0) + ret = CHERRIM_OVERCAST + 1; + else + ret = 0; // No change +#endif else if (gBattleMonForms[battler] == 0 && weatherEffect && holdEffect != HOLD_EFFECT_UTILITY_UMBRELLA && gBattleWeather & B_WEATHER_SUN) ret = CHERRIM_SUNSHINE + 1; else if (gBattleMonForms[battler] != 0 && (!weatherEffect || holdEffect == HOLD_EFFECT_UTILITY_UMBRELLA || !(gBattleWeather & B_WEATHER_SUN))) ret = CHERRIM_OVERCAST + 1; + break; } return ret; @@ -4543,11 +4586,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_FORECAST: +#if B_WEATHER_FORMS >= GEN_5 case ABILITY_FLOWER_GIFT: +#else + TRY_WEATHER_FORM: +#endif effect = TryWeatherFormChange(battler); if (effect) { - BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); *(&gBattleStruct->formToChangeInto) = effect - 1; } break; @@ -4623,6 +4670,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect++; } break; +#if B_WEATHER_FORMS < GEN_5 + default: + if (gBattleMons[battler].species == SPECIES_CHERRIM) + goto TRY_WEATHER_FORM; + break; +#endif } break; case ABILITYEFFECT_ENDTURN: // 1 @@ -5627,20 +5680,28 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } } break; - case ABILITYEFFECT_FORECAST: // 6 + case ABILITYEFFECT_WEATHER_FORM: // 6 for (battler = 0; battler < gBattlersCount; battler++) { - u16 battlerAbility = GetBattlerAbility(battler); - if (battlerAbility == ABILITY_FORECAST || battlerAbility == ABILITY_FLOWER_GIFT) + switch (gBattleMons[battler].species) { + case SPECIES_CASTFORM: + case SPECIES_CHERRIM: +#ifdef POKEMON_EXPANSION + case SPECIES_CASTFORM_RAINY: + case SPECIES_CASTFORM_SNOWY: + case SPECIES_CASTFORM_SUNNY: + case SPECIES_CHERRIM_SUNSHINE: +#endif effect = TryWeatherFormChange(battler); if (effect) { - BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_WeatherFormChange); gBattleScripting.battler = battler; gBattleStruct->formToChangeInto = effect - 1; return effect; } + break; } } break; From cb1c6ffbd20aac331fba8eb27da6937d001a9885 Mon Sep 17 00:00:00 2001 From: sneed Date: Sun, 22 May 2022 03:46:39 +0300 Subject: [PATCH 053/271] comment out placeholders --- src/battle_util.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 03e6bc2405..4db8792364 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3910,11 +3910,10 @@ u8 TryWeatherFormChange(u8 battler) switch (gBattleMons[battler].species) { case SPECIES_CASTFORM: -#ifdef POKEMON_EXPANSION +/* Placeholder case SPECIES_CASTFORM_RAINY: case SPECIES_CASTFORM_SNOWY: - case SPECIES_CASTFORM_SUNNY: -#endif + case SPECIES_CASTFORM_SUNNY:*/ #if B_WEATHER_FORMS >= GEN_5 if (gBattleMons[battler].hp == 0) { @@ -3972,9 +3971,7 @@ u8 TryWeatherFormChange(u8 battler) } break; case SPECIES_CHERRIM: -#ifdef POKEMON_EXPANSION - case SPECIES_CHERRIM_SUNSHINE: -#endif +// case SPECIES_CHERRIM_SUNSHINE: if (gBattleMons[battler].hp == 0) ret = 0; // No change #if B_WEATHER_FORMS >= GEN_5 From fe42eacdf0494637112356294f9af70ba5d8da02 Mon Sep 17 00:00:00 2001 From: sneed Date: Sun, 22 May 2022 05:23:06 +0300 Subject: [PATCH 054/271] tabs over spaces --- data/battle_scripts_1.s | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index c79ba5e9c2..0afe8837a4 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8176,11 +8176,11 @@ BattleScript_DoWeatherFormChange:: copybyte gBattlerAbility, sBATTLER jumpifspecies BS_SCRIPTING, SPECIES_CASTFORM, BattleScript_DoWeatherFormChange_ForecastCheck BattleScript_DoWeatherFormChange_FlowerGiftCheck: - jumpifability BS_SCRIPTING, ABILITY_FLOWER_GIFT, BattleScript_DoWeatherFormChange_PopUp - goto BattleScript_DoWeatherFormChange_AfterPopUp + jumpifability BS_SCRIPTING, ABILITY_FLOWER_GIFT, BattleScript_DoWeatherFormChange_PopUp + goto BattleScript_DoWeatherFormChange_AfterPopUp BattleScript_DoWeatherFormChange_ForecastCheck: - jumpifability BS_SCRIPTING, ABILITY_FORECAST, BattleScript_DoWeatherFormChange_PopUp - goto BattleScript_DoWeatherFormChange_AfterPopUp + jumpifability BS_SCRIPTING, ABILITY_FORECAST, BattleScript_DoWeatherFormChange_PopUp + goto BattleScript_DoWeatherFormChange_AfterPopUp BattleScript_DoWeatherFormChange_PopUp: call BattleScript_AbilityPopUp BattleScript_DoWeatherFormChange_AfterPopUp: From 5b0afffd91cfbb1145163e33ffe729d8a200ad71 Mon Sep 17 00:00:00 2001 From: sneed Date: Sun, 22 May 2022 13:10:51 +0300 Subject: [PATCH 055/271] popup and flower gift description fixes --- data/battle_scripts_1.s | 2 ++ src/data/text/abilities.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 0afe8837a4..ba748258b0 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8174,10 +8174,12 @@ BattleScript_WeatherFormChange:: BattleScript_DoWeatherFormChange:: copybyte gBattlerAbility, sBATTLER +.if B_WEATHER_FORMS >= GEN_5 jumpifspecies BS_SCRIPTING, SPECIES_CASTFORM, BattleScript_DoWeatherFormChange_ForecastCheck BattleScript_DoWeatherFormChange_FlowerGiftCheck: jumpifability BS_SCRIPTING, ABILITY_FLOWER_GIFT, BattleScript_DoWeatherFormChange_PopUp goto BattleScript_DoWeatherFormChange_AfterPopUp +.endif BattleScript_DoWeatherFormChange_ForecastCheck: jumpifability BS_SCRIPTING, ABILITY_FORECAST, BattleScript_DoWeatherFormChange_PopUp goto BattleScript_DoWeatherFormChange_AfterPopUp diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h index cdc3276082..ac11b9de8b 100644 --- a/src/data/text/abilities.h +++ b/src/data/text/abilities.h @@ -119,7 +119,7 @@ static const u8 sHoneyGatherDescription[] = _("May gather Honey."); static const u8 sFriskDescription[] = _("Checks a foe's item."); static const u8 sRecklessDescription[] = _("Boosts moves with recoil."); static const u8 sMultitypeDescription[] = _("Changes type to its Plate."); -static const u8 sFlowerGiftDescription[] = _("Transforms in sunshine."); +static const u8 sFlowerGiftDescription[] = _("Allies power up in sunshine."); static const u8 sBadDreamsDescription[] = _("Damages sleeping Pokémon."); static const u8 sPickpocketDescription[] = _("Steals the foe's held item."); static const u8 sSheerForceDescription[] = _("Trades effects for power."); From aa5c6a3f0126bf693b84cb2ce6ae4a271dd45148 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 19 Jun 2022 16:43:22 -0300 Subject: [PATCH 056/271] Implemented affection-now-friendship mechanics --- data/battle_anim_scripts.s | 12 ++++++ data/battle_scripts_1.s | 55 +++++++++++++++++++++++++++ include/battle.h | 1 + include/battle_scripts.h | 2 + include/battle_util.h | 1 + include/constants/battle.h | 21 +++++----- include/constants/battle_anim.h | 1 + include/constants/battle_config.h | 1 + include/constants/battle_string_ids.h | 8 +++- src/battle_message.c | 12 ++++++ src/battle_script_commands.c | 54 +++++++++++++++++++++++++- src/battle_util.c | 37 ++++++++++++++++++ 12 files changed, 193 insertions(+), 12 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index d76aff05a6..1ea6fc2b4d 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -831,6 +831,7 @@ gBattleAnims_General:: .4byte General_AquaRingHeal @ B_ANIM_AQUA_RING_HEAL .4byte General_BeakBlastSetUp @ B_ANIM_BEAK_BLAST_SETUP .4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP + .4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON .align 2 gBattleAnims_Special:: @@ -24774,6 +24775,17 @@ PrimalReversionParticles: delay 3 return +General_AffectionHangedOn:: @ Shameless copy of General_HangedOn + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, RGB_RED + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 + waitforvisualfinish + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, RGB_RED + waitforvisualfinish + delay 6 + createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 + end + SnatchMoveTrySwapFromSubstitute: createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 jumprettrue SnatchMoveSwapSubstituteForMon diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index a9c15040d3..80df7a9943 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -412,6 +412,61 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectCourtChange @ EFFECT_COURT_CHANGE .4byte BattleScript_EffectSteelBeam @ EFFECT_STEEL_BEAM +BattleScript_AffectionBasedEndurance:: + playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON + printstring STRINGID_TARGETTOUGHEDITOUT + waitmessage B_WAIT_TIME_LONG + return + +BattleScript_AffectionBasedStatusHeal:: + jumpifstatus BS_ATTACKER, STATUS1_POISON, BattleScript_AffectionBasedStatusHeal_Poison + jumpifstatus BS_ATTACKER, STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatusHeal_Poison + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_AffectionBasedStatusHeal_Sleep + jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatusHeal_Paralysis + jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatusHeal_Burn + jumpifstatus BS_ATTACKER, STATUS1_FREEZE, BattleScript_AffectionBasedStatusHeal_Freeze + end2 +BattleScript_AffectionBasedStatusHeal_Poison: + printstring STRINGID_ATTACKEREXPELLEDTHEPOISON + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 +BattleScript_AffectionBasedStatusHeal_Sleep: + printstring STRINGID_ATTACKERSHOOKITSELFAWAKE + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 +BattleScript_AffectionBasedStatusHeal_Paralysis: + printstring STRINGID_ATTACKERBROKETHROUGHPARALYSIS + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 +BattleScript_AffectionBasedStatusHeal_Burn: + printstring STRINGID_ATTACKERHEALEDITSBURN + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 +BattleScript_AffectionBasedStatusHeal_Freeze: + printstring STRINGID_ATTACKERMELTEDTHEICE + waitmessage B_WAIT_TIME_LONG + clearstatus BS_ATTACKER + waitstate + updatestatusicon BS_ATTACKER + waitstate + end2 + BattleScript_EffectSteelBeam:: attackcanceler attackstring diff --git a/include/battle.h b/include/battle.h index ea556c012a..6d6dc46959 100644 --- a/include/battle.h +++ b/include/battle.h @@ -184,6 +184,7 @@ struct SpecialStatus u8 physicalBattlerId; u8 specialBattlerId; u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. + bool8 affectionEndured:1; }; struct SideTimer diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 4134a87dcf..071a0846af 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -420,5 +420,7 @@ extern const u8 BattleScript_MagicianActivates[]; extern const u8 BattleScript_BeakBlastSetUp[]; extern const u8 BattleScript_BeakBlastBurn[]; extern const u8 BattleScript_DefDownSpeedUp[]; +extern const u8 BattleScript_AffectionBasedStatusHeal[]; +extern const u8 BattleScript_AffectionBasedEndurance[]; #endif // GUARD_BATTLE_SCRIPTS_H diff --git a/include/battle_util.h b/include/battle_util.h index f1864f0967..0f982423ee 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -189,5 +189,6 @@ bool32 CanBeParalyzed(u8 battlerId); bool32 CanBeFrozen(u8 battlerId); bool32 CanBeConfused(u8 battlerId); bool32 IsBattlerTerrainAffected(u8 battlerId, u32 terrainFlag); +u32 GetMonFriendshipScore(struct Pokemon *pokemon); #endif // GUARD_BATTLE_UTIL_H diff --git a/include/constants/battle.h b/include/constants/battle.h index d651dab189..6a078f7a18 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -248,16 +248,17 @@ #define STATUS_FIELD_TERRAIN_ANY (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN) // Flags describing move's result -#define MOVE_RESULT_MISSED (1 << 0) -#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1) -#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2) -#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3) -#define MOVE_RESULT_ONE_HIT_KO (1 << 4) -#define MOVE_RESULT_FAILED (1 << 5) -#define MOVE_RESULT_FOE_ENDURED (1 << 6) -#define MOVE_RESULT_FOE_HUNG_ON (1 << 7) -#define MOVE_RESULT_STURDIED (1 << 8) -#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) +#define MOVE_RESULT_MISSED (1 << 0) +#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1) +#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2) +#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3) +#define MOVE_RESULT_ONE_HIT_KO (1 << 4) +#define MOVE_RESULT_FAILED (1 << 5) +#define MOVE_RESULT_FOE_ENDURED (1 << 6) +#define MOVE_RESULT_FOE_HUNG_ON (1 << 7) +#define MOVE_RESULT_STURDIED (1 << 8) +#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) +#define MOVE_RESULT_FOE_ENDURED_AFFECTION (1 << 9) // Battle Weather flags #define B_WEATHER_RAIN_TEMPORARY (1 << 0) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index bddb727fd7..8e34fbcc09 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -534,6 +534,7 @@ #define B_ANIM_AQUA_RING_HEAL 32 #define B_ANIM_BEAK_BLAST_SETUP 33 #define B_ANIM_SHELL_TRAP_SETUP 34 +#define B_ANIM_AFFECTION_HANGED_ON 35 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 74ac9e1299..0a58ba94d8 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -254,6 +254,7 @@ #define B_MULTI_BATTLE_WHITEOUT GEN_8 // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. #define B_EVOLUTION_AFTER_WHITEOUT GEN_6 // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. #define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) +#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. // Animation Settings #define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle. diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 4eff91c857..bfc0472994 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -613,8 +613,14 @@ #define STRINGID_METEORBEAMCHARGING 611 #define STRINGID_HEATUPBEAK 612 #define STRINGID_COURTCHANGE 613 +#define STRINGID_ATTACKEREXPELLEDTHEPOISON 614 +#define STRINGID_ATTACKERSHOOKITSELFAWAKE 615 +#define STRINGID_ATTACKERBROKETHROUGHPARALYSIS 616 +#define STRINGID_ATTACKERHEALEDITSBURN 617 +#define STRINGID_ATTACKERMELTEDTHEICE 618 +#define STRINGID_TARGETTOUGHEDITOUT 619 -#define BATTLESTRINGS_COUNT 614 +#define BATTLESTRINGS_COUNT 620 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, diff --git a/src/battle_message.c b/src/battle_message.c index 8cf9a508b2..dae30f176c 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -738,9 +738,21 @@ static const u8 sText_TargetTooHeavy[] = _("But the target\nwas too heavy!"); static const u8 sText_MeteorBeamCharging[] = _("{B_ATK_NAME_WITH_PREFIX} is overflowing\nwith space energy!"); static const u8 sText_HeatingUpBeak[] = _("{B_ATK_NAME_WITH_PREFIX} started\nheating up its beak!"); static const u8 sText_CourtChange[] = _("{B_ATK_NAME_WITH_PREFIX} swapped the battle\neffects affecting each side!"); +static const u8 sText_AttackerExpelledThePoison[] = _("{B_ATK_NAME_WITH_PREFIX} managed to\nexpel the poison!"); +static const u8 sText_AttackerShookItselfAwake[] = _("{B_ATK_NAME_WITH_PREFIX} shook itself awake!"); +static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREFIX} gathered all its energy\nto overcome its paralysis!"); +static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); +static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); +static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_TARGETTOUGHEDITOUT - BATTLESTRINGS_TABLE_START] = sText_TargetToughedItOut, + [STRINGID_ATTACKERMELTEDTHEICE - BATTLESTRINGS_TABLE_START] = sText_AttackerMeltedTheIce, + [STRINGID_ATTACKERHEALEDITSBURN - BATTLESTRINGS_TABLE_START] = sText_AttackerHealedItsBurn, + [STRINGID_ATTACKERBROKETHROUGHPARALYSIS - BATTLESTRINGS_TABLE_START] = sText_AttackerBrokeThroughParalysis, + [STRINGID_ATTACKERSHOOKITSELFAWAKE - BATTLESTRINGS_TABLE_START] = sText_AttackerShookItselfAwake, + [STRINGID_ATTACKEREXPELLEDTHEPOISON - BATTLESTRINGS_TABLE_START] = sText_AttackerExpelledThePoison, [STRINGID_COURTCHANGE - BATTLESTRINGS_TABLE_START] = sText_CourtChange, [STRINGID_HEATUPBEAK - BATTLESTRINGS_TABLE_START] = sText_HeatingUpBeak, [STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 15915c71a6..1d42e55116 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1719,6 +1719,13 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move) if (gFieldStatuses & STATUS_FIELD_GRAVITY) calc = (calc * 5) / 3; // 1.66 Gravity acc boost +#if B_AFFECTION_MECHANICS == TRUE + // With high affection/friendship there's a chance to evade a move by substracting 10% of its accuracy. + // I can't find exact information about that chance, so I'm just gonna write it as a 20% chance for now. + if (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[battlerDef]]) >= 4 && (Random() % 100) <= 20) + calc = (calc * 90) / 100; +#endif + return calc; } @@ -1885,7 +1892,10 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi + (holdEffectAtk == HOLD_EFFECT_SCOPE_LENS) + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) - + (abilityAtk == ABILITY_SUPER_LUCK); + + (abilityAtk == ABILITY_SUPER_LUCK) + #if B_AFFECTION_MECHANICS == TRUE + *= 2 (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= 5); + #endif if (critChance >= ARRAY_COUNT(sCriticalHitChance)) critChance = ARRAY_COUNT(sCriticalHitChance) - 1; @@ -1983,12 +1993,27 @@ static void Cmd_adjustdamage(void) RecordAbilityBattle(gBattlerTarget, ABILITY_STURDY); gSpecialStatuses[gBattlerTarget].sturdied = TRUE; } +#if B_AFFECTION_MECHANICS == TRUE + else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) >= 3) + { + if ((GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 6 && (Random() % 100) < 25) + || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 5 && (Random() % 100) < 20) + || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 4 && (Random() % 100) < 15) + || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 3 && (Random() % 100) < 10)) + gSpecialStatuses[gBattlerTarget].affectionEndured = TRUE; + } +#endif if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded && !gSpecialStatuses[gBattlerTarget].focusSashed +#if B_AFFECTION_MECHANICS == TRUE + && !gSpecialStatuses[gBattlerTarget].sturdied + && !gSpecialStatuses[gBattlerTarget].affectionEndured) +#else && !gSpecialStatuses[gBattlerTarget].sturdied) +#endif goto END; // Handle reducing the dmg to 1 hp. @@ -2008,6 +2033,12 @@ static void Cmd_adjustdamage(void) gMoveResultFlags |= MOVE_RESULT_STURDIED; gLastUsedAbility = ABILITY_STURDY; } +#if B_AFFECTION_MECHANICS == TRUE + else if (gSpecialStatuses[gBattlerTarget].affectionEndured) + { + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED_AFFECTION; + } +#endif END: gBattlescriptCurrInstr++; @@ -2463,6 +2494,16 @@ static void Cmd_resultmessage(void) { stringId = STRINGID_BUTITFAILED; } + #if B_AFFECTION_MECHANICS == TRUE + else if (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED_AFFECTION) + { + gSpecialStatuses[gBattlerTarget].affectionEndured = FALSE; + gMoveResultFlags &= ~MOVE_RESULT_FOE_ENDURED_AFFECTION; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AffectionBasedEndurance; + return; + } + #endif else { gBattleCommunication[MSG_DISPLAY] = 0; @@ -4008,6 +4049,10 @@ static void Cmd_getexp(void) gBattleMoveDamage = value + 1; } #endif + #if B_AFFECTION_MECHANICS == TRUE + if (GetMonFriendshipScore(&gPlayerParty[gBattleStruct->expGetterMonId]) >= 2) + gBattleMoveDamage = (gBattleMoveDamage * 120) / 100; + #endif if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId])) { @@ -10932,6 +10977,13 @@ static void Cmd_tryKO(void) gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON; gLastUsedItem = gBattleMons[gBattlerTarget].item; } + #if B_AFFECTION_MECHANICS == TRUE + else if (gSpecialStatuses[gBattlerTarget].affectionEndured) + { + gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1; + gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED_AFFECTION; + } + #endif else { gBattleMoveDamage = gBattleMons[gBattlerTarget].hp; diff --git a/src/battle_util.c b/src/battle_util.c index ebd7917d47..89f2b86fab 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2077,6 +2077,24 @@ void TryToRevertMimicry(void) } } +u32 GetMonFriendshipScore(struct Pokemon *pokemon) // Based on GetLeadMonFriendshipScore +{ + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255) + return 6; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) + return 5; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) + return 4; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) + return 3; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) + return 2; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) + return 1; + + return 0; +} + enum { ENDTURN_ORDER, @@ -2105,6 +2123,9 @@ enum ENDTURN_ION_DELUGE, ENDTURN_FAIRY_LOCK, ENDTURN_RETALIATE, +#if B_AFFECTION_MECHANICS == TRUE + ENDTURN_STATUS_HEAL, +#endif ENDTURN_FIELD_COUNT, }; @@ -2552,6 +2573,22 @@ u8 DoFieldEndTurnEffects(void) gSideTimers[B_SIDE_OPPONENT].retaliateTimer--; gBattleStruct->turnCountersTracker++; break; + #if B_AFFECTION_MECHANICS == TRUE + case ENDTURN_STATUS_HEAL: + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) + { + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER + && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= 4 + && (Random() % 100 < 20)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); + break; + } + } + gBattleStruct->turnCountersTracker++; + break; + #endif case ENDTURN_FIELD_COUNT: effect++; break; From deef09112f75f0d6de4bc32e9bb35776d42a7edc Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 22 Jun 2022 08:42:31 -0300 Subject: [PATCH 057/271] Corrected usage of B_AFFECTION_MECHANICS in CalcCritChanceStage --- src/battle_script_commands.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 1d42e55116..4e238c54d2 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1892,9 +1892,11 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi + (holdEffectAtk == HOLD_EFFECT_SCOPE_LENS) + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) - + (abilityAtk == ABILITY_SUPER_LUCK) #if B_AFFECTION_MECHANICS == TRUE + + (abilityAtk == ABILITY_SUPER_LUCK) *= 2 (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= 5); + #else + + (abilityAtk == ABILITY_SUPER_LUCK); #endif if (critChance >= ARRAY_COUNT(sCriticalHitChance)) From 8c88e8a9b751312983cf6ee5e9e9c03ff44bb377 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Sun, 3 Jul 2022 17:15:37 +0700 Subject: [PATCH 058/271] Legends Arceus Pokemon 95% Finished --- graphics/pokemon/arcanine/hisuian/icon.png | Bin 0 -> 427 bytes graphics/pokemon/avalugg/hisuian/icon.png | Bin 0 -> 442 bytes graphics/pokemon/basculegion/icon.png | Bin 0 -> 509 bytes graphics/pokemon/basculegion/iconf.png | Bin 0 -> 474 bytes .../pokemon/basculin/white_striped/icon.png | Bin 0 -> 376 bytes graphics/pokemon/braviary/hisuian/icon.png | Bin 0 -> 484 bytes graphics/pokemon/calyrex/icon.png | Bin 0 -> 338 bytes graphics/pokemon/decidueye/hisuian/icon.png | Bin 0 -> 410 bytes graphics/pokemon/dialga/origin/icon.png | Bin 0 -> 475 bytes graphics/pokemon/electrode/hisuian/icon.png | Bin 0 -> 277 bytes graphics/pokemon/enamorus/icon.png | Bin 0 -> 480 bytes graphics/pokemon/enamorus/therian/icon.png | Bin 0 -> 488 bytes graphics/pokemon/goodra/hisuian/icon.png | Bin 0 -> 509 bytes graphics/pokemon/growlithe/hisuian/icon.png | Bin 0 -> 327 bytes graphics/pokemon/kleavor/icon.png | Bin 0 -> 563 bytes graphics/pokemon/lilligant/hisuian/icon.png | Bin 0 -> 414 bytes graphics/pokemon/overqwil/icon.png | Bin 0 -> 514 bytes graphics/pokemon/palkia/origin/icon.png | Bin 0 -> 462 bytes graphics/pokemon/qwilfish/hisuian/icon.png | Bin 0 -> 365 bytes graphics/pokemon/samurott/hisuian/icon.png | Bin 0 -> 503 bytes graphics/pokemon/sliggoo/hisuian/icon.png | Bin 0 -> 392 bytes graphics/pokemon/sneasel/hisuian/icon.png | Bin 0 -> 332 bytes graphics/pokemon/sneasler/icon.png | Bin 0 -> 478 bytes graphics/pokemon/typhlosion/hisuian/icon.png | Bin 0 -> 438 bytes graphics/pokemon/ursaluna/icon.png | Bin 0 -> 420 bytes graphics/pokemon/voltorb/hisuian/icon.png | Bin 0 -> 254 bytes graphics/pokemon/wyrdeer/icon.png | Bin 0 -> 395 bytes graphics/pokemon/zoroark/hisuian/icon.png | Bin 0 -> 634 bytes graphics/pokemon/zorua/hisuian/icon.png | Bin 0 -> 431 bytes include/constants/pokedex.h | 9 +- include/constants/pokemon.h | 3 +- include/constants/species.h | 475 ++++++------ include/graphics.h | 149 +++- sound/cry_tables.inc | 59 +- sound/direct_sound_data.inc | 34 + src/data/graphics/pokemon.h | 149 +++- src/data/pokemon/base_stats.h | 679 ++++++++++++++++++ src/data/pokemon/level_up_learnset_pointers.h | 30 +- src/data/pokemon/level_up_learnsets.h | 304 ++++++++ src/data/pokemon/pokedex_entries.h | 84 +++ src/data/pokemon/pokedex_orders.h | 55 ++ src/data/pokemon/pokedex_text.h | 40 ++ src/data/pokemon/tmhm_learnsets.h | 139 ++++ src/data/pokemon/tutor_learnsets.h | 46 ++ .../pokemon_graphics/back_pic_coordinates.h | 138 +++- src/data/pokemon_graphics/back_pic_table.h | 29 + src/data/pokemon_graphics/front_pic_anims.h | 313 ++++++++ .../pokemon_graphics/front_pic_coordinates.h | 138 +++- src/data/pokemon_graphics/front_pic_table.h | 29 + src/data/pokemon_graphics/palette_table.h | 29 + .../pokemon_graphics/shiny_palette_table.h | 29 + src/data/text/species_names.h | 31 +- src/pokemon.c | 37 +- src/pokemon_icon.c | 58 +- 54 files changed, 2851 insertions(+), 235 deletions(-) create mode 100644 graphics/pokemon/arcanine/hisuian/icon.png create mode 100644 graphics/pokemon/avalugg/hisuian/icon.png create mode 100644 graphics/pokemon/basculegion/icon.png create mode 100644 graphics/pokemon/basculegion/iconf.png create mode 100644 graphics/pokemon/basculin/white_striped/icon.png create mode 100644 graphics/pokemon/braviary/hisuian/icon.png create mode 100644 graphics/pokemon/calyrex/icon.png create mode 100644 graphics/pokemon/decidueye/hisuian/icon.png create mode 100644 graphics/pokemon/dialga/origin/icon.png create mode 100644 graphics/pokemon/electrode/hisuian/icon.png create mode 100644 graphics/pokemon/enamorus/icon.png create mode 100644 graphics/pokemon/enamorus/therian/icon.png create mode 100644 graphics/pokemon/goodra/hisuian/icon.png create mode 100644 graphics/pokemon/growlithe/hisuian/icon.png create mode 100644 graphics/pokemon/kleavor/icon.png create mode 100644 graphics/pokemon/lilligant/hisuian/icon.png create mode 100644 graphics/pokemon/overqwil/icon.png create mode 100644 graphics/pokemon/palkia/origin/icon.png create mode 100644 graphics/pokemon/qwilfish/hisuian/icon.png create mode 100644 graphics/pokemon/samurott/hisuian/icon.png create mode 100644 graphics/pokemon/sliggoo/hisuian/icon.png create mode 100644 graphics/pokemon/sneasel/hisuian/icon.png create mode 100644 graphics/pokemon/sneasler/icon.png create mode 100644 graphics/pokemon/typhlosion/hisuian/icon.png create mode 100644 graphics/pokemon/ursaluna/icon.png create mode 100644 graphics/pokemon/voltorb/hisuian/icon.png create mode 100644 graphics/pokemon/wyrdeer/icon.png create mode 100644 graphics/pokemon/zoroark/hisuian/icon.png create mode 100644 graphics/pokemon/zorua/hisuian/icon.png diff --git a/graphics/pokemon/arcanine/hisuian/icon.png b/graphics/pokemon/arcanine/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe90079293688d5d5bee71af6163306350da936 GIT binary patch literal 427 zcmV;c0aX5pP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vpbm$&Gi&M$o z94Uj@>Su*Y_6Ek4>J5s)BvQ9Zm9q2}j*p)ccl-$bRp5P@Gq5RJUNTrBz^vRQn9;as znSqR23&h0zyaa7HTNorIWsFgZFt9QKQnD?@01%6Kbto92$Vng&0B)4HaWJzbIs){i z+fHgR43;E-)uf1c4M>tyw3_6{+j$bgMgeja@Xtb zdMr$yv7?@8gZm->L32e`56Is?A!Mt#?^3Mo4}d*-Li`)%S%!J|BOB%sn_+(8k8heP V{nuiD7r+1j002ovPDHLkV1i2;x#<7^ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/avalugg/hisuian/icon.png b/graphics/pokemon/avalugg/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2b3f34771ac705f8aa383b0ef1fb757c2b8381 GIT binary patch literal 442 zcmV;r0Y(0aP)zlCg4xAP|Oq1BOfQ&8>YHZ~NTacpW@K z9yQ}RgH`at&5$aRMN!Z$O%f{qPua!gD~i8f?7mI@L*&Vd1FV3B1iU>hdn~2$0KCfp zoXQIM0$BNkSa*0{z@sh^&%6Z@$pdRjR8^={qrDM1n&}g7D1f2P-~wP;8)M*^cla^^ zr>ApWOoUn=AQm>$iki zrjUe*b56oUKaw!fkDV|s6DInRgqcb>xf5pcV zb924Dz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc00009 za7bBm000ie000ie0hKEb8vprlfO>GFc63R2B$ng8Tta18Zn|QmYDDs zF_ou?bSzho9eKG(o?Jv}Wv0Y5LfH}==a1q@FoHLKy1OL5`@+~C9t+_elFBYX+y>yf zjW>3Vs(5RpWH7<1C`h5LCHAABh;E3mG>4bIppBxHA%n-~4!FiBiq!rrkYv{Z^3C0| zlpBq{1KeF_xXTRnBf$+Iey_Mt!uT>T+ z!Xq!r{>7VAJfPO6ay=vfm&;jmyiNhYQz|%bA&!TNCQUgP)&zL+) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/basculegion/iconf.png b/graphics/pokemon/basculegion/iconf.png new file mode 100644 index 0000000000000000000000000000000000000000..fb85ca6c0cdb77a1bd081b2c44656d676a706f20 GIT binary patch literal 474 zcmV<00VV#4P)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vprld(?2Fc60G2G(sEA|vqv74=#vug74O zXR25{Ty1q@2~z07a7|3JhKAI3tlAO`3~<|hx;VMtUy9-n%d)g*^GPD!+*L4OqMfGdSPZE8O-0hFW&x6cmPxd*9Rj>=r0V5XIo+%-Ut=muB| zQUNvxQvOH=<^Bb#6L6^<_<*uGKqrClsqo;@Y`8+Mwl;zXq8(Ry<-ljT6P-d0UGG2q z((qDgeCzK+0_;SsZ1EfeU>Y^A3=<+uTyS5(ot-1_n=zz@&wX*J!|K#equXgob?!!! z1U$1eVaNWbSdrd-F-&zjAchotuR{cj4$BcihvOzZ7Ii>(ySF-A-<9a#fY;&G>EOb3 zI`H>Q2g-HOxehYZ0qIvdEUN|`*l~$y3_8SrYBWKIn5W5guveBi+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vpFbqX~1A@>T_XtHoAd@5AsCO*9 zDn5Z-L(p0?G6ZyURCS0&d&wU3Z+svKQhHVOdI@1$gE0_5fJ7#SS#(8adRGG65m^fW znB$rPW<*7}0!R+k#a@;bXhiz{96^j!?bO}MNR2*r-iWohZ#oiNfaSrHk-+k3k~n1< z#vtpw$?p39JPW`M#JGFYNXb;93pD$aGzc8lKBDV$*lD$sDFc8P{07xgddn(x@$Wd}D3KNgO zM4pI&uH_jR15+|oFjnd_5O-lpOd^H~31jD)lvrY5gPU^y+@0^^7X<&?!03r@TE5WV ze{){fjs4IR2;9^ORz|l`LUBf%3rtzmiHLGq%u%Fl&M`54N^!aoC|N8O_92j!4`p7l zSsWgUK9-l+Q#wP8Ln``STxa=KaYSsKfAVpERoJ4nz~q8DyU7(+Y|$YKDzfT!DGN2A zAYp%ZEAaDm8FYeL-LG_OVA%vP)Gz@A@S;b7%msJTwb-eA!Te&&f5O0@03uHT=_w#( zG!?jNra3L=+86ws2|;#qmLNq0xh1a68Crtojv&+D!4dRq2}+t4rA>m3BWTNFd;V1E zBSE3XLAlos1XVi=Oh3b#2&yrz8hZ9XP*o3Y3UtP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vp@k}(RyFbqX~1JMh3@BtKPrY^}jJA|Gm z(2^6#A?Z|T91~B4Qr85MSYErd)uxB^k>CmORRz}b{@I)vdDO?cvTN&sDjKMT1vyWo z3u@g0pqPO!*GScoMv~bYGT~0*uHRC_NN>zGAjAumLK^{4hyBP7%X4hl=?1$K1DCrV zSVnczy5%e88jm=i7dS@1gDj>vLjY#LfbgZ@1t}0V1wUJVFHHQ*EDTw;5`>8qa$W{u kq8%Unm{LCyVLtKW4fe&E?02@Pg8%>k07*qoM6N<$g2iNvQvd(} literal 0 HcmV?d00001 diff --git a/graphics/pokemon/decidueye/hisuian/icon.png b/graphics/pokemon/decidueye/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..997071396f393ebfb463eeb9ac891cc1a02c3915 GIT binary patch literal 410 zcmV;L0cHM)P)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vpzl09$2Fc60Q4^EMoiInb0l!2{Lr80NH zVk;BPMh6;hbAD_1@@7JU@aS3@>N_uVXrQ5uof!oby0#`D2}`DH%70IXQJBi+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vprlCf@sFc60Q2B(f$;0^l@*^HFhVT*_2 z*U1oIj?@rkGm91KmmwQ6&lfBpaYeEtaeVfBE3U(bc*HlNQ>=}hNHzzgRh z(NgNT%I z4%n_ta$J*6^l|7SHh)dF9T=H&=V(o-l5O3I>ufGUY1A^s%nqTyy`n0u}7BA8&eS~hbKu*yX zY=?~(GAbeC_6WX78%alE1E}0ki%$ zVE8v+qI+OA(E~6uA0sd`A0C*A4-X7!9)W>JU_2jW=mtvk)0#aWGcdp8;}aOWW&MsK Ry&?br002ovPDHLkV1jKY%X9z$ literal 0 HcmV?d00001 diff --git a/graphics/pokemon/electrode/hisuian/icon.png b/graphics/pokemon/electrode/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d624e246cb59c8bf27196d0faea8f8c2175428b5 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^3P9|@!VDxk7i7!@QU(D&A+AYtnv08z_wL>M|NsB$ zIbL(ldQJJ}^{#l%w<+KDE{Xc~O!M2fHCL}@J@e8`N{VuHbj-A@jRxxFEbxddW?X?_wfUrhg591jjv*GkZzuY4H5&-D7B|Z+s_wrqyY=3IwH(a0=MN~)Q`m9kzy+~g z0**bAma~|5tk`$=_l*6=B|g`88Gb&{=fZY*nvcSQ!1~1@48ODz7)(Wcn2MUFH%aPo zXiKDXFxiJ2uw35|vX<}d$HJ|5b1J{2rtf9?tUc*^U&*h%8|vhrz5Tpnrv1!y@8wsr YhU?Bee9`o%AJAD0p00i_>zopr01bL_fdBvi literal 0 HcmV?d00001 diff --git a/graphics/pokemon/enamorus/icon.png b/graphics/pokemon/enamorus/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c127c07345928e0594282d69f6d67b78f0610585 GIT binary patch literal 480 zcmV<60U!Q}P) zb924Dz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc00009 za7bBm000XU000XU0RWnu7ytkPR!KxbR5*>r(z|YhFcb!0r0%i$0A)DdLBb1Dc&1Lx z5;DS4@(?^x+o3Gb1cpeJFkpsE;BxbYO07DyDii*7Y>p3~VSM$Vn%C>V#_NDtxxEV7 z)5cqGIc-)IoLhx{2FDK73()fmcJzWSOAG87s*`>f`ou=JmDmv^Nd$Fcrc24qdl>At zhqBB>(1s83<(N@XVO+yFc6(068Aj`dfp@-p69ve`u3x2skgw zL>#<~h>P) zb924Dz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc00009 za7bBm000ie000ie0hKEb8vp*lD%%iFc5(K0@cY65RjZbk?g&FEGmW| zl_6e$74@w$!4j&F0aPiM0819)#&HO>+kvG+Jw)-R`;qTHLViC=*>|9{vcQQZV+W)* zxF$5Sa-c!0h^l~&;Z8t=CoG$?{WTDtapVUS6@k!%oU;Uj1P@iygA3+7+htg?J_Q9L z774Pw0ksThO6hJdOvckfzGWUo^urmjYKb4N6^uj4DV$zlD}%hFc63R20~;^aPWC867j7edgjux zLn#?!(r2)|21l0HVD&8dUj!Koy~XI`Ct14tlH`wyxd`-N+<<3p;f{`3fRV71$PsA` zU`9}DL9WXiS1A|0Wdo7Y^-!W=*)xjv8xTm1!(TK zJT7HE0MJzctj$WL2?)-|i-__=5J)FrZ)FV{vWo9R06wo+h^*lgklPxupf&#quQNRs zh;-!5OdUGG1`p|NKexzch==Re%%CUm_P%tI@g~Rns*NC&gyhFc5HhF`kwFwms}XpE$PZfY0vHTBU{UdOWzYtZH{VYN;ja3c zThwZe#bv+D*UBD*Tg{th-!8@l1hEhCC|=hud=}QbYP4mw00000NkvXXu0mjf41M9m literal 0 HcmV?d00001 diff --git a/graphics/pokemon/growlithe/hisuian/icon.png b/graphics/pokemon/growlithe/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b03733f0ff1b2db1108ff6de6f59d3c61345c5 GIT binary patch literal 327 zcmV-N0l5B&P)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vp>hBI8mz{hA}-~Xa!?+~w(^Fnv-ar>1Gk;TeD^>A)v^H( z5J(zcCimH9t+40u$SPQJ-3Qs%io3N5ez(+Z6Llt*XHua^8vL#M4<;QDV$TlD$sDFc8Q41e~0KZn08!@(4Ujm$Eft ziMQlg4HDhXaVpi@9cRZ*OC<&n9-`b|_kF+3=7$H^a(l7TS`Ks*&-!a|VO85mxG5ggb= zU|cmN93nA?2#izh5)$P45g4Z`w~41=L=^-WwyNUPJ)!dg%-&}lBng`cjL*CjV1%)Z z1G>lu3l3?KvDL)KgV^gVkq@@3z3{<&-TLqN_ySoTL?dithFt&v002ovPDHLkV1jR@ B`WXNK literal 0 HcmV?d00001 diff --git a/graphics/pokemon/lilligant/hisuian/icon.png b/graphics/pokemon/lilligant/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c8149843fc7723edee68da23fe4fcf43613288ac GIT binary patch literal 414 zcmV;P0b%}$P) zb924Dz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc00009 za7bBm000ie000ie0hKEb8vp&tH!u!vCMY_}BISNCI)+ z%Wti%M-m8mUR%8CJ(3Au{jQtewM8=IpG$f9^>QSE->J`Q-9vK(!bB#wbDV$r(!pwjKoADteS=|dg@Ad8K0sg3Ui9iB zm}iilWJ5#Gk>(jfE=pjsp%;V2>8QK9kwWOH148!Cj;`Y;#P0>m;M+V1p!5RZ->~w~#RsqLc%iy>c zP^Z}tWHLZ0FQQXLap84WRaM44rb~)qBj6gmgz9t*kTBJ+MzneGhS67!h;$B>;ZsN~ zPtWglhWfMaA4^YX{h?7Q+Lq%nZc$lewNfeBgQ^?<&9!l_LeMXhi<(9Nyg$L1+!oP9 zb%J3$%>%+J!mx_x8B*AUO&rcsgt&?M@&W^V1Muezu~^jdOa50qG`%zG7EEp$f=fKQ@92h6ag7E|mV7OxvG=LE_399u7W)_sH{;};OXlswrI6>NC zp9PIC^cO*MUDV$*lFv@VFbu}?239#2D#EqOq~?bB^S+3U zXJE%ExOX%kPbCsuK!h9kyxus`uG#%`H)z<9OCo&(&<^8Kw64_Jg7AVpCao?W(eaaoeYGg$(}wI$}%j7A5Y{NsBhC~M?-h#;|Z?Oyu4?>8vhcQo{tF3iH`x8$VZc# z7MK$s;8BSHOymPJpMM9Y<-_O^9|4$iK2VMMNdK0PFQ4>87K`K;Z~y=R07*qoM6N<$ Ef?T4}4*&oF literal 0 HcmV?d00001 diff --git a/graphics/pokemon/qwilfish/hisuian/icon.png b/graphics/pokemon/qwilfish/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6936dfe88d797c89991fc12252461f9a5927e703 GIT binary patch literal 365 zcmV-z0h0cSP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000XU000XU0RWnu7ytkO<4Ht8R5*>@k~uJ z9U5_@2z6m7ji5`A2r1;zij@IjDT9AmzaRO8_=|9ElypJ>VwZAI{uL}kDG2KY!#W7o zIBcCTdn(_8(OTB%aNh(E?`9NI&#?<2DMVSM{HjS(OER{!vPIGgFKLFes!vBVn#xtz z`vGTpaBFQv&6-mQRGWr*mn(XoGH>&y;CR8S>^a!ZZ{_4PP{LI3_vyr62aIVLmL1>y zg@cJSL>&4g1RQ!DuNH71iXI*Z|F!gJvhaZeegy|CCO9mMpTpq^THuXpi^b+300000 LNkvXXu0mjf2HlrL literal 0 HcmV?d00001 diff --git a/graphics/pokemon/samurott/hisuian/icon.png b/graphics/pokemon/samurott/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcbe6718f66d009844976cc6e128751233712f6 GIT binary patch literal 503 zcmVi+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000ie000ie0hKEb8vp*lCf^WFc60Q2G(_erK*K^0Hk>7mS@RQ zI)UgwHxQeLiab-d4wZNY3n^^G!BX%L<$88p2zx8F9vu7Ef9K!M$Jk#P-1ymCh03q_ z{37u(%xjXO00zmn#HIiGidG1Q1*~)_xIx2^L&>MFdYFN52-JydIKPaRuma=Wg)eHW z!QE)62T;Dj4jD(zrvQ)*GqJf>Ipflt7tn%0EtD#$hfV8+cto3Ox5W^0oMyA!%Ib(+ z5G$JxWuJt~xw8`8wg@#`DQu28 z8m+!dH?#l%002ovPDHLkV1l+-;UoY6 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/sliggoo/hisuian/icon.png b/graphics/pokemon/sliggoo/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c66baae5a9026bec9673ea2af98a23266459d31e GIT binary patch literal 392 zcmV;30eAk1P)DV$zk~?n0Fbsx$1421~1M>h5T4prh!E1ru zGi%qPKg&RLeKlS*s?7oVV9@;4ZG=V};XKO9NI>90V zjA4P?0uTJ9B9^urRb)d|t--OWR0JI#Nr9HIQK9QMJ*nHkiE1keca<-lApV6sxMN^YXhY=aB73f zyvYXozYWj&1%ZXE8xE1cYy06!jNsCr^U~pd1OBRq0P|IkA_Dl;qsT?5 m4|r literal 0 HcmV?d00001 diff --git a/graphics/pokemon/sneasel/hisuian/icon.png b/graphics/pokemon/sneasel/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9cae88b9bfbec648d238e0a8a067ee49c85e6e GIT binary patch literal 332 zcmV-S0ki&zP)DV$@k}(RyFbqX?1KmMuz=3A$(1T{|4VtAv z;9Q{4J0zpQG4U9P>Q0dYJwPMypvTwuA3ngJO)5{)zGGeXmj+Rg-|AxNE^9R?u(l1c zzUW(`88qNL)*5hkCkx0Lcfs`S$JJyPq!3J!OyQ6u e%b_4Y`|$w{9f&2&97(zW0000DV$@)6Gi5KoAG;d4r+gsh2!}haO5#J({yp zWKTl+G#iKzX1I4LMyJT zU%uoZbARSq^Oh_C(pqnPP#TIf#XdlDJvMtdt-Bh$8&8x4eD8we#aLBUs79fc6F?e?JBZ` zMHML?Ef3&eA{B68G5k_y#;00LNtuCoV#PDwY=>Nf=OZXm5dc|CwhK|>Hcdway+s!O z$EpR%;Tl0=yhe~PRtwTGKjm6bE?#ymNWA?<5Q}OBv8YxMi)sb2s78?J30MijSWvG7 z5#Krv11HGx=Yf?VcOQOSTvmc+Vpwv5Bq_Hip=cmEe5`EI^MQmtKvgvT3FKEW-=|m1 UP)Wx>&Hw-a07*qoM6N<$g4jyRDgXcg literal 0 HcmV?d00001 diff --git a/graphics/pokemon/typhlosion/hisuian/icon.png b/graphics/pokemon/typhlosion/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e0474968cfd1650cfe661960e9f06d789bd855 GIT binary patch literal 438 zcmV;n0ZIOeP) zb924Dz5oCJdz?y~%}SK^O73%<_LTO$q+0goDfafP)zxa|N-1JuT0ucUX*qpc00009 za7bBm000ie000ie0hKEb8vprlCf&TFc3if2jZp_0?FKO=vQTurh1e% z|3UsCTj7j78;kZEI;Bt=+f!O|!<8j#A+NCa$P3oB`~0|2kE@--URwukkNin&I! z>2C2Lk0%GmNoNf_4hcVYaDzJDV$89)B-O>}wl@_VpYU~zqX=jia$mUPKw$M z3k8%R8SS39?sR*KjW_dlM|NsBJ zOB}y_)4ZDG_-%@2clG}yue0xp=ltKYWXaM0S!?DbB}F+pI!3OXkOI`pS>O>_%)r2R z1cVu literal 0 HcmV?d00001 diff --git a/graphics/pokemon/wyrdeer/icon.png b/graphics/pokemon/wyrdeer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..905dfe083c941b295ae2a9020d31b7f1a2bbbf27 GIT binary patch literal 395 zcmV;60d)R}P)DV$FbqX`1KxpK777se=6szx8wF}0 z2kBvy$%{nDi`BuZg2ECLpi5D7>K`-^{N$tk0e(lQ?Wv|v^mx8h%S-E;dI4vg0k+vX zHoZCeliae30QOF`pOoI)D8Z46` zi+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000XU000XU0RWnu7ytkP@JU2LR5*>bQ@e`eFckG4Tqebq3CK)}U68=)1?KP~uchY8~1 z4B;!5cHY^k4hI6p@KRI5Wyk9?mzwlM~$2B^-?bxhG ziCr?Z+hNwoNw7dy#Ni=!7DD^=u^(>N4N=FUgF!CFFfyA!ac4|nbOBt!;{yQr0Q`pq zk2SqqB4~%&$vYKP&FtJ4gafa59zJK)!)wyaCQ+}z0K*MupfCdHgBQ}w<424UmAP0d zXgt+{QILya7>ikgVa&xqc^=Ik9F>NgXP(7Y{iqGkKG8%wB=}DE+|WZB0r2XicEp@_ zBvw7CRy Uv}+uNhX4Qo07*qoM6N<$g1DC;LjV8( literal 0 HcmV?d00001 diff --git a/graphics/pokemon/zorua/hisuian/icon.png b/graphics/pokemon/zorua/hisuian/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..17f9229a2f208c41b7b4b9a9567403643eb3ccdb GIT binary patch literal 431 zcmV;g0Z{&lP)i+lfKO3m(bod2|>q{aVgtej$ET0ucUS*eg@00009 za7bBm000XU000XU0RWnu7ytkPB}qg@lD|&FFc8M`2B)MOOT|Snw34ml#L|U# zpick;BYCF`3>}i44m=A%>X0FSjOgION06vvo3RVxHh=o=^WEteMSrY#2;Psr0MG0j zpbjH+5D_WQ!V!~n12j`Uz$Dwml4z-GC{7lW5+(bAtpIP7VOP(y!68mWbL_2SEU#DC z?^^q{%5h&xvzlA(@Fqu-Tfqq2VpowBRD&os@AI%A;stfm*-ufn9KCINmaue%VI07} zNN~Y_UcvGa91CC2MR1T`0QrmogW9+ju0JNC9CEczDdXKNKtq(RU%x5)DYKwNv}|Vq zb01?T55=hoF7Tlg=Bc%g6xT1v)lASQrdyQNt^GzdSGi~%U`&jcWE@~%B3ZJ_2lF|6 Zd;!&6gKf?XQH1~i002ovPDHLkV1k47xjp~@ literal 0 HcmV?d00001 diff --git a/include/constants/pokedex.h b/include/constants/pokedex.h index 8f40f9a7be..8e1c03d104 100644 --- a/include/constants/pokedex.h +++ b/include/constants/pokedex.h @@ -911,11 +911,18 @@ enum { NATIONAL_DEX_GLASTRIER, NATIONAL_DEX_SPECTRIER, NATIONAL_DEX_CALYREX, + NATIONAL_DEX_WYRDEER, + NATIONAL_DEX_KLEAVOR, + NATIONAL_DEX_URSALUNA, + NATIONAL_DEX_BASCULEGION, + NATIONAL_DEX_SNEASLER, + NATIONAL_DEX_OVERQWIL, + NATIONAL_DEX_ENAMORUS, }; #define KANTO_DEX_COUNT NATIONAL_DEX_MEW #define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI -#define NATIONAL_DEX_COUNT NATIONAL_DEX_CALYREX +#define NATIONAL_DEX_COUNT NATIONAL_DEX_ENAMORUS #define POKEMON_SLOTS_NUMBER (NATIONAL_DEX_COUNT + 1) // Hoenn Pokedex order diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index bd5fe81511..3edda316d7 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -399,7 +399,8 @@ #define FLAG_ULTRA_BEAST (1 << 2) #define FLAG_ALOLAN_FORM (1 << 3) #define FLAG_GALARIAN_FORM (1 << 4) -#define FLAG_GENDER_DIFFERENCE (1 << 5) +#define FLAG_HISUIAN_FORM (1 << 5) +#define FLAG_GENDER_DIFFERENCE (1 << 6) #define LEGENDARY_PERFECT_IV_COUNT 3 diff --git a/include/constants/species.h b/include/constants/species.h index b8689a32af..03bd9eabbc 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -900,8 +900,15 @@ #define SPECIES_GLASTRIER 896 #define SPECIES_SPECTRIER 897 #define SPECIES_CALYREX 898 +#define SPECIES_WYRDEER 899 +#define SPECIES_KLEAVOR 900 +#define SPECIES_URSALUNA 901 +#define SPECIES_BASCULEGION 902 +#define SPECIES_SNEASLER 903 +#define SPECIES_OVERQWIL 904 +#define SPECIES_ENAMORUS 905 -#define FORMS_START SPECIES_CALYREX +#define FORMS_START SPECIES_ENAMORUS // Megas #define SPECIES_VENUSAUR_MEGA FORMS_START + 1 @@ -998,348 +1005,370 @@ #define SPECIES_YAMASK_GALARIAN FORMS_START + 86 #define SPECIES_STUNFISK_GALARIAN FORMS_START + 87 +//Hisuian Forms +#define SPECIES_GROWLITHE_HISUIAN FORMS_START + 88 +#define SPECIES_ARCANINE_HISUIAN FORMS_START + 89 +#define SPECIES_VOLTORB_HISUIAN FORMS_START + 90 +#define SPECIES_ELECTRODE_HISUIAN FORMS_START + 91 +#define SPECIES_TYPHLOSION_HISUIAN FORMS_START + 92 +#define SPECIES_QWILFISH_HISUIAN FORMS_START + 93 +#define SPECIES_SNEASEL_HISUIAN FORMS_START + 94 +#define SPECIES_SAMUROTT_HISUIAN FORMS_START + 95 +#define SPECIES_LILLIGANT_HISUIAN FORMS_START + 96 +#define SPECIES_ZORUA_HISUIAN FORMS_START + 97 +#define SPECIES_ZOROARK_HISUIAN FORMS_START + 98 +#define SPECIES_BRAVIARY_HISUIAN FORMS_START + 99 +#define SPECIES_SLIGGOO_HISUIAN FORMS_START + 100 +#define SPECIES_GOODRA_HISUIAN FORMS_START + 101 +#define SPECIES_AVALUGG_HISUIAN FORMS_START + 102 +#define SPECIES_DECIDUEYE_HISUIAN FORMS_START + 103 + // Misc Forms // Cosplay Pikachu -#define SPECIES_PIKACHU_COSPLAY FORMS_START + 88 -#define SPECIES_PIKACHU_ROCK_STAR FORMS_START + 89 -#define SPECIES_PIKACHU_BELLE FORMS_START + 90 -#define SPECIES_PIKACHU_POP_STAR FORMS_START + 91 -#define SPECIES_PIKACHU_PH_D FORMS_START + 92 -#define SPECIES_PIKACHU_LIBRE FORMS_START + 93 +#define SPECIES_PIKACHU_COSPLAY FORMS_START + 104 +#define SPECIES_PIKACHU_ROCK_STAR FORMS_START + 105 +#define SPECIES_PIKACHU_BELLE FORMS_START + 106 +#define SPECIES_PIKACHU_POP_STAR FORMS_START + 107 +#define SPECIES_PIKACHU_PH_D FORMS_START + 108 +#define SPECIES_PIKACHU_LIBRE FORMS_START + 109 // Cap Pikachu -#define SPECIES_PIKACHU_ORIGINAL_CAP FORMS_START + 94 -#define SPECIES_PIKACHU_HOENN_CAP FORMS_START + 95 -#define SPECIES_PIKACHU_SINNOH_CAP FORMS_START + 96 -#define SPECIES_PIKACHU_UNOVA_CAP FORMS_START + 97 -#define SPECIES_PIKACHU_KALOS_CAP FORMS_START + 98 -#define SPECIES_PIKACHU_ALOLA_CAP FORMS_START + 99 -#define SPECIES_PIKACHU_PARTNER_CAP FORMS_START + 100 -#define SPECIES_PIKACHU_WORLD_CAP FORMS_START + 101 +#define SPECIES_PIKACHU_ORIGINAL_CAP FORMS_START + 110 +#define SPECIES_PIKACHU_HOENN_CAP FORMS_START + 111 +#define SPECIES_PIKACHU_SINNOH_CAP FORMS_START + 112 +#define SPECIES_PIKACHU_UNOVA_CAP FORMS_START + 113 +#define SPECIES_PIKACHU_KALOS_CAP FORMS_START + 114 +#define SPECIES_PIKACHU_ALOLA_CAP FORMS_START + 115 +#define SPECIES_PIKACHU_PARTNER_CAP FORMS_START + 116 +#define SPECIES_PIKACHU_WORLD_CAP FORMS_START + 117 // Pichu -#define SPECIES_PICHU_SPIKY_EARED FORMS_START + 102 +#define SPECIES_PICHU_SPIKY_EARED FORMS_START + 118 // Unown -#define SPECIES_UNOWN_B FORMS_START + 103 -#define SPECIES_UNOWN_C FORMS_START + 104 -#define SPECIES_UNOWN_D FORMS_START + 105 -#define SPECIES_UNOWN_E FORMS_START + 106 -#define SPECIES_UNOWN_F FORMS_START + 107 -#define SPECIES_UNOWN_G FORMS_START + 108 -#define SPECIES_UNOWN_H FORMS_START + 109 -#define SPECIES_UNOWN_I FORMS_START + 110 -#define SPECIES_UNOWN_J FORMS_START + 111 -#define SPECIES_UNOWN_K FORMS_START + 112 -#define SPECIES_UNOWN_L FORMS_START + 113 -#define SPECIES_UNOWN_M FORMS_START + 114 -#define SPECIES_UNOWN_N FORMS_START + 115 -#define SPECIES_UNOWN_O FORMS_START + 116 -#define SPECIES_UNOWN_P FORMS_START + 117 -#define SPECIES_UNOWN_Q FORMS_START + 118 -#define SPECIES_UNOWN_R FORMS_START + 119 -#define SPECIES_UNOWN_S FORMS_START + 120 -#define SPECIES_UNOWN_T FORMS_START + 121 -#define SPECIES_UNOWN_U FORMS_START + 122 -#define SPECIES_UNOWN_V FORMS_START + 123 -#define SPECIES_UNOWN_W FORMS_START + 124 -#define SPECIES_UNOWN_X FORMS_START + 125 -#define SPECIES_UNOWN_Y FORMS_START + 126 -#define SPECIES_UNOWN_Z FORMS_START + 127 -#define SPECIES_UNOWN_EMARK FORMS_START + 128 -#define SPECIES_UNOWN_QMARK FORMS_START + 129 +#define SPECIES_UNOWN_B FORMS_START + 119 +#define SPECIES_UNOWN_C FORMS_START + 120 +#define SPECIES_UNOWN_D FORMS_START + 121 +#define SPECIES_UNOWN_E FORMS_START + 122 +#define SPECIES_UNOWN_F FORMS_START + 123 +#define SPECIES_UNOWN_G FORMS_START + 124 +#define SPECIES_UNOWN_H FORMS_START + 125 +#define SPECIES_UNOWN_I FORMS_START + 126 +#define SPECIES_UNOWN_J FORMS_START + 127 +#define SPECIES_UNOWN_K FORMS_START + 128 +#define SPECIES_UNOWN_L FORMS_START + 129 +#define SPECIES_UNOWN_M FORMS_START + 130 +#define SPECIES_UNOWN_N FORMS_START + 131 +#define SPECIES_UNOWN_O FORMS_START + 132 +#define SPECIES_UNOWN_P FORMS_START + 133 +#define SPECIES_UNOWN_Q FORMS_START + 134 +#define SPECIES_UNOWN_R FORMS_START + 135 +#define SPECIES_UNOWN_S FORMS_START + 136 +#define SPECIES_UNOWN_T FORMS_START + 137 +#define SPECIES_UNOWN_U FORMS_START + 138 +#define SPECIES_UNOWN_V FORMS_START + 139 +#define SPECIES_UNOWN_W FORMS_START + 140 +#define SPECIES_UNOWN_X FORMS_START + 141 +#define SPECIES_UNOWN_Y FORMS_START + 142 +#define SPECIES_UNOWN_Z FORMS_START + 143 +#define SPECIES_UNOWN_EMARK FORMS_START + 144 +#define SPECIES_UNOWN_QMARK FORMS_START + 145 // Castform -#define SPECIES_CASTFORM_SUNNY FORMS_START + 130 -#define SPECIES_CASTFORM_RAINY FORMS_START + 131 -#define SPECIES_CASTFORM_SNOWY FORMS_START + 132 +#define SPECIES_CASTFORM_SUNNY FORMS_START + 146 +#define SPECIES_CASTFORM_RAINY FORMS_START + 147 +#define SPECIES_CASTFORM_SNOWY FORMS_START + 148 // Deoxys -#define SPECIES_DEOXYS_ATTACK FORMS_START + 133 -#define SPECIES_DEOXYS_DEFENSE FORMS_START + 134 -#define SPECIES_DEOXYS_SPEED FORMS_START + 135 +#define SPECIES_DEOXYS_ATTACK FORMS_START + 149 +#define SPECIES_DEOXYS_DEFENSE FORMS_START + 150 +#define SPECIES_DEOXYS_SPEED FORMS_START + 151 // Burmy -#define SPECIES_BURMY_SANDY_CLOAK FORMS_START + 136 -#define SPECIES_BURMY_TRASH_CLOAK FORMS_START + 137 +#define SPECIES_BURMY_SANDY_CLOAK FORMS_START + 152 +#define SPECIES_BURMY_TRASH_CLOAK FORMS_START + 153 // Wormadam -#define SPECIES_WORMADAM_SANDY_CLOAK FORMS_START + 138 -#define SPECIES_WORMADAM_TRASH_CLOAK FORMS_START + 139 +#define SPECIES_WORMADAM_SANDY_CLOAK FORMS_START + 154 +#define SPECIES_WORMADAM_TRASH_CLOAK FORMS_START + 155 // Cherrim -#define SPECIES_CHERRIM_SUNSHINE FORMS_START + 140 +#define SPECIES_CHERRIM_SUNSHINE FORMS_START + 156 // Shellos -#define SPECIES_SHELLOS_EAST_SEA FORMS_START + 141 +#define SPECIES_SHELLOS_EAST_SEA FORMS_START + 157 // Gastrodon -#define SPECIES_GASTRODON_EAST_SEA FORMS_START + 142 +#define SPECIES_GASTRODON_EAST_SEA FORMS_START + 158 // Rotom -#define SPECIES_ROTOM_HEAT FORMS_START + 143 -#define SPECIES_ROTOM_WASH FORMS_START + 144 -#define SPECIES_ROTOM_FROST FORMS_START + 145 -#define SPECIES_ROTOM_FAN FORMS_START + 146 -#define SPECIES_ROTOM_MOW FORMS_START + 147 +#define SPECIES_ROTOM_HEAT FORMS_START + 159 +#define SPECIES_ROTOM_WASH FORMS_START + 160 +#define SPECIES_ROTOM_FROST FORMS_START + 161 +#define SPECIES_ROTOM_FAN FORMS_START + 162 +#define SPECIES_ROTOM_MOW FORMS_START + 163 -// Giratina -#define SPECIES_GIRATINA_ORIGIN FORMS_START + 148 +// Origin Forme +#define SPECIES_DIALGA_ORIGIN FORMS_START + 164 +#define SPECIES_PALKIA_ORIGIN FORMS_START + 165 +#define SPECIES_GIRATINA_ORIGIN FORMS_START + 166 // Shaymin -#define SPECIES_SHAYMIN_SKY FORMS_START + 149 +#define SPECIES_SHAYMIN_SKY FORMS_START + 167 // Arceus -#define SPECIES_ARCEUS_FIGHTING FORMS_START + 150 -#define SPECIES_ARCEUS_FLYING FORMS_START + 151 -#define SPECIES_ARCEUS_POISON FORMS_START + 152 -#define SPECIES_ARCEUS_GROUND FORMS_START + 153 -#define SPECIES_ARCEUS_ROCK FORMS_START + 154 -#define SPECIES_ARCEUS_BUG FORMS_START + 155 -#define SPECIES_ARCEUS_GHOST FORMS_START + 156 -#define SPECIES_ARCEUS_STEEL FORMS_START + 157 -#define SPECIES_ARCEUS_FIRE FORMS_START + 158 -#define SPECIES_ARCEUS_WATER FORMS_START + 159 -#define SPECIES_ARCEUS_GRASS FORMS_START + 160 -#define SPECIES_ARCEUS_ELECTRIC FORMS_START + 161 -#define SPECIES_ARCEUS_PSYCHIC FORMS_START + 162 -#define SPECIES_ARCEUS_ICE FORMS_START + 163 -#define SPECIES_ARCEUS_DRAGON FORMS_START + 164 -#define SPECIES_ARCEUS_DARK FORMS_START + 165 -#define SPECIES_ARCEUS_FAIRY FORMS_START + 166 +#define SPECIES_ARCEUS_FIGHTING FORMS_START + 168 +#define SPECIES_ARCEUS_FLYING FORMS_START + 169 +#define SPECIES_ARCEUS_POISON FORMS_START + 170 +#define SPECIES_ARCEUS_GROUND FORMS_START + 171 +#define SPECIES_ARCEUS_ROCK FORMS_START + 172 +#define SPECIES_ARCEUS_BUG FORMS_START + 173 +#define SPECIES_ARCEUS_GHOST FORMS_START + 174 +#define SPECIES_ARCEUS_STEEL FORMS_START + 175 +#define SPECIES_ARCEUS_FIRE FORMS_START + 176 +#define SPECIES_ARCEUS_WATER FORMS_START + 177 +#define SPECIES_ARCEUS_GRASS FORMS_START + 178 +#define SPECIES_ARCEUS_ELECTRIC FORMS_START + 179 +#define SPECIES_ARCEUS_PSYCHIC FORMS_START + 180 +#define SPECIES_ARCEUS_ICE FORMS_START + 181 +#define SPECIES_ARCEUS_DRAGON FORMS_START + 182 +#define SPECIES_ARCEUS_DARK FORMS_START + 183 +#define SPECIES_ARCEUS_FAIRY FORMS_START + 184 // Basculin -#define SPECIES_BASCULIN_BLUE_STRIPED FORMS_START + 167 +#define SPECIES_BASCULIN_BLUE_STRIPED FORMS_START + 185 +#define SPECIES_BASCULIN_WHITE_STRIPED FORMS_START + 186 // Darmanitan -#define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 168 -#define SPECIES_DARMANITAN_ZEN_MODE_GALARIAN FORMS_START + 169 +#define SPECIES_DARMANITAN_ZEN_MODE FORMS_START + 187 +#define SPECIES_DARMANITAN_ZEN_MODE_GALARIAN FORMS_START + 188 // Deerling -#define SPECIES_DEERLING_SUMMER FORMS_START + 170 -#define SPECIES_DEERLING_AUTUMN FORMS_START + 171 -#define SPECIES_DEERLING_WINTER FORMS_START + 172 +#define SPECIES_DEERLING_SUMMER FORMS_START + 189 +#define SPECIES_DEERLING_AUTUMN FORMS_START + 190 +#define SPECIES_DEERLING_WINTER FORMS_START + 191 // Sawsbuck -#define SPECIES_SAWSBUCK_SUMMER FORMS_START + 173 -#define SPECIES_SAWSBUCK_AUTUMN FORMS_START + 174 -#define SPECIES_SAWSBUCK_WINTER FORMS_START + 175 +#define SPECIES_SAWSBUCK_SUMMER FORMS_START + 192 +#define SPECIES_SAWSBUCK_AUTUMN FORMS_START + 193 +#define SPECIES_SAWSBUCK_WINTER FORMS_START + 194 // Therian Forms -#define SPECIES_TORNADUS_THERIAN FORMS_START + 176 -#define SPECIES_THUNDURUS_THERIAN FORMS_START + 177 -#define SPECIES_LANDORUS_THERIAN FORMS_START + 178 +#define SPECIES_TORNADUS_THERIAN FORMS_START + 195 +#define SPECIES_THUNDURUS_THERIAN FORMS_START + 196 +#define SPECIES_LANDORUS_THERIAN FORMS_START + 197 +#define SPECIES_ENAMORUS_THERIAN FORMS_START + 198 // Kyurem -#define SPECIES_KYUREM_WHITE FORMS_START + 179 -#define SPECIES_KYUREM_BLACK FORMS_START + 180 +#define SPECIES_KYUREM_WHITE FORMS_START + 199 +#define SPECIES_KYUREM_BLACK FORMS_START + 200 // Keldeo -#define SPECIES_KELDEO_RESOLUTE FORMS_START + 181 +#define SPECIES_KELDEO_RESOLUTE FORMS_START + 201 // Meloetta -#define SPECIES_MELOETTA_PIROUETTE FORMS_START + 182 +#define SPECIES_MELOETTA_PIROUETTE FORMS_START + 202 // Genesect -#define SPECIES_GENESECT_DOUSE_DRIVE FORMS_START + 183 -#define SPECIES_GENESECT_SHOCK_DRIVE FORMS_START + 184 -#define SPECIES_GENESECT_BURN_DRIVE FORMS_START + 185 -#define SPECIES_GENESECT_CHILL_DRIVE FORMS_START + 186 +#define SPECIES_GENESECT_DOUSE_DRIVE FORMS_START + 203 +#define SPECIES_GENESECT_SHOCK_DRIVE FORMS_START + 204 +#define SPECIES_GENESECT_BURN_DRIVE FORMS_START + 205 +#define SPECIES_GENESECT_CHILL_DRIVE FORMS_START + 206 // Greninja -#define SPECIES_GRENINJA_BATTLE_BOND FORMS_START + 187 -#define SPECIES_GRENINJA_ASH FORMS_START + 188 +#define SPECIES_GRENINJA_BATTLE_BOND FORMS_START + 207 +#define SPECIES_GRENINJA_ASH FORMS_START + 208 // Vivillon -#define SPECIES_VIVILLON_POLAR FORMS_START + 189 -#define SPECIES_VIVILLON_TUNDRA FORMS_START + 190 -#define SPECIES_VIVILLON_CONTINENTAL FORMS_START + 191 -#define SPECIES_VIVILLON_GARDEN FORMS_START + 192 -#define SPECIES_VIVILLON_ELEGANT FORMS_START + 193 -#define SPECIES_VIVILLON_MEADOW FORMS_START + 194 -#define SPECIES_VIVILLON_MODERN FORMS_START + 195 -#define SPECIES_VIVILLON_MARINE FORMS_START + 196 -#define SPECIES_VIVILLON_ARCHIPELAGO FORMS_START + 197 -#define SPECIES_VIVILLON_HIGH_PLAINS FORMS_START + 198 -#define SPECIES_VIVILLON_SANDSTORM FORMS_START + 199 -#define SPECIES_VIVILLON_RIVER FORMS_START + 200 -#define SPECIES_VIVILLON_MONSOON FORMS_START + 201 -#define SPECIES_VIVILLON_SAVANNA FORMS_START + 202 -#define SPECIES_VIVILLON_SUN FORMS_START + 203 -#define SPECIES_VIVILLON_OCEAN FORMS_START + 204 -#define SPECIES_VIVILLON_JUNGLE FORMS_START + 205 -#define SPECIES_VIVILLON_FANCY FORMS_START + 206 -#define SPECIES_VIVILLON_POKE_BALL FORMS_START + 207 +#define SPECIES_VIVILLON_POLAR FORMS_START + 209 +#define SPECIES_VIVILLON_TUNDRA FORMS_START + 210 +#define SPECIES_VIVILLON_CONTINENTAL FORMS_START + 211 +#define SPECIES_VIVILLON_GARDEN FORMS_START + 212 +#define SPECIES_VIVILLON_ELEGANT FORMS_START + 213 +#define SPECIES_VIVILLON_MEADOW FORMS_START + 214 +#define SPECIES_VIVILLON_MODERN FORMS_START + 215 +#define SPECIES_VIVILLON_MARINE FORMS_START + 216 +#define SPECIES_VIVILLON_ARCHIPELAGO FORMS_START + 217 +#define SPECIES_VIVILLON_HIGH_PLAINS FORMS_START + 218 +#define SPECIES_VIVILLON_SANDSTORM FORMS_START + 219 +#define SPECIES_VIVILLON_RIVER FORMS_START + 220 +#define SPECIES_VIVILLON_MONSOON FORMS_START + 221 +#define SPECIES_VIVILLON_SAVANNA FORMS_START + 222 +#define SPECIES_VIVILLON_SUN FORMS_START + 223 +#define SPECIES_VIVILLON_OCEAN FORMS_START + 224 +#define SPECIES_VIVILLON_JUNGLE FORMS_START + 225 +#define SPECIES_VIVILLON_FANCY FORMS_START + 226 +#define SPECIES_VIVILLON_POKE_BALL FORMS_START + 227 // Flabébé -#define SPECIES_FLABEBE_YELLOW_FLOWER FORMS_START + 208 -#define SPECIES_FLABEBE_ORANGE_FLOWER FORMS_START + 209 -#define SPECIES_FLABEBE_BLUE_FLOWER FORMS_START + 210 -#define SPECIES_FLABEBE_WHITE_FLOWER FORMS_START + 211 +#define SPECIES_FLABEBE_YELLOW_FLOWER FORMS_START + 228 +#define SPECIES_FLABEBE_ORANGE_FLOWER FORMS_START + 229 +#define SPECIES_FLABEBE_BLUE_FLOWER FORMS_START + 230 +#define SPECIES_FLABEBE_WHITE_FLOWER FORMS_START + 231 // Floette -#define SPECIES_FLOETTE_YELLOW_FLOWER FORMS_START + 212 -#define SPECIES_FLOETTE_ORANGE_FLOWER FORMS_START + 213 -#define SPECIES_FLOETTE_BLUE_FLOWER FORMS_START + 214 -#define SPECIES_FLOETTE_WHITE_FLOWER FORMS_START + 215 -#define SPECIES_FLOETTE_ETERNAL_FLOWER FORMS_START + 216 +#define SPECIES_FLOETTE_YELLOW_FLOWER FORMS_START + 232 +#define SPECIES_FLOETTE_ORANGE_FLOWER FORMS_START + 233 +#define SPECIES_FLOETTE_BLUE_FLOWER FORMS_START + 234 +#define SPECIES_FLOETTE_WHITE_FLOWER FORMS_START + 235 +#define SPECIES_FLOETTE_ETERNAL_FLOWER FORMS_START + 236 // Florges -#define SPECIES_FLORGES_YELLOW_FLOWER FORMS_START + 217 -#define SPECIES_FLORGES_ORANGE_FLOWER FORMS_START + 218 -#define SPECIES_FLORGES_BLUE_FLOWER FORMS_START + 219 -#define SPECIES_FLORGES_WHITE_FLOWER FORMS_START + 220 +#define SPECIES_FLORGES_YELLOW_FLOWER FORMS_START + 237 +#define SPECIES_FLORGES_ORANGE_FLOWER FORMS_START + 238 +#define SPECIES_FLORGES_BLUE_FLOWER FORMS_START + 239 +#define SPECIES_FLORGES_WHITE_FLOWER FORMS_START + 240 // Furfrou -#define SPECIES_FURFROU_HEART_TRIM FORMS_START + 221 -#define SPECIES_FURFROU_STAR_TRIM FORMS_START + 222 -#define SPECIES_FURFROU_DIAMOND_TRIM FORMS_START + 223 -#define SPECIES_FURFROU_DEBUTANTE_TRIM FORMS_START + 224 -#define SPECIES_FURFROU_MATRON_TRIM FORMS_START + 225 -#define SPECIES_FURFROU_DANDY_TRIM FORMS_START + 226 -#define SPECIES_FURFROU_LA_REINE_TRIM FORMS_START + 227 -#define SPECIES_FURFROU_KABUKI_TRIM FORMS_START + 228 -#define SPECIES_FURFROU_PHARAOH_TRIM FORMS_START + 229 +#define SPECIES_FURFROU_HEART_TRIM FORMS_START + 241 +#define SPECIES_FURFROU_STAR_TRIM FORMS_START + 242 +#define SPECIES_FURFROU_DIAMOND_TRIM FORMS_START + 243 +#define SPECIES_FURFROU_DEBUTANTE_TRIM FORMS_START + 244 +#define SPECIES_FURFROU_MATRON_TRIM FORMS_START + 245 +#define SPECIES_FURFROU_DANDY_TRIM FORMS_START + 246 +#define SPECIES_FURFROU_LA_REINE_TRIM FORMS_START + 247 +#define SPECIES_FURFROU_KABUKI_TRIM FORMS_START + 248 +#define SPECIES_FURFROU_PHARAOH_TRIM FORMS_START + 249 // Meowstic -#define SPECIES_MEOWSTIC_FEMALE FORMS_START + 230 +#define SPECIES_MEOWSTIC_FEMALE FORMS_START + 250 // Aegislash -#define SPECIES_AEGISLASH_BLADE FORMS_START + 231 +#define SPECIES_AEGISLASH_BLADE FORMS_START + 251 // Pumpkaboo -#define SPECIES_PUMPKABOO_SMALL FORMS_START + 232 -#define SPECIES_PUMPKABOO_LARGE FORMS_START + 233 -#define SPECIES_PUMPKABOO_SUPER FORMS_START + 234 +#define SPECIES_PUMPKABOO_SMALL FORMS_START + 252 +#define SPECIES_PUMPKABOO_LARGE FORMS_START + 253 +#define SPECIES_PUMPKABOO_SUPER FORMS_START + 254 // Gourgeist -#define SPECIES_GOURGEIST_SMALL FORMS_START + 235 -#define SPECIES_GOURGEIST_LARGE FORMS_START + 236 -#define SPECIES_GOURGEIST_SUPER FORMS_START + 237 +#define SPECIES_GOURGEIST_SMALL FORMS_START + 255 +#define SPECIES_GOURGEIST_LARGE FORMS_START + 256 +#define SPECIES_GOURGEIST_SUPER FORMS_START + 257 // Xerneas -#define SPECIES_XERNEAS_ACTIVE FORMS_START + 238 +#define SPECIES_XERNEAS_ACTIVE FORMS_START + 258 // Zygarde -#define SPECIES_ZYGARDE_10 FORMS_START + 239 -#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 240 -#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 241 -#define SPECIES_ZYGARDE_COMPLETE FORMS_START + 242 +#define SPECIES_ZYGARDE_10 FORMS_START + 259 +#define SPECIES_ZYGARDE_10_POWER_CONSTRUCT FORMS_START + 260 +#define SPECIES_ZYGARDE_50_POWER_CONSTRUCT FORMS_START + 261 +#define SPECIES_ZYGARDE_COMPLETE FORMS_START + 262 // Hoopa -#define SPECIES_HOOPA_UNBOUND FORMS_START + 243 +#define SPECIES_HOOPA_UNBOUND FORMS_START + 263 // Oricorio -#define SPECIES_ORICORIO_POM_POM FORMS_START + 244 -#define SPECIES_ORICORIO_PAU FORMS_START + 245 -#define SPECIES_ORICORIO_SENSU FORMS_START + 246 +#define SPECIES_ORICORIO_POM_POM FORMS_START + 264 +#define SPECIES_ORICORIO_PAU FORMS_START + 265 +#define SPECIES_ORICORIO_SENSU FORMS_START + 266 // Rockruff -#define SPECIES_ROCKRUFF_OWN_TEMPO FORMS_START + 247 +#define SPECIES_ROCKRUFF_OWN_TEMPO FORMS_START + 267 // Lycanroc -#define SPECIES_LYCANROC_MIDNIGHT FORMS_START + 248 -#define SPECIES_LYCANROC_DUSK FORMS_START + 249 +#define SPECIES_LYCANROC_MIDNIGHT FORMS_START + 268 +#define SPECIES_LYCANROC_DUSK FORMS_START + 269 // Wishiwashi -#define SPECIES_WISHIWASHI_SCHOOL FORMS_START + 250 +#define SPECIES_WISHIWASHI_SCHOOL FORMS_START + 270 // Silvally -#define SPECIES_SILVALLY_FIGHTING FORMS_START + 251 -#define SPECIES_SILVALLY_FLYING FORMS_START + 252 -#define SPECIES_SILVALLY_POISON FORMS_START + 253 -#define SPECIES_SILVALLY_GROUND FORMS_START + 254 -#define SPECIES_SILVALLY_ROCK FORMS_START + 255 -#define SPECIES_SILVALLY_BUG FORMS_START + 256 -#define SPECIES_SILVALLY_GHOST FORMS_START + 257 -#define SPECIES_SILVALLY_STEEL FORMS_START + 258 -#define SPECIES_SILVALLY_FIRE FORMS_START + 259 -#define SPECIES_SILVALLY_WATER FORMS_START + 260 -#define SPECIES_SILVALLY_GRASS FORMS_START + 261 -#define SPECIES_SILVALLY_ELECTRIC FORMS_START + 262 -#define SPECIES_SILVALLY_PSYCHIC FORMS_START + 263 -#define SPECIES_SILVALLY_ICE FORMS_START + 264 -#define SPECIES_SILVALLY_DRAGON FORMS_START + 265 -#define SPECIES_SILVALLY_DARK FORMS_START + 266 -#define SPECIES_SILVALLY_FAIRY FORMS_START + 267 +#define SPECIES_SILVALLY_FIGHTING FORMS_START + 271 +#define SPECIES_SILVALLY_FLYING FORMS_START + 272 +#define SPECIES_SILVALLY_POISON FORMS_START + 273 +#define SPECIES_SILVALLY_GROUND FORMS_START + 274 +#define SPECIES_SILVALLY_ROCK FORMS_START + 275 +#define SPECIES_SILVALLY_BUG FORMS_START + 276 +#define SPECIES_SILVALLY_GHOST FORMS_START + 277 +#define SPECIES_SILVALLY_STEEL FORMS_START + 278 +#define SPECIES_SILVALLY_FIRE FORMS_START + 279 +#define SPECIES_SILVALLY_WATER FORMS_START + 280 +#define SPECIES_SILVALLY_GRASS FORMS_START + 281 +#define SPECIES_SILVALLY_ELECTRIC FORMS_START + 282 +#define SPECIES_SILVALLY_PSYCHIC FORMS_START + 283 +#define SPECIES_SILVALLY_ICE FORMS_START + 284 +#define SPECIES_SILVALLY_DRAGON FORMS_START + 285 +#define SPECIES_SILVALLY_DARK FORMS_START + 286 +#define SPECIES_SILVALLY_FAIRY FORMS_START + 287 // Minior -#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 268 -#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 269 -#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 270 -#define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 271 -#define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 272 -#define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 273 -#define SPECIES_MINIOR_CORE_RED FORMS_START + 274 -#define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 275 -#define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 276 -#define SPECIES_MINIOR_CORE_GREEN FORMS_START + 277 -#define SPECIES_MINIOR_CORE_BLUE FORMS_START + 278 -#define SPECIES_MINIOR_CORE_INDIGO FORMS_START + 279 -#define SPECIES_MINIOR_CORE_VIOLET FORMS_START + 280 +#define SPECIES_MINIOR_METEOR_ORANGE FORMS_START + 288 +#define SPECIES_MINIOR_METEOR_YELLOW FORMS_START + 289 +#define SPECIES_MINIOR_METEOR_GREEN FORMS_START + 290 +#define SPECIES_MINIOR_METEOR_BLUE FORMS_START + 291 +#define SPECIES_MINIOR_METEOR_INDIGO FORMS_START + 292 +#define SPECIES_MINIOR_METEOR_VIOLET FORMS_START + 293 +#define SPECIES_MINIOR_CORE_RED FORMS_START + 294 +#define SPECIES_MINIOR_CORE_ORANGE FORMS_START + 295 +#define SPECIES_MINIOR_CORE_YELLOW FORMS_START + 296 +#define SPECIES_MINIOR_CORE_GREEN FORMS_START + 297 +#define SPECIES_MINIOR_CORE_BLUE FORMS_START + 298 +#define SPECIES_MINIOR_CORE_INDIGO FORMS_START + 299 +#define SPECIES_MINIOR_CORE_VIOLET FORMS_START + 300 // Mimikyu -#define SPECIES_MIMIKYU_BUSTED FORMS_START + 281 +#define SPECIES_MIMIKYU_BUSTED FORMS_START + 301 // Necrozma -#define SPECIES_NECROZMA_DUSK_MANE FORMS_START + 282 -#define SPECIES_NECROZMA_DAWN_WINGS FORMS_START + 283 -#define SPECIES_NECROZMA_ULTRA FORMS_START + 284 +#define SPECIES_NECROZMA_DUSK_MANE FORMS_START + 302 +#define SPECIES_NECROZMA_DAWN_WINGS FORMS_START + 303 +#define SPECIES_NECROZMA_ULTRA FORMS_START + 304 // Magearna -#define SPECIES_MAGEARNA_ORIGINAL_COLOR FORMS_START + 285 +#define SPECIES_MAGEARNA_ORIGINAL_COLOR FORMS_START + 305 // Cramorant -#define SPECIES_CRAMORANT_GULPING FORMS_START + 286 -#define SPECIES_CRAMORANT_GORGING FORMS_START + 287 +#define SPECIES_CRAMORANT_GULPING FORMS_START + 306 +#define SPECIES_CRAMORANT_GORGING FORMS_START + 307 // Toxtricity -#define SPECIES_TOXTRICITY_LOW_KEY FORMS_START + 288 +#define SPECIES_TOXTRICITY_LOW_KEY FORMS_START + 308 // Sinistea -#define SPECIES_SINISTEA_ANTIQUE FORMS_START + 289 +#define SPECIES_SINISTEA_ANTIQUE FORMS_START + 309 // Polteageist -#define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 290 +#define SPECIES_POLTEAGEIST_ANTIQUE FORMS_START + 310 // Alcremie -#define SPECIES_ALCREMIE_RUBY_CREAM FORMS_START + 291 -#define SPECIES_ALCREMIE_MATCHA_CREAM FORMS_START + 292 -#define SPECIES_ALCREMIE_MINT_CREAM FORMS_START + 293 -#define SPECIES_ALCREMIE_LEMON_CREAM FORMS_START + 294 -#define SPECIES_ALCREMIE_SALTED_CREAM FORMS_START + 295 -#define SPECIES_ALCREMIE_RUBY_SWIRL FORMS_START + 296 -#define SPECIES_ALCREMIE_CARAMEL_SWIRL FORMS_START + 297 -#define SPECIES_ALCREMIE_RAINBOW_SWIRL FORMS_START + 298 +#define SPECIES_ALCREMIE_RUBY_CREAM FORMS_START + 311 +#define SPECIES_ALCREMIE_MATCHA_CREAM FORMS_START + 312 +#define SPECIES_ALCREMIE_MINT_CREAM FORMS_START + 313 +#define SPECIES_ALCREMIE_LEMON_CREAM FORMS_START + 314 +#define SPECIES_ALCREMIE_SALTED_CREAM FORMS_START + 315 +#define SPECIES_ALCREMIE_RUBY_SWIRL FORMS_START + 316 +#define SPECIES_ALCREMIE_CARAMEL_SWIRL FORMS_START + 317 +#define SPECIES_ALCREMIE_RAINBOW_SWIRL FORMS_START + 318 // Eiscue -#define SPECIES_EISCUE_NOICE_FACE FORMS_START + 299 +#define SPECIES_EISCUE_NOICE_FACE FORMS_START + 319 // Indeedee -#define SPECIES_INDEEDEE_FEMALE FORMS_START + 300 +#define SPECIES_INDEEDEE_FEMALE FORMS_START + 320 // Morpeko -#define SPECIES_MORPEKO_HANGRY FORMS_START + 301 +#define SPECIES_MORPEKO_HANGRY FORMS_START + 321 // Zacian -#define SPECIES_ZACIAN_CROWNED_SWORD FORMS_START + 302 +#define SPECIES_ZACIAN_CROWNED_SWORD FORMS_START + 322 // Zamazenta -#define SPECIES_ZAMAZENTA_CROWNED_SHIELD FORMS_START + 303 +#define SPECIES_ZAMAZENTA_CROWNED_SHIELD FORMS_START + 323 // Eternatus -#define SPECIES_ETERNATUS_ETERNAMAX FORMS_START + 304 +#define SPECIES_ETERNATUS_ETERNAMAX FORMS_START + 324 // Urshifu -#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE FORMS_START + 305 +#define SPECIES_URSHIFU_RAPID_STRIKE_STYLE FORMS_START + 325 // Zarude -#define SPECIES_ZARUDE_DADA FORMS_START + 306 +#define SPECIES_ZARUDE_DADA FORMS_START + 326 // Calyrex -#define SPECIES_CALYREX_ICE_RIDER FORMS_START + 307 -#define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 308 +#define SPECIES_CALYREX_ICE_RIDER FORMS_START + 327 +#define SPECIES_CALYREX_SHADOW_RIDER FORMS_START + 328 #define SPECIES_EGG SPECIES_CALYREX_SHADOW_RIDER + 1 #define NUM_SPECIES SPECIES_EGG diff --git a/include/graphics.h b/include/graphics.h index 365b40dc14..724425260f 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -949,6 +949,14 @@ extern const u32 gMonFrontPic_Regidrago[]; extern const u32 gMonFrontPic_Glastrier[]; extern const u32 gMonFrontPic_Spectrier[]; extern const u32 gMonFrontPic_Calyrex[]; +//extern const u32 gMonFrontPic_Wyrdeer[]; +//extern const u32 gMonFrontPic_Kleavor[]; +//extern const u32 gMonFrontPic_Ursaluna[]; +//extern const u32 gMonFrontPic_Basculegion[]; +//extern const u32 gMonFrontPic_BasculegionF[]; +//extern const u32 gMonFrontPic_Sneasler[]; +//extern const u32 gMonFrontPic_Overqwil[]; +//extern const u32 gMonFrontPic_Enamorus[]; extern const u32 gMonFrontPic_VenusaurMega[]; extern const u32 gMonFrontPic_CharizardMegaX[]; extern const u32 gMonFrontPic_CharizardMegaY[]; @@ -1036,6 +1044,22 @@ extern const u32 gMonFrontPic_DarumakaGalarian[]; extern const u32 gMonFrontPic_DarmanitanGalarian[]; extern const u32 gMonFrontPic_YamaskGalarian[]; extern const u32 gMonFrontPic_StunfiskGalarian[]; +//extern const u32 gMonFrontPic_GrowlitheHisuian[]; +//extern const u32 gMonFrontPic_ArcanineHisuian[]; +//extern const u32 gMonFrontPic_VoltorbHisuian[]; +//extern const u32 gMonFrontPic_ElectrodeHisuian[]; +//extern const u32 gMonFrontPic_TyphlosionHisuian[]; +//extern const u32 gMonFrontPic_QwilfishHisuian[]; +//extern const u32 gMonFrontPic_SneaselHisuian[]; +//extern const u32 gMonFrontPic_SamurottHisuian[]; +//extern const u32 gMonFrontPic_LilligantHisuian[]; +//extern const u32 gMonFrontPic_ZoruaHisuian[]; +//extern const u32 gMonFrontPic_ZoroarkHisuian[]; +//extern const u32 gMonFrontPic_BraviaryHisuian[]; +//extern const u32 gMonFrontPic_SliggooHisuian[]; +//extern const u32 gMonFrontPic_GoodraHisuian[]; +//extern const u32 gMonFrontPic_AvaluggHisuian[]; +//extern const u32 gMonFrontPic_DecidueyeHisuian[]; extern const u32 gMonFrontPic_PikachuCosplay[]; extern const u32 gMonFrontPic_PikachuRockStar[]; extern const u32 gMonFrontPic_PikachuBelle[]; @@ -1096,9 +1120,12 @@ extern const u32 gMonFrontPic_RotomWash[]; extern const u32 gMonFrontPic_RotomFrost[]; extern const u32 gMonFrontPic_RotomFan[]; extern const u32 gMonFrontPic_RotomMow[]; +//extern const u32 gMonFrontPic_DialgaOrigin[]; +//extern const u32 gMonFrontPic_PalkiaOrigin[]; extern const u32 gMonFrontPic_GiratinaOrigin[]; extern const u32 gMonFrontPic_ShayminSky[]; extern const u32 gMonFrontPic_BasculinBlueStriped[]; +//extern const u32 gMonFrontPic_BasculinWhiteStriped[]; extern const u32 gMonFrontPic_DarmanitanZenMode[]; extern const u32 gMonFrontPic_DarmanitanZenModeGalarian[]; extern const u32 gMonFrontPic_SawsbuckSummer[]; @@ -1107,6 +1134,7 @@ extern const u32 gMonFrontPic_SawsbuckWinter[]; extern const u32 gMonFrontPic_TornadusTherian[]; extern const u32 gMonFrontPic_ThundurusTherian[]; extern const u32 gMonFrontPic_LandorusTherian[]; +//extern const u32 gMonFrontPic_EnamorusTherian[]; extern const u32 gMonFrontPic_KyuremWhite[]; extern const u32 gMonFrontPic_KyuremBlack[]; extern const u32 gMonFrontPic_KeldeoResolute[]; @@ -2101,6 +2129,14 @@ extern const u32 gMonBackPic_Regidrago[]; extern const u32 gMonBackPic_Glastrier[]; extern const u32 gMonBackPic_Spectrier[]; extern const u32 gMonBackPic_Calyrex[]; +//extern const u32 gMonBackPic_Wyrdeer[]; +//extern const u32 gMonBackPic_Kleavor[]; +//extern const u32 gMonBackPic_Ursaluna[]; +//extern const u32 gMonBackPic_Basculegion[]; +//extern const u32 gMonBackPic_BasculegionF[]; +//extern const u32 gMonBackPic_Sneasler[]; +//extern const u32 gMonBackPic_Overqwil[]; +//extern const u32 gMonBackPic_Enamorus[]; extern const u32 gMonBackPic_VenusaurMega[]; extern const u32 gMonBackPic_CharizardMegaX[]; extern const u32 gMonBackPic_CharizardMegaY[]; @@ -2188,6 +2224,22 @@ extern const u32 gMonBackPic_DarumakaGalarian[]; extern const u32 gMonBackPic_DarmanitanGalarian[]; extern const u32 gMonBackPic_YamaskGalarian[]; extern const u32 gMonBackPic_StunfiskGalarian[]; +//extern const u32 gMonBackPic_GrowlitheHisuian[]; +//extern const u32 gMonBackPic_ArcanineHisuian[]; +//extern const u32 gMonBackPic_VoltorbHisuian[]; +//extern const u32 gMonBackPic_ElectrodeHisuian[]; +//extern const u32 gMonBackPic_TyphlosionHisuian[]; +//extern const u32 gMonBackPic_QwilfishHisuian[]; +//extern const u32 gMonBackPic_SneaselHisuian[]; +//extern const u32 gMonBackPic_SamurottHisuian[]; +//extern const u32 gMonBackPic_LilligantHisuian[]; +//extern const u32 gMonBackPic_ZoruaHisuian[]; +//extern const u32 gMonBackPic_ZoroarkHisuian[]; +//extern const u32 gMonBackPic_BraviaryHisuian[]; +//extern const u32 gMonBackPic_SliggooHisuian[]; +//extern const u32 gMonBackPic_GoodraHisuian[]; +//extern const u32 gMonBackPic_AvaluggHisuian[]; +//extern const u32 gMonBackPic_DecidueyeHisuian[]; extern const u32 gMonBackPic_PikachuCosplay[]; extern const u32 gMonBackPic_PikachuRockStar[]; extern const u32 gMonBackPic_PikachuBelle[]; @@ -2248,9 +2300,12 @@ extern const u32 gMonBackPic_RotomWash[]; extern const u32 gMonBackPic_RotomFrost[]; extern const u32 gMonBackPic_RotomFan[]; extern const u32 gMonBackPic_RotomMow[]; +//extern const u32 gMonBackPic_DialgaOrigin[]; +//extern const u32 gMonBackPic_PalkiaOrigin[]; extern const u32 gMonBackPic_GiratinaOrigin[]; extern const u32 gMonBackPic_ShayminSky[]; extern const u32 gMonBackPic_BasculinBlueStriped[]; +//extern const u32 gMonBackPic_BasculinWhiteStriped[]; extern const u32 gMonBackPic_DarmanitanZenMode[]; extern const u32 gMonBackPic_DarmanitanZenModeGalarian[]; extern const u32 gMonBackPic_SawsbuckSummer[]; @@ -2259,6 +2314,7 @@ extern const u32 gMonBackPic_SawsbuckWinter[]; extern const u32 gMonBackPic_TornadusTherian[]; extern const u32 gMonBackPic_ThundurusTherian[]; extern const u32 gMonBackPic_LandorusTherian[]; +//extern const u32 gMonBackPic_EnamorusTherian[]; extern const u32 gMonBackPic_KyuremWhite[]; extern const u32 gMonBackPic_KyuremBlack[]; extern const u32 gMonBackPic_KeldeoResolute[]; @@ -3245,6 +3301,14 @@ extern const u32 gMonPalette_Regidrago[]; extern const u32 gMonPalette_Glastrier[]; extern const u32 gMonPalette_Spectrier[]; extern const u32 gMonPalette_Calyrex[]; +//extern const u32 gMonPalette_Wyrdeer[]; +//extern const u32 gMonPalette_Kleavor[]; +//extern const u32 gMonPalette_Ursaluna[]; +//extern const u32 gMonPalette_Basculegion[]; +//extern const u32 gMonPalette_BasculegionF[]; +//extern const u32 gMonPalette_Sneasler[]; +//extern const u32 gMonPalette_Overqwil[]; +//extern const u32 gMonPalette_Enamorus[]; extern const u32 gMonPalette_VenusaurMega[]; extern const u32 gMonPalette_CharizardMegaX[]; extern const u32 gMonPalette_CharizardMegaY[]; @@ -3332,6 +3396,22 @@ extern const u32 gMonPalette_DarumakaGalarian[]; extern const u32 gMonPalette_DarmanitanGalarian[]; extern const u32 gMonPalette_YamaskGalarian[]; extern const u32 gMonPalette_StunfiskGalarian[]; +//extern const u32 gMonPalette_GrowlitheHisuian[]; +//extern const u32 gMonPalette_ArcanineHisuian[]; +//extern const u32 gMonPalette_VoltorbHisuian[]; +//extern const u32 gMonPalette_ElectrodeHisuian[]; +//extern const u32 gMonPalette_TyphlosionHisuian[]; +//extern const u32 gMonPalette_QwilfishHisuian[]; +//extern const u32 gMonPalette_SneaselHisuian[]; +//extern const u32 gMonPalette_SamurottHisuian[]; +//extern const u32 gMonPalette_LilligantHisuian[]; +//extern const u32 gMonPalette_ZoruaHisuian[]; +//extern const u32 gMonPalette_ZoroarkHisuian[]; +//extern const u32 gMonPalette_BraviaryHisuian[]; +//extern const u32 gMonPalette_SliggooHisuian[]; +//extern const u32 gMonPalette_GoodraHisuian[]; +//extern const u32 gMonPalette_AvaluggHisuian[]; +//extern const u32 gMonPalette_DecidueyeHisuian[]; extern const u32 gMonPalette_PikachuCosplay[]; extern const u32 gMonPalette_PikachuRockStar[]; extern const u32 gMonPalette_PikachuBelle[]; @@ -3365,6 +3445,8 @@ extern const u32 gMonPalette_RotomWash[]; extern const u32 gMonPalette_RotomFrost[]; extern const u32 gMonPalette_RotomFan[]; extern const u32 gMonPalette_RotomMow[]; +//extern const u32 gMonPalette_DialgaOrigin[]; +//extern const u32 gMonPalette_PalkiaOrigin[]; extern const u32 gMonPalette_GiratinaOrigin[]; extern const u32 gMonPalette_ShayminSky[]; extern const u32 gMonPalette_ArceusFighting[]; @@ -3385,6 +3467,7 @@ extern const u32 gMonPalette_ArceusDragon[]; extern const u32 gMonPalette_ArceusDark[]; extern const u32 gMonPalette_ArceusFairy[]; extern const u32 gMonPalette_BasculinBlueStriped[]; +//extern const u32 gMonPalette_BasculinWhiteStriped[]; extern const u32 gMonPalette_DarmanitanZenMode[]; extern const u32 gMonPalette_DarmanitanZenModeGalarian[]; extern const u32 gMonPalette_DeerlingSummer[]; @@ -3396,6 +3479,7 @@ extern const u32 gMonPalette_SawsbuckWinter[]; extern const u32 gMonPalette_TornadusTherian[]; extern const u32 gMonPalette_ThundurusTherian[]; extern const u32 gMonPalette_LandorusTherian[]; +//extern const u32 gMonPalette_EnamorusTherian[]; extern const u32 gMonPalette_KyuremWhite[]; extern const u32 gMonPalette_KyuremBlack[]; extern const u32 gMonPalette_KeldeoResolute[]; @@ -4417,6 +4501,14 @@ extern const u32 gMonShinyPalette_Regidrago[]; extern const u32 gMonShinyPalette_Glastrier[]; extern const u32 gMonShinyPalette_Spectrier[]; extern const u32 gMonShinyPalette_Calyrex[]; +//extern const u32 gMonShinyPalette_Wyrdeer[]; +//extern const u32 gMonShinyPalette_Kleavor[]; +//extern const u32 gMonShinyPalette_Ursaluna[]; +//extern const u32 gMonShinyPalette_Basculegion[]; +//extern const u32 gMonShinyPalette_BasculegionF[]; +//extern const u32 gMonShinyPalette_Sneasler[]; +//extern const u32 gMonShinyPalette_Overqwil[]; +//extern const u32 gMonShinyPalette_Enamorus[]; extern const u32 gMonShinyPalette_VenusaurMega[]; extern const u32 gMonShinyPalette_CharizardMegaX[]; extern const u32 gMonShinyPalette_CharizardMegaY[]; @@ -4504,6 +4596,22 @@ extern const u32 gMonShinyPalette_DarumakaGalarian[]; extern const u32 gMonShinyPalette_DarmanitanGalarian[]; extern const u32 gMonShinyPalette_YamaskGalarian[]; extern const u32 gMonShinyPalette_StunfiskGalarian[]; +//extern const u32 gMonShinyPalette_GrowlitheHisuian[]; +//extern const u32 gMonShinyPalette_ArcanineHisuian[]; +//extern const u32 gMonShinyPalette_VoltorbHisuian[]; +//extern const u32 gMonShinyPalette_ElectrodeHisuian[]; +//extern const u32 gMonShinyPalette_TyphlosionHisuian[]; +//extern const u32 gMonShinyPalette_QwilfishHisuian[]; +//extern const u32 gMonShinyPalette_SneaselHisuian[]; +//extern const u32 gMonShinyPalette_SamurottHisuian[]; +//extern const u32 gMonShinyPalette_LilligantHisuian[]; +//extern const u32 gMonShinyPalette_ZoruaHisuian[]; +//extern const u32 gMonShinyPalette_ZoroarkHisuian[]; +//extern const u32 gMonShinyPalette_BraviaryHisuian[]; +//extern const u32 gMonShinyPalette_SliggooHisuian[]; +//extern const u32 gMonShinyPalette_GoodraHisuian[]; +//extern const u32 gMonShinyPalette_AvaluggHisuian[]; +//extern const u32 gMonShinyPalette_DecidueyeHisuian[]; extern const u32 gMonShinyPalette_PikachuCosplay[]; extern const u32 gMonShinyPalette_PikachuRockStar[]; extern const u32 gMonShinyPalette_PikachuBelle[]; @@ -4537,6 +4645,8 @@ extern const u32 gMonShinyPalette_RotomWash[]; extern const u32 gMonShinyPalette_RotomFrost[]; extern const u32 gMonShinyPalette_RotomFan[]; extern const u32 gMonShinyPalette_RotomMow[]; +//extern const u32 gMonShinyPalette_DialgaOrigin[]; +//extern const u32 gMonShinyPalette_PalkiaOrigin[]; extern const u32 gMonShinyPalette_GiratinaOrigin[]; extern const u32 gMonShinyPalette_ShayminSky[]; extern const u32 gMonShinyPalette_ArceusFighting[]; @@ -4557,6 +4667,7 @@ extern const u32 gMonShinyPalette_ArceusDragon[]; extern const u32 gMonShinyPalette_ArceusDark[]; extern const u32 gMonShinyPalette_ArceusFairy[]; extern const u32 gMonShinyPalette_BasculinBlueStriped[]; +//extern const u32 gMonShinyPalette_BasculinWhiteStriped[]; extern const u32 gMonShinyPalette_DarmanitanZenMode[]; extern const u32 gMonShinyPalette_DarmanitanZenModeGalarian[]; extern const u32 gMonShinyPalette_DeerlingSummer[]; @@ -4568,6 +4679,7 @@ extern const u32 gMonShinyPalette_SawsbuckWinter[]; extern const u32 gMonShinyPalette_TornadusTherian[]; extern const u32 gMonShinyPalette_ThundurusTherian[]; extern const u32 gMonShinyPalette_LandorusTherian[]; +//extern const u32 gMonShinyPalette_EnamorusTherian[]; extern const u32 gMonShinyPalette_KyuremWhite[]; extern const u32 gMonShinyPalette_KyuremBlack[]; extern const u32 gMonShinyPalette_KeldeoResolute[]; @@ -5577,7 +5689,15 @@ extern const u8 gMonIcon_Regieleki[]; extern const u8 gMonIcon_Regidrago[]; extern const u8 gMonIcon_Glastrier[]; extern const u8 gMonIcon_Spectrier[]; -//extern const u8 gMonIcon_Calyrex[]; +extern const u8 gMonIcon_Calyrex[]; +extern const u8 gMonIcon_Wyrdeer[]; +extern const u8 gMonIcon_Kleavor[]; +extern const u8 gMonIcon_Ursaluna[]; +extern const u8 gMonIcon_Basculegion[]; +extern const u8 gMonIcon_BasculegionF[]; +extern const u8 gMonIcon_Sneasler[]; +extern const u8 gMonIcon_Overqwil[]; +extern const u8 gMonIcon_Enamorus[]; extern const u8 gMonIcon_VenusaurMega[]; extern const u8 gMonIcon_CharizardMegaX[]; extern const u8 gMonIcon_CharizardMegaY[]; @@ -5665,6 +5785,22 @@ extern const u8 gMonIcon_DarumakaGalarian[]; extern const u8 gMonIcon_DarmanitanGalarian[]; extern const u8 gMonIcon_YamaskGalarian[]; extern const u8 gMonIcon_StunfiskGalarian[]; +extern const u8 gMonIcon_GrowlitheHisuian[]; +extern const u8 gMonIcon_ArcanineHisuian[]; +extern const u8 gMonIcon_VoltorbHisuian[]; +extern const u8 gMonIcon_ElectrodeHisuian[]; +extern const u8 gMonIcon_TyphlosionHisuian[]; +extern const u8 gMonIcon_QwilfishHisuian[]; +extern const u8 gMonIcon_SneaselHisuian[]; +extern const u8 gMonIcon_SamurottHisuian[]; +extern const u8 gMonIcon_LilligantHisuian[]; +extern const u8 gMonIcon_ZoruaHisuian[]; +extern const u8 gMonIcon_ZoroarkHisuian[]; +extern const u8 gMonIcon_BraviaryHisuian[]; +extern const u8 gMonIcon_SliggooHisuian[]; +extern const u8 gMonIcon_GoodraHisuian[]; +extern const u8 gMonIcon_AvaluggHisuian[]; +extern const u8 gMonIcon_DecidueyeHisuian[]; extern const u8 gMonIcon_PikachuCosplay[]; extern const u8 gMonIcon_PikachuRockStar[]; extern const u8 gMonIcon_PikachuBelle[]; @@ -5724,9 +5860,12 @@ extern const u8 gMonIcon_RotomWash[]; extern const u8 gMonIcon_RotomFrost[]; extern const u8 gMonIcon_RotomFan[]; extern const u8 gMonIcon_RotomMow[]; +extern const u8 gMonIcon_DialgaOrigin[]; +extern const u8 gMonIcon_PalkiaOrigin[]; extern const u8 gMonIcon_GiratinaOrigin[]; extern const u8 gMonIcon_ShayminSky[]; extern const u8 gMonIcon_BasculinBlueStriped[]; +extern const u8 gMonIcon_BasculinWhiteStriped[]; extern const u8 gMonIcon_DarmanitanZenMode[]; extern const u8 gMonIcon_DarmanitanZenModeGalarian[]; extern const u8 gMonIcon_DeerlingSummer[]; @@ -5738,6 +5877,7 @@ extern const u8 gMonIcon_SawsbuckWinter[]; extern const u8 gMonIcon_TornadusTherian[]; extern const u8 gMonIcon_ThundurusTherian[]; extern const u8 gMonIcon_LandorusTherian[]; +extern const u8 gMonIcon_EnamorusTherian[]; extern const u8 gMonIcon_KyuremWhite[]; extern const u8 gMonIcon_KyuremBlack[]; extern const u8 gMonIcon_KeldeoResolute[]; @@ -6729,6 +6869,13 @@ extern const u8 gMonFootprint_Regidrago[]; extern const u8 gMonFootprint_Glastrier[]; extern const u8 gMonFootprint_Spectrier[]; extern const u8 gMonFootprint_Calyrex[]; +//extern const u8 gMonFootprint_Wyrdeer[]; +//extern const u8 gMonFootprint_Kleavor[]; +//extern const u8 gMonFootprint_Ursaluna[]; +//extern const u8 gMonFootprint_Basculegion[]; +//extern const u8 gMonFootprint_Sneasler[]; +//extern const u8 gMonFootprint_Overqwil[]; +//extern const u8 gMonFootprint_Enamorus[]; // trainer sprites extern const u32 gTrainerFrontPic_Hiker[]; diff --git a/sound/cry_tables.inc b/sound/cry_tables.inc index d1b33a637e..5505c73212 100644 --- a/sound/cry_tables.inc +++ b/sound/cry_tables.inc @@ -898,6 +898,13 @@ gCryTable:: cry Cry_Glastrier cry Cry_Spectrier cry Cry_Calyrex + cry Cry_Bulbasaur //Cry_Wyrdeer + cry Cry_Bulbasaur //Cry_Kleavor + cry Cry_Bulbasaur //Cry_Ursaluna + cry Cry_Bulbasaur //Cry_Basculegion + cry Cry_Bulbasaur //Cry_Sneasler + cry Cry_Bulbasaur //Cry_Overqwil + cry Cry_Bulbasaur //Cry_Enamorus @ Megas cry Cry_VenusaurMega cry Cry_CharizardMegaX @@ -989,6 +996,23 @@ gCryTable:: cry Cry_Darmanitan cry Cry_Yamask cry Cry_Stunfisk + @ Hisuian Forms + cry Cry_Growlithe + cry Cry_Arcanine + cry Cry_Voltorb + cry Cry_Electrode + cry Cry_Typhlosion + cry Cry_Qwilfish + cry Cry_Sneasel + cry Cry_Samurott + cry Cry_Lilligant + cry Cry_Zorua + cry Cry_Zoroark + cry Cry_Braviary + cry Cry_Sliggoo + cry Cry_Goodra + cry Cry_Avalugg + cry Cry_Decidueye @ Misc Forms @ Cosplay Pikachu cry Cry_Pikachu @@ -1062,7 +1086,9 @@ gCryTable:: cry Cry_Rotom cry Cry_Rotom cry Cry_Rotom - @ Giratina + @ Origin Forme + cry Cry_Dialga + cry Cry_Palkia cry Cry_Giratina @ Shaymin cry Cry_ShayminSky @@ -1086,6 +1112,7 @@ gCryTable:: cry Cry_Arceus @ Basculin cry Cry_Basculin + cry Cry_Basculin @ Darmanitan cry Cry_Darmanitan cry Cry_Darmanitan @@ -2172,6 +2199,13 @@ gCryTable_Reverse:: cry_reverse Cry_Glastrier cry_reverse Cry_Spectrier cry_reverse Cry_Calyrex + cry_reverse Cry_Bulbasaur //Cry_Wyrdeer + cry_reverse Cry_Bulbasaur //Cry_Kleavor + cry_reverse Cry_Bulbasaur //Cry_Ursaluna + cry_reverse Cry_Bulbasaur //Cry_Basculegion + cry_reverse Cry_Bulbasaur //Cry_Sneasler + cry_reverse Cry_Bulbasaur //Cry_Overqwil + cry_reverse Cry_Bulbasaur //Cry_Enamorus @ Megas cry_reverse Cry_VenusaurMega cry_reverse Cry_CharizardMegaX @@ -2263,6 +2297,23 @@ gCryTable_Reverse:: cry_reverse Cry_Darmanitan cry_reverse Cry_Yamask cry_reverse Cry_Stunfisk + @ Hisuian Forms + cry_reverse Cry_Growlithe + cry_reverse Cry_Arcanine + cry_reverse Cry_Voltorb + cry_reverse Cry_Electrode + cry_reverse Cry_Typhlosion + cry_reverse Cry_Qwilfish + cry_reverse Cry_Sneasel + cry_reverse Cry_Samurott + cry_reverse Cry_Lilligant + cry_reverse Cry_Zorua + cry_reverse Cry_Zoroark + cry_reverse Cry_Braviary + cry_reverse Cry_Sliggoo + cry_reverse Cry_Goodra + cry_reverse Cry_Avalugg + cry_reverse Cry_Decidueye @ Misc Forms @ Cosplay Pikachu cry_reverse Cry_Pikachu @@ -2336,7 +2387,9 @@ gCryTable_Reverse:: cry_reverse Cry_Rotom cry_reverse Cry_Rotom cry_reverse Cry_Rotom - @ Giratina + @ Origin Forme + cry_reverse Cry_Dialga + cry_reverse Cry_Palkia cry_reverse Cry_Giratina @ Shaymin cry_reverse Cry_ShayminSky @@ -2360,6 +2413,7 @@ gCryTable_Reverse:: cry_reverse Cry_Arceus @ Basculin cry_reverse Cry_Basculin + cry_reverse Cry_Basculin @ Darmanitan cry_reverse Cry_Darmanitan cry_reverse Cry_Darmanitan @@ -2375,6 +2429,7 @@ gCryTable_Reverse:: cry_reverse Cry_TornadusTherian cry_reverse Cry_ThundurusTherian cry_reverse Cry_LandorusTherian + cry_reverse Cry_Bulbasaur //Cry_EnamorusTherian @ Kyurem cry_reverse Cry_KyuremWhite cry_reverse Cry_KyuremBlack diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index bddd27423d..6ec747940b 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -3977,6 +3977,35 @@ Cry_Spectrier:: .align 2 Cry_Calyrex:: .incbin "sound/direct_sound_samples/cries/calyrex.bin" +/* + .align 2 +Cry_Wyrdeer:: + .incbin "sound/direct_sound_samples/cries/wyrdeer.bin" + + .align 2 +Cry_Kleavor:: + .incbin "sound/direct_sound_samples/cries/kleavor.bin" + + .align 2 +Cry_Ursaluna:: + .incbin "sound/direct_sound_samples/cries/ursaluna.bin" + + .align 2 +Cry_Basculegion:: + .incbin "sound/direct_sound_samples/cries/basculegion.bin" + + .align 2 +Cry_Sneasler:: + .incbin "sound/direct_sound_samples/cries/sneasler.bin" + + .align 2 +Cry_Overqwil:: + .incbin "sound/direct_sound_samples/cries/overqwil.bin" + + .align 2 +Cry_Enamorus:: + .incbin "sound/direct_sound_samples/cries/enamorus.bin" +*/ .align 2 Cry_VenusaurMega:: @@ -4197,6 +4226,11 @@ Cry_ThundurusTherian:: .align 2 Cry_LandorusTherian:: .incbin "sound/direct_sound_samples/cries/landorus_therian.bin" +/* + .align 2 +Cry_EnamorusTherian:: + .incbin "sound/direct_sound_samples/cries/enamorus_therian.bin" +*/ .align 2 Cry_KyuremWhite:: diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 05332ea459..78aa7ee876 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -912,6 +912,14 @@ const u32 gMonFrontPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/fron const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/front.4bpp.lz"); const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); +//const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); +//const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); +//const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); +//const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); +//const u32 gMonFrontPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/frontf.4bpp.lz"); +//const u32 gMonFrontPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/front.4bpp.lz"); +//const u32 gMonFrontPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/front.4bpp.lz"); +//const u32 gMonFrontPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/front.4bpp.lz"); const u32 gMonFrontPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/mega_venusaur/front.4bpp.lz"); const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/mega_charizard_x/front.4bpp.lz"); const u32 gMonFrontPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/mega_charizard_y/front.4bpp.lz"); @@ -999,6 +1007,22 @@ const u32 gMonFrontPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumak const u32 gMonFrontPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/front.4bpp.lz"); const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); +//const u32 gMonFrontPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_VoltorbHisuian[]] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_ElectrodeHisuian[]] = INCBIN_U32("graphics/pokemon/electrode/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_TyphlosionHisuian[]] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_QwilfishHisuian[]] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_SneaselHisuian[]] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_SamurottHisuian[]] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_LilligantHisuian[]] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_ZoruaHisuian[]] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_ZoroarkHisuian[]] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_BraviaryHisuian[]] = INCBIN_U32("graphics/pokemon/braviary/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_SliggooHisuian[]] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_GoodraHisuian[]] = INCBIN_U32("graphics/pokemon/goodra/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_AvaluggHisuian[]] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); +//const u32 gMonFrontPic_DecidueyeHisuian[]] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); const u32 gMonFrontPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/front.4bpp.lz"); const u32 gMonFrontPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/front.4bpp.lz"); const u32 gMonFrontPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/front.4bpp.lz"); @@ -1059,9 +1083,12 @@ const u32 gMonFrontPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/ani const u32 gMonFrontPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/anim_front.4bpp.lz"); const u32 gMonFrontPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/anim_front.4bpp.lz"); const u32 gMonFrontPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/anim_front.4bpp.lz"); +//const u32 gMonFrontPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/front.4bpp.lz"); +//const u32 gMonFrontPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/front.4bpp.lz"); const u32 gMonFrontPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/anim_front.4bpp.lz"); const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/anim_front.4bpp.lz"); const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); +//const u32 gMonFrontPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/front.4bpp.lz"); const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); const u32 gMonFrontPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/front.4bpp.lz"); const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); @@ -1070,6 +1097,7 @@ const u32 gMonFrontPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/ const u32 gMonFrontPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/anim_front.4bpp.lz"); const u32 gMonFrontPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/anim_front.4bpp.lz"); const u32 gMonFrontPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/anim_front.4bpp.lz"); +//const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); const u32 gMonFrontPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/anim_front.4bpp.lz"); const u32 gMonFrontPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/anim_front.4bpp.lz"); const u32 gMonFrontPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/front.4bpp.lz"); @@ -2064,6 +2092,14 @@ const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back. const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); +//const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); +//const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); +//const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); +//const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); +//const u32 gMonBackPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/backf.4bpp.lz"); +//const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); +//const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); +//const u32 gMonBackPic_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); const u32 gMonBackPic_VenusaurMega[] = INCBIN_U32("graphics/pokemon/mega_venusaur/back.4bpp.lz"); const u32 gMonBackPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/mega_charizard_x/back.4bpp.lz"); const u32 gMonBackPic_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/mega_charizard_y/back.4bpp.lz"); @@ -2151,6 +2187,22 @@ const u32 gMonBackPic_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka const u32 gMonBackPic_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/back.4bpp.lz"); const u32 gMonBackPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/back.4bpp.lz"); const u32 gMonBackPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/back.4bpp.lz"); +//const u32 gMonBackPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_VoltorbHisuian[]] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_ElectrodeHisuian[]] = INCBIN_U32("graphics/pokemon/electrode/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_TyphlosionHisuian[]] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_QwilfishHisuian[]] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_SneaselHisuian[]] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_SamurottHisuian[]] = INCBIN_U32("graphics/pokemon/samurott/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_LilligantHisuian[]] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_ZoruaHisuian[]] = INCBIN_U32("graphics/pokemon/zorua/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_ZoroarkHisuian[]] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_BraviaryHisuian[]] = INCBIN_U32("graphics/pokemon/braviary/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_SliggooHisuian[]] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_GoodraHisuian[]] = INCBIN_U32("graphics/pokemon/goodra/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_AvaluggHisuian[]] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/back.4bpp.lz"); +//const u32 gMonBackPic_DecidueyeHisuian[]] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/back.4bpp.lz"); const u32 gMonBackPic_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/back.4bpp.lz"); const u32 gMonBackPic_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/back.4bpp.lz"); const u32 gMonBackPic_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/back.4bpp.lz"); @@ -2211,9 +2263,12 @@ const u32 gMonBackPic_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/back const u32 gMonBackPic_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/back.4bpp.lz"); const u32 gMonBackPic_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/back.4bpp.lz"); const u32 gMonBackPic_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/back.4bpp.lz"); +//const u32 gMonBackPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/back.4bpp.lz"); +//const u32 gMonBackPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/back.4bpp.lz"); const u32 gMonBackPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/back.4bpp.lz"); const u32 gMonBackPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/back.4bpp.lz"); const u32 gMonBackPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/back.4bpp.lz"); +//const u32 gMonBackPic_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/back.4bpp.lz"); const u32 gMonBackPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/back.4bpp.lz"); const u32 gMonBackPic_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/back.4bpp.lz"); const u32 gMonBackPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/back.4bpp.lz"); @@ -2222,6 +2277,7 @@ const u32 gMonBackPic_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/w const u32 gMonBackPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/back.4bpp.lz"); const u32 gMonBackPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/back.4bpp.lz"); const u32 gMonBackPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/back.4bpp.lz"); +//const u32 gMonBackPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/back.4bpp.lz"); const u32 gMonBackPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/back.4bpp.lz"); const u32 gMonBackPic_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/back.4bpp.lz"); const u32 gMonBackPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/back.4bpp.lz"); @@ -3208,6 +3264,14 @@ const u32 gMonPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/norma const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/normal.gbapal.lz"); const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); +//const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); +//const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); +//const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); +//const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); +//const u32 gMonPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/normalf.gbapal.lz"); +//const u32 gMonPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/normal.gbapal.lz"); +//const u32 gMonPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/normal.gbapal.lz"); +//const u32 gMonPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/normal.gbapal.lz"); const u32 gMonPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/mega_venusaur/normal.gbapal.lz"); const u32 gMonPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/mega_charizard_x/normal.gbapal.lz"); const u32 gMonPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/mega_charizard_y/normal.gbapal.lz"); @@ -3295,6 +3359,22 @@ const u32 gMonPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/darumaka const u32 gMonPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/normal.gbapal.lz"); const u32 gMonPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/normal.gbapal.lz"); const u32 gMonPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/normal.gbapal.lz"); +//const u32 gMonPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_VoltorbHisuian[]] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_ElectrodeHisuian[]] = INCBIN_U32("graphics/pokemon/electrode/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_TyphlosionHisuian[]] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_QwilfishHisuian[]] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_SneaselHisuian[]] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_SamurottHisuian[]] = INCBIN_U32("graphics/pokemon/samurott/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_LilligantHisuian[]] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_ZoruaHisuian[]] = INCBIN_U32("graphics/pokemon/zorua/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_ZoroarkHisuian[]] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_BraviaryHisuian[]] = INCBIN_U32("graphics/pokemon/braviary/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_SliggooHisuian[]] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_GoodraHisuian[]] = INCBIN_U32("graphics/pokemon/goodra/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_AvaluggHisuian[]] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/normal.gbapal.lz"); +//const u32 gMonPalette_DecidueyeHisuian[]] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/normal.gbapal.lz"); const u32 gMonPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/normal.gbapal.lz"); const u32 gMonPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/normal.gbapal.lz"); const u32 gMonPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/normal.gbapal.lz"); @@ -3328,6 +3408,8 @@ const u32 gMonPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash/norm const u32 gMonPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/normal.gbapal.lz"); const u32 gMonPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/normal.gbapal.lz"); const u32 gMonPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/normal.gbapal.lz"); +//const u32 gMonPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/normal.gbapal.lz"); +//const u32 gMonPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/normal.gbapal.lz"); const u32 gMonPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/normal.gbapal.lz"); const u32 gMonPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/normal.gbapal.lz"); const u32 gMonPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/normal.gbapal.lz"); @@ -3348,6 +3430,7 @@ const u32 gMonPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/drago const u32 gMonPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/normal.gbapal.lz"); const u32 gMonPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/normal.gbapal.lz"); const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); +//const u32 gMonPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/normal.gbapal.lz"); const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); const u32 gMonPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/normal.gbapal.lz"); const u32 gMonPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/normal.gbapal.lz"); @@ -3359,6 +3442,7 @@ const u32 gMonPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsbuck/w const u32 gMonPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/normal.gbapal.lz"); const u32 gMonPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/normal.gbapal.lz"); const u32 gMonPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/normal.gbapal.lz"); +//const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); const u32 gMonPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/normal.gbapal.lz"); const u32 gMonPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/normal.gbapal.lz"); const u32 gMonPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/normal.gbapal.lz"); @@ -4379,6 +4463,14 @@ const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/ const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/shinyf.gbapal.lz"); +//const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_Enamorus[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); const u32 gMonShinyPalette_VenusaurMega[] = INCBIN_U32("graphics/pokemon/mega_venusaur/shiny.gbapal.lz"); const u32 gMonShinyPalette_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/mega_charizard_x/shiny.gbapal.lz"); const u32 gMonShinyPalette_CharizardMegaY[] = INCBIN_U32("graphics/pokemon/mega_charizard_y/shiny.gbapal.lz"); @@ -4466,6 +4558,22 @@ const u32 gMonShinyPalette_DarumakaGalarian[] = INCBIN_U32("graphics/pokemon/dar const u32 gMonShinyPalette_DarmanitanGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_ArcanineHisuian[] = INCBIN_U32("graphics/pokemon/arcanine/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_VoltorbHisuian[]] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_ElectrodeHisuian[]] = INCBIN_U32("graphics/pokemon/electrode/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_TyphlosionHisuian[]] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_QwilfishHisuian[]] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_SneaselHisuian[]] = INCBIN_U32("graphics/pokemon/sneasel/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_SamurottHisuian[]] = INCBIN_U32("graphics/pokemon/samurott/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_LilligantHisuian[]] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_ZoruaHisuian[]] = INCBIN_U32("graphics/pokemon/zorua/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_ZoroarkHisuian[]] = INCBIN_U32("graphics/pokemon/zoroark/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_BraviaryHisuian[]] = INCBIN_U32("graphics/pokemon/braviary/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_SliggooHisuian[]] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_GoodraHisuian[]] = INCBIN_U32("graphics/pokemon/goodra/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_AvaluggHisuian[]] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_DecidueyeHisuian[]] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/shiny.gbapal.lz"); const u32 gMonShinyPalette_PikachuCosplay[] = INCBIN_U32("graphics/pokemon/pikachu/cosplay/shiny.gbapal.lz"); const u32 gMonShinyPalette_PikachuRockStar[] = INCBIN_U32("graphics/pokemon/pikachu/rock_star/shiny.gbapal.lz"); const u32 gMonShinyPalette_PikachuBelle[] = INCBIN_U32("graphics/pokemon/pikachu/belle/shiny.gbapal.lz"); @@ -4499,6 +4607,8 @@ const u32 gMonShinyPalette_RotomWash[] = INCBIN_U32("graphics/pokemon/rotom/wash const u32 gMonShinyPalette_RotomFrost[] = INCBIN_U32("graphics/pokemon/rotom/frost/shiny.gbapal.lz"); const u32 gMonShinyPalette_RotomFan[] = INCBIN_U32("graphics/pokemon/rotom/fan/shiny.gbapal.lz"); const u32 gMonShinyPalette_RotomMow[] = INCBIN_U32("graphics/pokemon/rotom/mow/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/shiny.gbapal.lz"); const u32 gMonShinyPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/shiny.gbapal.lz"); const u32 gMonShinyPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/shiny.gbapal.lz"); const u32 gMonShinyPalette_ArceusFighting[] = INCBIN_U32("graphics/pokemon/arceus/fighting/shiny.gbapal.lz"); @@ -4519,6 +4629,7 @@ const u32 gMonShinyPalette_ArceusDragon[] = INCBIN_U32("graphics/pokemon/arceus/ const u32 gMonShinyPalette_ArceusDark[] = INCBIN_U32("graphics/pokemon/arceus/dark/shiny.gbapal.lz"); const u32 gMonShinyPalette_ArceusFairy[] = INCBIN_U32("graphics/pokemon/arceus/fairy/shiny.gbapal.lz"); const u32 gMonShinyPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_BasculinWhiteStriped[] = INCBIN_U32("graphics/pokemon/basculin/white_striped/shiny.gbapal.lz"); const u32 gMonShinyPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/shiny.gbapal.lz"); const u32 gMonShinyPalette_DarmanitanZenModeGalarian[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/galarian/shiny.gbapal.lz"); const u32 gMonShinyPalette_DeerlingSummer[] = INCBIN_U32("graphics/pokemon/deerling/summer/shiny.gbapal.lz"); @@ -4530,6 +4641,7 @@ const u32 gMonShinyPalette_SawsbuckWinter[] = INCBIN_U32("graphics/pokemon/sawsb const u32 gMonShinyPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/shiny.gbapal.lz"); const u32 gMonShinyPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/shiny.gbapal.lz"); const u32 gMonShinyPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/shiny.gbapal.lz"); +//const u32 gMonShinyPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/shiny.gbapal.lz"); const u32 gMonShinyPalette_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/shiny.gbapal.lz"); const u32 gMonShinyPalette_KyuremBlack[] = INCBIN_U32("graphics/pokemon/kyurem/black/shiny.gbapal.lz"); const u32 gMonShinyPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/shiny.gbapal.lz"); @@ -5539,7 +5651,15 @@ const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp" const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); const u8 gMonIcon_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/icon.4bpp"); const u8 gMonIcon_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/icon.4bpp"); -//const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); +const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); +const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); +const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); +const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); +const u8 gMonIcon_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); +const u8 gMonIcon_BasculegionF[] = INCBIN_U8("graphics/pokemon/basculegion/iconf.4bpp"); +const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); +const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); +const u8 gMonIcon_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); const u8 gMonIcon_VenusaurMega[] = INCBIN_U8("graphics/pokemon/mega_venusaur/icon.4bpp"); const u8 gMonIcon_CharizardMegaX[] = INCBIN_U8("graphics/pokemon/mega_charizard_x/icon.4bpp"); const u8 gMonIcon_CharizardMegaY[] = INCBIN_U8("graphics/pokemon/mega_charizard_y/icon.4bpp"); @@ -5627,6 +5747,22 @@ const u8 gMonIcon_DarumakaGalarian[] = INCBIN_U8("graphics/pokemon/darumaka/gala const u8 gMonIcon_DarmanitanGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/galarian/icon.4bpp"); const u8 gMonIcon_YamaskGalarian[] = INCBIN_U8("graphics/pokemon/yamask/galarian/icon.4bpp"); const u8 gMonIcon_StunfiskGalarian[] = INCBIN_U8("graphics/pokemon/stunfisk/galarian/icon.4bpp"); +const u8 gMonIcon_GrowlitheHisuian[] = INCBIN_U8("graphics/pokemon/growlithe/hisuian/icon.4bpp"); +const u8 gMonIcon_ArcanineHisuian[] = INCBIN_U8("graphics/pokemon/arcanine/hisuian/icon.4bpp"); +const u8 gMonIcon_VoltorbHisuian[] = INCBIN_U8("graphics/pokemon/voltorb/hisuian/icon.4bpp"); +const u8 gMonIcon_ElectrodeHisuian[] = INCBIN_U8("graphics/pokemon/electrode/hisuian/icon.4bpp"); +const u8 gMonIcon_TyphlosionHisuian[] = INCBIN_U8("graphics/pokemon/typhlosion/hisuian/icon.4bpp"); +const u8 gMonIcon_QwilfishHisuian[] = INCBIN_U8("graphics/pokemon/qwilfish/hisuian/icon.4bpp"); +const u8 gMonIcon_SneaselHisuian[] = INCBIN_U8("graphics/pokemon/sneasel/hisuian/icon.4bpp"); +const u8 gMonIcon_SamurottHisuian[] = INCBIN_U8("graphics/pokemon/samurott/hisuian/icon.4bpp"); +const u8 gMonIcon_LilligantHisuian[] = INCBIN_U8("graphics/pokemon/lilligant/hisuian/icon.4bpp"); +const u8 gMonIcon_ZoruaHisuian[] = INCBIN_U8("graphics/pokemon/zorua/hisuian/icon.4bpp"); +const u8 gMonIcon_ZoroarkHisuian[] = INCBIN_U8("graphics/pokemon/zoroark/hisuian/icon.4bpp"); +const u8 gMonIcon_BraviaryHisuian[] = INCBIN_U8("graphics/pokemon/braviary/hisuian/icon.4bpp"); +const u8 gMonIcon_SliggooHisuian[] = INCBIN_U8("graphics/pokemon/sliggoo/hisuian/icon.4bpp"); +const u8 gMonIcon_GoodraHisuian[] = INCBIN_U8("graphics/pokemon/goodra/hisuian/icon.4bpp"); +const u8 gMonIcon_AvaluggHisuian[] = INCBIN_U8("graphics/pokemon/avalugg/hisuian/icon.4bpp"); +const u8 gMonIcon_DecidueyeHisuian[] = INCBIN_U8("graphics/pokemon/decidueye/hisuian/icon.4bpp"); const u8 gMonIcon_PikachuCosplay[] = INCBIN_U8("graphics/pokemon/pikachu/cosplay/icon.4bpp"); const u8 gMonIcon_PikachuRockStar[] = INCBIN_U8("graphics/pokemon/pikachu/rock_star/icon.4bpp"); const u8 gMonIcon_PikachuBelle[] = INCBIN_U8("graphics/pokemon/pikachu/belle/icon.4bpp"); @@ -5686,9 +5822,12 @@ const u8 gMonIcon_RotomWash[] = INCBIN_U8("graphics/pokemon/rotom/wash/icon.4bpp const u8 gMonIcon_RotomFrost[] = INCBIN_U8("graphics/pokemon/rotom/frost/icon.4bpp"); const u8 gMonIcon_RotomFan[] = INCBIN_U8("graphics/pokemon/rotom/fan/icon.4bpp"); const u8 gMonIcon_RotomMow[] = INCBIN_U8("graphics/pokemon/rotom/mow/icon.4bpp"); +const u8 gMonIcon_DialgaOrigin[] = INCBIN_U8("graphics/pokemon/dialga/origin/icon.4bpp"); +const u8 gMonIcon_PalkiaOrigin[] = INCBIN_U8("graphics/pokemon/palkia/origin/icon.4bpp"); const u8 gMonIcon_GiratinaOrigin[] = INCBIN_U8("graphics/pokemon/giratina/origin/icon.4bpp"); const u8 gMonIcon_ShayminSky[] = INCBIN_U8("graphics/pokemon/shaymin/sky/icon.4bpp"); const u8 gMonIcon_BasculinBlueStriped[] = INCBIN_U8("graphics/pokemon/basculin/blue_striped/icon.4bpp"); +const u8 gMonIcon_BasculinWhiteStriped[] = INCBIN_U8("graphics/pokemon/basculin/white_striped/icon.4bpp"); const u8 gMonIcon_DarmanitanZenMode[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/icon.4bpp"); const u8 gMonIcon_DarmanitanZenModeGalarian[] = INCBIN_U8("graphics/pokemon/darmanitan/zen_mode/galarian/icon.4bpp"); const u8 gMonIcon_DeerlingSummer[] = INCBIN_U8("graphics/pokemon/deerling/summer/icon.4bpp"); @@ -5700,6 +5839,7 @@ const u8 gMonIcon_SawsbuckWinter[] = INCBIN_U8("graphics/pokemon/sawsbuck/winter const u8 gMonIcon_TornadusTherian[] = INCBIN_U8("graphics/pokemon/tornadus/therian/icon.4bpp"); const u8 gMonIcon_ThundurusTherian[] = INCBIN_U8("graphics/pokemon/thundurus/therian/icon.4bpp"); const u8 gMonIcon_LandorusTherian[] = INCBIN_U8("graphics/pokemon/landorus/therian/icon.4bpp"); +const u8 gMonIcon_EnamorusTherian[] = INCBIN_U8("graphics/pokemon/enamorus/therian/icon.4bpp"); const u8 gMonIcon_KyuremWhite[] = INCBIN_U8("graphics/pokemon/kyurem/white/icon.4bpp"); const u8 gMonIcon_KyuremBlack[] = INCBIN_U8("graphics/pokemon/kyurem/black/icon.4bpp"); const u8 gMonIcon_KeldeoResolute[] = INCBIN_U8("graphics/pokemon/keldeo/resolute/icon.4bpp"); @@ -6691,3 +6831,10 @@ const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footp const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); +//const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); +//const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); +//const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); +//const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); +//const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); +//const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); +//const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index cfe6bd0f0b..df2b133a6e 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -22837,6 +22837,177 @@ const struct BaseStats gBaseStats[] = .flags = FLAG_LEGENDARY, }, + [SPECIES_WYRDEER] = + { + .baseHP = 103, + .baseAttack = 105, + .baseDefense = 72, + .baseSpeed = 65, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 184, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_INTIMIDATE, ABILITY_FRISK, ABILITY_SAP_SIPPER}, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_KLEAVOR] = + { + .baseHP = 70, + .baseAttack = 135, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 45, + .baseSpDefense = 70, + .type1 = TYPE_BUG, + .type2 = TYPE_ROCK, + .catchRate = 25, + .expYield = 175, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .abilities = {ABILITY_SWARM, ABILITY_SHEER_FORCE, ABILITY_STEADFAST}, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_URSALUNA] = + { + .baseHP = 130, + .baseAttack = 140, + .baseDefense = 105, + .baseSpeed = 50, + .baseSpAttack = 45, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_NORMAL, + .catchRate = 75, + .expYield = 194, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_GUTS, ABILITY_BULLETPROOF, ABILITY_UNNERVE}, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_BASCULEGION] = + { + .baseHP = 120, + .baseAttack = 112, + .baseDefense = 65, + .baseSpeed = 78, + .baseSpAttack = 80, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_GHOST, + .catchRate = 25, + .expYield = 186, + .evYield_HP = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + .flags = FLAG_GENDER_DIFFERENCE, + }, + + [SPECIES_SNEASLER] = + { + .baseHP = 80, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 120, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_POISON, + .catchRate = 135, + .expYield = 179, + .evYield_Attack = 1, + .evYield_Speed = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_POISON_TOUCH}, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_OVERQWIL] = + { + .baseHP = 85, + .baseAttack = 115, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_DARK, + .type2 = TYPE_POISON, + .catchRate = 135, + .expYield = 180, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ENAMORUS] = + { + .baseHP = 74, + .baseAttack = 115, + .baseDefense = 70, + .baseSpeed = 106, + .baseSpAttack = 135, + .baseSpDefense = 80, + .type1 = TYPE_FAIRY, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 261, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_CONTRARY}, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + .flags = FLAG_LEGENDARY, + }, + [SPECIES_VENUSAUR_MEGA] = { .baseHP = 80, @@ -25022,6 +25193,414 @@ const struct BaseStats gBaseStats[] = .flags = FLAG_GALARIAN_FORM, }, + [SPECIES_GROWLITHE_HISUIAN] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 45, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_ROCK, + .catchRate = 190, + .expYield = 70, + .evYield_Attack = 1, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_ARCANINE_HISUIAN] = + { + .baseHP = 95, + .baseAttack = 115, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_ROCK, + .catchRate = 75, + .expYield = 194, + .evYield_Attack = 2, + .genderRatio = PERCENT_FEMALE(25), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_VOLTORB_HISUIAN] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 66, + .evYield_Speed = 1, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_ELECTRODE_HISUIAN] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpAttack = 80, + .baseSpDefense = 80, + .baseSpeed = 150, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_GRASS, + .catchRate = 60, + .expYield = 172, + .evYield_Speed = 2, + .genderRatio = MON_GENDERLESS, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_TYPHLOSION_HISUIAN] = + { + .baseHP = 73, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 95, + .baseSpAttack = 119, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 240, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_QWILFISH_HISUIAN] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_DARK, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 88, + .evYield_Attack = 1, + .item2 = ITEM_POISON_BARB, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_SNEASEL_HISUIAN] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_FIGHTING, + .catchRate = 60, + .expYield = 86, + .evYield_Speed = 1, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_POISON_TOUCH}, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_SAMUROTT_HISUIAN] = + { + .baseHP = 90, + .baseAttack = 108, + .baseDefense = 80, + .baseSpeed = 85, + .baseSpAttack = 100, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 238, + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_LILLIGANT_HISUIAN] = + { + .baseHP = 70, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 105, + .baseSpAttack = 50, + .baseSpDefense = 75, + .type1 = TYPE_GRASS, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 168, + .evYield_Attack = 2, + #ifdef ITEM_EXPANSION + .item2 = ITEM_ABSORB_BULB, + #endif + .genderRatio = MON_FEMALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .abilities = {ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD}, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_ZORUA_HISUIAN] = + { + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_GHOST, + .catchRate = 75, + .expYield = 66, + .evYield_SpAttack = 1, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_ZOROARK_HISUIAN] = + { + .baseHP = 55, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 125, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_BRAVIARY_HISUIAN] = + { + .baseHP = 110, + .baseAttack = 83, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 112, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 60, + .expYield = 179, + .evYield_SpAttack = 2, + .genderRatio = MON_MALE, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_SLIGGOO_HISUIAN] = + { + .baseHP = 58, + .baseAttack = 75, + .baseDefense = 83, + .baseSpeed = 40, + .baseSpAttack = 83, + .baseSpDefense = 113, + .type1 = TYPE_DRAGON, + .type2 = TYPE_STEEL, + .catchRate = 45, + .expYield = 158, + .evYield_SpDefense = 2, + #ifdef ITEM_EXPANSION + .item2 = ITEM_SHED_SHELL, + #endif + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_GOODRA_HISUIAN] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 60, + .baseSpAttack = 110, + .baseSpDefense = 150, + .type1 = TYPE_DRAGON, + .type2 = TYPE_STEEL, + .catchRate = 45, + .expYield = 270, + .evYield_SpDefense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_AVALUGG_HISUIAN] = + { + .baseHP = 95, + .baseAttack = 127, + .baseDefense = 184, + .baseSpeed = 38, + .baseSpAttack = 34, + .baseSpDefense = 36, + .type1 = TYPE_ICE, + .type2 = TYPE_ROCK, + .catchRate = 55, + .expYield = 180, + .evYield_Defense = 2, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MINERAL, + .abilities = {ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY}, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + + [SPECIES_DECIDUEYE_HISUIAN] = + { + .baseHP = 88, + .baseAttack = 112, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 95, + .baseSpDefense = 95, + .type1 = TYPE_GRASS, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 239, + .evYield_Attack = 3, + .genderRatio = PERCENT_FEMALE(12.5), + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + .flags = FLAG_HISUIAN_FORM, + }, + [SPECIES_PIKACHU_COSPLAY] = COSPLAY_PIKACHU_BASE_STATS(FLIP), [SPECIES_PIKACHU_ROCK_STAR] = COSPLAY_PIKACHU_BASE_STATS(FLIP), [SPECIES_PIKACHU_BELLE] = COSPLAY_PIKACHU_BASE_STATS(NO_FLIP), @@ -25212,6 +25791,56 @@ const struct BaseStats gBaseStats[] = [SPECIES_ROTOM_FAN] = ROTOM_FORM_BASE_STATS(TYPE_FLYING, FLIP), [SPECIES_ROTOM_MOW] = ROTOM_FORM_BASE_STATS(TYPE_GRASS, FLIP), + [SPECIES_DIALGA_ORIGIN] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 120, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 120, + .type1 = TYPE_STEEL, + .type2 = TYPE_DRAGON, + .catchRate = 3, + .expYield = 306, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + .flags = FLAG_LEGENDARY, + }, + + [SPECIES_PALKIA_ORIGIN] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 120, + .baseSpAttack = 150, + .baseSpDefense = 120, + .type1 = TYPE_WATER, + .type2 = TYPE_DRAGON, + .catchRate = 3, + .expYield = 306, + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + .flags = FLAG_LEGENDARY, + }, + [SPECIES_GIRATINA_ORIGIN] = { .baseHP = 150, @@ -25305,6 +25934,31 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, + [SPECIES_BASCULIN_WHITE_STRIPED] = + { + .baseHP = 70, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 98, + .baseSpAttack = 80, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 25, + .expYield = 161, + .evYield_Speed = 2, + .item2 = ITEM_DEEP_SEA_SCALE, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + [SPECIES_DARMANITAN_ZEN_MODE] = { .baseHP = 105, @@ -25437,6 +26091,31 @@ const struct BaseStats gBaseStats[] = .flags = FLAG_LEGENDARY, }, + [SPECIES_ENAMORUS_THERIAN] = + { + .baseHP = 74, + .baseAttack = 115, + .baseDefense = 110, + .baseSpeed = 46, + .baseSpAttack = 135, + .baseSpDefense = 100, + .type1 = TYPE_FAIRY, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 270, + .evYield_SpAttack = 3, + .genderRatio = MON_FEMALE, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .abilities = {ABILITY_OVERCOAT, ABILITY_NONE}, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + .flags = FLAG_LEGENDARY, + }, + [SPECIES_KYUREM_WHITE] = { .baseHP = 125, diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 6cd308aa7d..ff592dbe92 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -899,6 +899,13 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_GLASTRIER] = sGlastrierLevelUpLearnset, [SPECIES_SPECTRIER] = sSpectrierLevelUpLearnset, [SPECIES_CALYREX] = sCalyrexLevelUpLearnset, + [SPECIES_WYRDEER] = sWyrdeerLevelUpLearnset, + [SPECIES_KLEAVOR] = sKleavorLevelUpLearnset, + [SPECIES_URSALUNA] = sUrsalunaLevelUpLearnset, + [SPECIES_BASCULEGION] = sBasculegionLevelUpLearnset, + [SPECIES_SNEASLER] = sSneaslerLevelUpLearnset, + [SPECIES_OVERQWIL] = sOverqwilLevelUpLearnset, + [SPECIES_ENAMORUS] = sEnamorusLevelUpLearnset, // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurLevelUpLearnset, [SPECIES_CHARIZARD_MEGA_X] = sCharizardLevelUpLearnset, @@ -990,6 +997,23 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianLevelUpLearnset, [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianLevelUpLearnset, + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = sGrowlitheHisuianLevelUpLearnset, + [SPECIES_ARCANINE_HISUIAN] = sArcanineHisuianLevelUpLearnset, + [SPECIES_VOLTORB_HISUIAN] = sVoltorbHisuianLevelUpLearnset, + [SPECIES_ELECTRODE_HISUIAN] = sElectrodeHisuianLevelUpLearnset, + [SPECIES_TYPHLOSION_HISUIAN] = sTyphlosionHisuianLevelUpLearnset, + [SPECIES_QWILFISH_HISUIAN] = sQwilfishHisuianLevelUpLearnset, + [SPECIES_SNEASEL_HISUIAN] = sSneaselHisuianLevelUpLearnset, + [SPECIES_SAMUROTT_HISUIAN] = sSamurottHisuianLevelUpLearnset, + [SPECIES_LILLIGANT_HISUIAN] = sLilligantHisuianLevelUpLearnset, + [SPECIES_ZORUA_HISUIAN] = sZoruaHisuianLevelUpLearnset, + [SPECIES_ZOROARK_HISUIAN] = sZoroarkHisuianLevelUpLearnset, + [SPECIES_BRAVIARY_HISUIAN] = sBraviaryHisuianLevelUpLearnset, + [SPECIES_SLIGGOO_HISUIAN] = sSliggooHisuianLevelUpLearnset, + [SPECIES_GOODRA_HISUIAN] = sGoodraHisuianLevelUpLearnset, + [SPECIES_AVALUGG_HISUIAN] = sAvaluggHisuianLevelUpLearnset, + [SPECIES_DECIDUEYE_HISUIAN] = sDecidueyeHisuianLevelUpLearnset, // Misc Forms // Cosplay Pikachu [SPECIES_PIKACHU_COSPLAY] = sPikachuLevelUpLearnset, @@ -1063,7 +1087,9 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ROTOM_FROST] = sRotomLevelUpLearnset, [SPECIES_ROTOM_FAN] = sRotomLevelUpLearnset, [SPECIES_ROTOM_MOW] = sRotomLevelUpLearnset, - // Giratina + // Origin Forme + [SPECIES_DIALGA_ORIGIN] = sDialgaLevelUpLearnset, + [SPECIES_PALKIA_ORIGIN] = sPalkiaLevelUpLearnset, [SPECIES_GIRATINA_ORIGIN] = sGiratinaLevelUpLearnset, // Shaymin [SPECIES_SHAYMIN_SKY] = sShayminSkyLevelUpLearnset, @@ -1087,6 +1113,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_ARCEUS_FAIRY] = sArceusLevelUpLearnset, // Basculin [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinLevelUpLearnset, + [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinLevelUpLearnset, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanLevelUpLearnset, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianLevelUpLearnset, @@ -1102,6 +1129,7 @@ const struct LevelUpMove *const gLevelUpLearnsets[NUM_SPECIES] = [SPECIES_TORNADUS_THERIAN] = sTornadusLevelUpLearnset, [SPECIES_THUNDURUS_THERIAN] = sThundurusLevelUpLearnset, [SPECIES_LANDORUS_THERIAN] = sLandorusLevelUpLearnset, + [SPECIES_ENAMORUS_THERIAN] = sEnamorusLevelUpLearnset, // Kyurem [SPECIES_KYUREM_WHITE] = sKyuremWhiteLevelUpLearnset, [SPECIES_KYUREM_BLACK] = sKyuremBlackLevelUpLearnset, diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 8df5886bd2..93e51c6c8b 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -18087,6 +18087,96 @@ static const struct LevelUpMove sCalyrexLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(15, MOVE_CALM_MIND), + //LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH), + LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY), + //LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sKleavorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), + //LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK), + //LEVEL_UP_MOVE(18, MOVE_AIR_SLASH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + //LEVEL_UP_MOVE(29, MOVE_STONE_AXE), + //LEVEL_UP_MOVE(34, MOVE_X_SCISSOR), + //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + //LEVEL_UP_MOVE( 6, MOVE_BABY_DOLL_EYES), + //LEVEL_UP_MOVE(11, MOVE_BULLDOZE), + LEVEL_UP_MOVE(18, MOVE_SLASH), + //LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH), + //LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBasculegionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + //LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_HEX), + //LEVEL_UP_MOVE(18, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_CRUNCH), + LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL), + //LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSneaslerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), + //LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW), + LEVEL_UP_MOVE(11, MOVE_SWIFT), + LEVEL_UP_MOVE(18, MOVE_SLASH), + //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), + //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sOverqwilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 5, MOVE_SPIKES), + LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), + //LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), + //LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), + //LEVEL_UP_MOVE(29, MOVE_POISON_JAB), + //LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL, + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sEnamorusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_TWISTER), + //LEVEL_UP_MOVE(14, MOVE_DRAINING_KISS), + LEVEL_UP_MOVE(22, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(31, MOVE_EXTRASENSORY), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + //LEVEL_UP_MOVE(47, MOVE_MOONBLAST), + //LEVEL_UP_MOVE( 1, MOVE_SPRINGTIDE_STORM), + LEVEL_UP_END +}; + static const struct LevelUpMove sRattataAlolanLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), @@ -18841,6 +18931,220 @@ static const struct LevelUpMove sStunfiskGalarianLevelUpLearnset[] = { LEVEL_UP_END }; +static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE( 9, MOVE_BITE), + //LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), + LEVEL_UP_END +}; + +static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_EMBER), + LEVEL_UP_MOVE( 9, MOVE_BITE), + //LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), + LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), + //LEVEL_UP_MOVE(29, MOVE_RAGING_FURY), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), + LEVEL_UP_END +}; + +static const struct LevelUpMove sVoltorbHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 5, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_SPARK), + //LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sElectrodeHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 5, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_SPARK), + //LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(29, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + //LEVEL_UP_MOVE(47, MOVE_CHLOROBLAST), + LEVEL_UP_MOVE(47, MOVE_SELF_DESTRUCT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sTyphlosionHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 0, MOVE_HEX), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_EMBER), + LEVEL_UP_MOVE(11, MOVE_ROLLOUT), + LEVEL_UP_MOVE(18, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + //LEVEL_UP_MOVE(40, MOVE_INFERNAL_PARADE), + LEVEL_UP_MOVE(43, MOVE_OVERHEAT), + LEVEL_UP_MOVE(43, MOVE_SHADOW_BALL), + LEVEL_UP_END +}; + +static const struct LevelUpMove sQwilfishHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 5, MOVE_SPIKES), + LEVEL_UP_MOVE( 9, MOVE_PIN_MISSILE), + //LEVEL_UP_MOVE(15, MOVE_BARB_BARRAGE), + LEVEL_UP_MOVE(21, MOVE_WATER_PULSE), + //LEVEL_UP_MOVE(26, MOVE_DARK_PULSE), + //LEVEL_UP_MOVE(29, MOVE_POISON_JAB), + //LEVEL_UP_MOVE(37, MOVE_AQUA_TAIL, + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(57, MOVE_SELF_DESTRUCT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(11, MOVE_SWIFT), + LEVEL_UP_MOVE(18, MOVE_SLASH), + //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), + //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSamurottHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 0, MOVE_NIGHT_SLASH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + //LEVEL_UP_MOVE( 6, MOVE_AQUA_JET), + LEVEL_UP_MOVE(11, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + //LEVEL_UP_MOVE(21, MOVE_CEASELESS_EDGE), + LEVEL_UP_MOVE(25, MOVE_SLASH), + //LEVEL_UP_MOVE(34, MOVE_AQUA_TAIL), + //LEVEL_UP_MOVE(40, MOVE_DARK_PULSE), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sLilligantHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + //LEVEL_UP_MOVE( 5, MOVE_LEAFAGE), + LEVEL_UP_MOVE( 9, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + //LEVEL_UP_MOVE(21, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(29, MOVE_SLEEP_POWDER), + //LEVEL_UP_MOVE(34, MOVE_DRAIN_PUNCH), + LEVEL_UP_MOVE(37, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(37, MOVE_RECOVER), + //LEVEL_UP_MOVE(42, MOVE_VICTORY_DANCE), + //LEVEL_UP_MOVE(47, MOVE_LEAF_STORM), + LEVEL_UP_MOVE(53, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(57, MOVE_CLOSE_COMBAT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sZoruaHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), + //LEVEL_UP_MOVE( 6, MOVE_SNARL), + LEVEL_UP_MOVE(11, MOVE_SWIFT), + //LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(25, MOVE_SLASH), + //LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), + //LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), + LEVEL_UP_END +}; + +static const struct LevelUpMove sZoroarkHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 1, MOVE_SHADOW_SNEAK), + //LEVEL_UP_MOVE( 6, MOVE_SNARL), + LEVEL_UP_MOVE(11, MOVE_SWIFT), + //LEVEL_UP_MOVE(18, MOVE_BITTER_MALICE), + LEVEL_UP_MOVE(25, MOVE_SLASH), + //LEVEL_UP_MOVE(34, MOVE_SHADOW_CLAW), + LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), + //LEVEL_UP_MOVE(43, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(52, MOVE_EXTRASENSORY), + LEVEL_UP_END +}; + +static const struct LevelUpMove sBraviaryHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(11, MOVE_TWISTER), + LEVEL_UP_MOVE(18, MOVE_SLASH), + //LEVEL_UP_MOVE(20, MOVE_AIR_SLASH), + //LEVEL_UP_MOVE(25, MOVE_ESPER_WING), + LEVEL_UP_MOVE(25, MOVE_ROOST), + LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(43, MOVE_BRAVE_BIRD), + //LEVEL_UP_MOVE(52, MOVE_HURRICANE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sSliggooHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + //LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + //LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), + //LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), + //LEVEL_UP_MOVE(34, MOVE_SHELTER), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + //LEVEL_UP_MOVE( 6, MOVE_ACID_SPRAY), + LEVEL_UP_MOVE(11, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(18, MOVE_WATER_PULSE), + //LEVEL_UP_MOVE(25, MOVE_DRAGON_PULSE), + //LEVEL_UP_MOVE(25, MOVE_IRON_HEAD), + //LEVEL_UP_MOVE(34, MOVE_SHELTER), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), + //LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), + //LEVEL_UP_MOVE(29, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(37, MOVE_BLIZZARD), + //LEVEL_UP_MOVE(37, MOVE_MOUNTAIN_GALE), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +static const struct LevelUpMove sDecidueyeHisuianLevelUpLearnset[] = { + //LEVEL_UP_MOVE( 0, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE( 1, MOVE_GUST), + //LEVEL_UP_MOVE( 6, MOVE_LEAFAGE), + LEVEL_UP_MOVE(11, MOVE_ROOST), + LEVEL_UP_MOVE(18, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(21, MOVE_MAGICAL_LEAF), + //LEVEL_UP_MOVE(25, MOVE_AIR_SLASH), + //LEVEL_UP_MOVE(30, MOVE_AURA_SPHERE), + LEVEL_UP_MOVE(34, MOVE_LEAF_BLADE), + //LEVEL_UP_MOVE(34, MOVE_TRIPLE_ARROWS), + //LEVEL_UP_MOVE(40, MOVE_BRAVE_BIRD), + //LEVEL_UP_MOVE(43, MOVE_LEAF_STORM), + LEVEL_UP_END +}; + static const struct LevelUpMove sDeoxysAttackLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_LEER), LEVEL_UP_MOVE( 1, MOVE_WRAP), diff --git a/src/data/pokemon/pokedex_entries.h b/src/data/pokemon/pokedex_entries.h index 6ceff22eec..e1e6426e30 100644 --- a/src/data/pokemon/pokedex_entries.h +++ b/src/data/pokemon/pokedex_entries.h @@ -10787,4 +10787,88 @@ const struct PokedexEntry gPokedexEntries[] = .trainerScale = 256, .trainerOffset = 0, }, + + [NATIONAL_DEX_WYRDEER] = + { + .categoryName = _("Big Horn"), + .height = 18, + .weight = 951, + .description = gWyrdeerPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_KLEAVOR] = + { + .categoryName = _("Axe"), + .height = 18, + .weight = 890, + .description = gKleavorPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_URSALUNA] = + { + .categoryName = _("Peat"), + .height = 24, + .weight = 2900, + .description = gUrsalunaPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_BASCULEGION] = + { + .categoryName = _("Big Fish"), + .height = 30, + .weight = 1100, + .description = gBasculegionPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_SNEASLER] = + { + .categoryName = _("Free Climb"), + .height = 13, + .weight = 430, + .description = gSneaslerPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_OVERQWIL] = + { + .categoryName = _("Pin Cluster"), + .height = 25, + .weight = 605, + .description = gOverqwilPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + + [NATIONAL_DEX_ENAMORUS] = + { + .categoryName = _("Love-Hate"), + .height = 16, + .weight = 480, + .description = gEnamorusPokedexText, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, }; diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index f51bdeb445..0ca5ccb417 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -47,6 +47,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_BARBARACLE, NATIONAL_DEX_BARBOACH, NATIONAL_DEX_BARRASKEWDA, + NATIONAL_DEX_BASCULEGION, NATIONAL_DEX_BASCULIN, NATIONAL_DEX_BASTIODON, NATIONAL_DEX_BAYLEEF, @@ -239,6 +240,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_EMBOAR, NATIONAL_DEX_EMOLGA, NATIONAL_DEX_EMPOLEON, + NATIONAL_DEX_ENAMORUS, NATIONAL_DEX_ENTEI, NATIONAL_DEX_ESCAVALIER, NATIONAL_DEX_ESPEON, @@ -403,6 +405,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_KINGLER, NATIONAL_DEX_KIRLIA, NATIONAL_DEX_KLANG, + NATIONAL_DEX_KLEAVOR, NATIONAL_DEX_KLEFKI, NATIONAL_DEX_KLINK, NATIONAL_DEX_KLINKLANG, @@ -562,6 +565,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_ORBEETLE, NATIONAL_DEX_ORICORIO, NATIONAL_DEX_OSHAWOTT, + NATIONAL_DEX_OVERQWIL, NATIONAL_DEX_PACHIRISU, NATIONAL_DEX_PALKIA, @@ -738,6 +742,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_SMEARGLE, NATIONAL_DEX_SMOOCHUM, NATIONAL_DEX_SNEASEL, + NATIONAL_DEX_SNEASLER, NATIONAL_DEX_SNIVY, NATIONAL_DEX_SNOM, NATIONAL_DEX_SNORLAX, @@ -845,6 +850,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_UMBREON, NATIONAL_DEX_UNFEZANT, NATIONAL_DEX_UNOWN, + NATIONAL_DEX_URSALUNA, NATIONAL_DEX_URSARING, NATIONAL_DEX_URSHIFU, NATIONAL_DEX_UXIE, @@ -897,6 +903,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_WORMADAM, NATIONAL_DEX_WURMPLE, NATIONAL_DEX_WYNAUT, + NATIONAL_DEX_WYRDEER, NATIONAL_DEX_XATU, NATIONAL_DEX_XERNEAS, @@ -1248,6 +1255,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GOURGEIST, // Average Size NATIONAL_DEX_MORGREM, NATIONAL_DEX_IVYSAUR, + //NATIONAL_DEX_VOLTORB, //Hisuian Form //NATIONAL_DEX_BANETTE, // Mega NATIONAL_DEX_MIME_JR, NATIONAL_DEX_LAMPENT, @@ -1324,6 +1332,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_QUILAVA, NATIONAL_DEX_BRUXISH, NATIONAL_DEX_STUNKY, + //NATIONAL_DEX_LILLIGANT, // Hisuian Form NATIONAL_DEX_NIDORINO, NATIONAL_DEX_ABRA, NATIONAL_DEX_MACHOP, @@ -1373,6 +1382,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_WARTORTLE, NATIONAL_DEX_LANTURN, NATIONAL_DEX_GOREBYSS, + //NATIONAL_DEX_GROWLITHE, //Hisuian Form NATIONAL_DEX_PRINPLUP, NATIONAL_DEX_CROAGUNK, NATIONAL_DEX_MOTHIM, @@ -1413,6 +1423,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ESPEON, NATIONAL_DEX_FROSLASS, NATIONAL_DEX_UMBREON, + //NATIONAL_DEX_SNEASEL, //Hisuian Form NATIONAL_DEX_HUNTAIL, NATIONAL_DEX_CARNIVINE, NATIONAL_DEX_WATCHOG, @@ -1516,6 +1527,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_PORYGON, NATIONAL_DEX_DECIDUEYE, NATIONAL_DEX_MIGHTYENA, + //NATIONAL_DEX_DECIDUEYE, //Hisuian Form NATIONAL_DEX_LIEPARD, NATIONAL_DEX_DARUMAKA, NATIONAL_DEX_FEAROW, @@ -1564,6 +1576,8 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_DIGGERSBY, NATIONAL_DEX_GLISCOR, NATIONAL_DEX_DUBWOOL, + NATIONAL_DEX_SNEASLER, + //NATIONAL_DEX_BRAVIARY, //Hisuian Form NATIONAL_DEX_PURUGLY, //NATIONAL_DEX_MANECTRIC, // Mega NATIONAL_DEX_GOTHITELLE, @@ -1586,6 +1600,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_HAKAMO_O, NATIONAL_DEX_ALAKAZAM, NATIONAL_DEX_HITMONTOP, + NATIONAL_DEX_ENAMORUS, NATIONAL_DEX_GARDEVOIR, NATIONAL_DEX_KELDEO, NATIONAL_DEX_GRANBULL, @@ -1645,6 +1660,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_HEATMOR, //NATIONAL_DEX_LURANTIS, // Totem-sized //NATIONAL_DEX_ZAPDOS, // Galarian Form + //NATIONAL_DEX_SAMUROTT, // Hisuian Form NATIONAL_DEX_MR_RIME, NATIONAL_DEX_WHIRLIPEDE, //NATIONAL_DEX_PINSIR, // Mega @@ -1661,6 +1677,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_CRADILY, NATIONAL_DEX_BRONZOR, NATIONAL_DEX_MUSHARNA, + NATIONAL_DEX_OVERQWIL, NATIONAL_DEX_DEOXYS, // Normal Forme //NATIONAL_DEX_DEOXYS, // Attack Forme //NATIONAL_DEX_DEOXYS, // Defense Forme @@ -1688,16 +1705,20 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_MAGMORTAR, NATIONAL_DEX_LANDORUS, NATIONAL_DEX_ARMALDO, + //NATIONAL_DEX_SLIGGOO, //Hisuian Form + //NATIONAL_DEX_TYPHLOSION, //Hisuian Form //NATIONAL_DEX_LATIOS, // Mega NATIONAL_DEX_BISHARP, NATIONAL_DEX_SANDYGAST, NATIONAL_DEX_ZARUDE, NATIONAL_DEX_MACHOKE, //NATIONAL_DEX_SLOWBRO, // Galarian Form + //NATIONAL_DEX_ELECTRODE //Hisuian Form NATIONAL_DEX_TREVENANT, NATIONAL_DEX_STANTLER, NATIONAL_DEX_GRUMPIG, NATIONAL_DEX_LARVITAR, + //NATIONAL_DEX_ZOROARK, //Hisuian Form NATIONAL_DEX_CROBAT, NATIONAL_DEX_QUAGSIRE, NATIONAL_DEX_CORVIKNIGHT, @@ -1749,6 +1770,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_FERALIGATR, NATIONAL_DEX_SHARPEDO, NATIONAL_DEX_EISCUE, + NATIONAL_DEX_KLEAVOR, NATIONAL_DEX_SEEL, NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_RILLABOOM, @@ -1762,6 +1784,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_SAMUROTT, NATIONAL_DEX_RAPIDASH, NATIONAL_DEX_GARCHOMP, + NATIONAL_DEX_WYRDEER, NATIONAL_DEX_BELDUM, NATIONAL_DEX_BARBARACLE, NATIONAL_DEX_KROOKODILE, @@ -1800,6 +1823,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_FERROTHORN, NATIONAL_DEX_MUDBRAY, NATIONAL_DEX_ZACIAN, // Hero of Many Battles + NATIONAL_DEX_BASCULEGION, //NATIONAL_DEX_CHARIZARD, // Mega X NATIONAL_DEX_SHELGON, //NATIONAL_DEX_SALAMENCE, // Mega @@ -1853,6 +1877,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_HYDREIGON, //NATIONAL_DEX_SABLEYE, // Mega NATIONAL_DEX_MILOTIC, + //NATIONAL_DEX_ARCANINE, //Hisuian Form NATIONAL_DEX_LUNATONE, NATIONAL_DEX_REGICE, NATIONAL_DEX_ARCTOVISH, @@ -1905,8 +1930,10 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GIGALITH, NATIONAL_DEX_BEARTIC, NATIONAL_DEX_TERRAKION, + //NATIONAL_DEX_AVALUGG, //Hisuian Form NATIONAL_DEX_TYRANTRUM, NATIONAL_DEX_RHYPERIOR, + NATIONAL_DEX_URSALUNA, NATIONAL_DEX_MAMOSWINE, // 661.4 - 667.0 lbs / 300.0 - 307.1 kg NATIONAL_DEX_GOLEM, @@ -1923,6 +1950,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GOLURK, NATIONAL_DEX_RESHIRAM, NATIONAL_DEX_BUZZWOLE, + //NATIONAL_DEX_GOODRA, //Hisuian Form NATIONAL_DEX_PALKIA, NATIONAL_DEX_PROBOPASS, NATIONAL_DEX_ZEKROM, @@ -1949,6 +1977,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_METAGROSS, //NATIONAL_DEX_ZYGARDE, // Complete Forme //NATIONAL_DEX_GIRATINA, // Origin Forme + //NATIONAL_DEX_PALKIA, // Origin Form NATIONAL_DEX_DIALGA, //NATIONAL_DEX_STEELIX, // Mega NATIONAL_DEX_GIRATINA, // Altered Forme @@ -1957,6 +1986,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GLASTRIER, //NATIONAL_DEX_CALYREX, // Ice Rider NATIONAL_DEX_STAKATAKA, + //NATIONAL_DEX_DIALGA, // Origin Form NATIONAL_DEX_GUZZLORD, NATIONAL_DEX_MUDSDALE, //NATIONAL_DEX_METAGROSS, // Mega @@ -2155,6 +2185,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ODDISH, NATIONAL_DEX_MANKEY, NATIONAL_DEX_VOLTORB, + //NATIONAL_DEX_VOLTORB, //Hisuian Form NATIONAL_DEX_KABUTO, NATIONAL_DEX_CYNDAQUIL, NATIONAL_DEX_SPINARAK, @@ -2162,6 +2193,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MURKROW, NATIONAL_DEX_UNOWN, NATIONAL_DEX_QWILFISH, + //NATIONAL_DEX_QWILFISH, //Hisuian Form NATIONAL_DEX_PHANPY, NATIONAL_DEX_TREECKO, NATIONAL_DEX_POOCHYENA, @@ -2340,11 +2372,13 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_DARUMAKA, // Galarian Form NATIONAL_DEX_TIRTOUGA, NATIONAL_DEX_ZORUA, + //NATIONAL_DEX_ZORUA, // Hisuian Form NATIONAL_DEX_GOTHORITA, NATIONAL_DEX_STUNFISK, //NATIONAL_DEX_STUNFISK, // Galarian Form NATIONAL_DEX_QUILLADIN, NATIONAL_DEX_FLETCHINDER, + //NATIONAL_DEX_SLIGGOO, // Hisuian Form //NATIONAL_DEX_GOURGEIST, // Small Size NATIONAL_DEX_DIANCIE, NATIONAL_DEX_DARTRIX, @@ -2421,6 +2455,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_QUILAVA, NATIONAL_DEX_ESPEON, NATIONAL_DEX_SNEASEL, + //NATIONAL_DEX_SNEASEL, //Hisuian Form NATIONAL_DEX_OCTILLERY, NATIONAL_DEX_DELIBIRD, NATIONAL_DEX_GROVYLE, @@ -2572,6 +2607,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_SLOWPOKE, // Galarian Form NATIONAL_DEX_MUK, NATIONAL_DEX_ELECTRODE, + //NATIONAL_DEX_ELECTRODE, //Hisuian Form NATIONAL_DEX_LICKITUNG, NATIONAL_DEX_WEEZING, NATIONAL_DEX_SEADRA, @@ -2606,6 +2642,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GURDURR, NATIONAL_DEX_LEAVANNY, NATIONAL_DEX_WHIRLIPEDE, + //NATIONAL_DEX_LILLIGANT, //Hisuian Form NATIONAL_DEX_CARRACOSTA, NATIONAL_DEX_FRILLISH, NATIONAL_DEX_ALOMOMOLA, @@ -2660,6 +2697,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_BARRASKEWDA, NATIONAL_DEX_FROSMOTH, + NATIONAL_DEX_SNEASLER, // 4'07" / 1.4m //NATIONAL_DEX_BEEDRILL, // Mega //NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized @@ -2696,6 +2734,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ZWEILOUS, //NATIONAL_DEX_TORNADUS, // Therian Forme NATIONAL_DEX_KELDEO, + //NATIONAL_DEX_AVALUGG, // Hisuian Form //NATIONAL_DEX_GUMSHOOS, // Totem-sized NATIONAL_DEX_CINDERACE, NATIONAL_DEX_EISCUE, @@ -2730,6 +2769,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CRESSELIA, NATIONAL_DEX_DARKRAI, NATIONAL_DEX_SAMUROTT, + //NATIONAL_DEX_SAMUROTT, // Hisuian Form //NATIONAL_DEX_AUDINO, // Mega NATIONAL_DEX_CONKELDURR, NATIONAL_DEX_SEISMITOAD, @@ -2765,6 +2805,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_HYPNO, NATIONAL_DEX_ZAPDOS, //NATIONAL_DEX_ZAPDOS, // Galarian Form + //NATIONAL_DEX_TYPHLOSION, // Hisuian Form NATIONAL_DEX_NOCTOWL, NATIONAL_DEX_GARDEVOIR, //NATIONAL_DEX_GARDEVOIR, // Mega @@ -2777,17 +2818,22 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_EMBOAR, NATIONAL_DEX_ZEBSTRIKA, NATIONAL_DEX_ZOROARK, + //NATIONAL_DEX_ZOROARK, // Hisuian Form NATIONAL_DEX_DRUDDIGON, NATIONAL_DEX_BISHARP, NATIONAL_DEX_BOUFFALANT, + //NATIONAL_DEX_BRAVIARY, // Hisuian Form NATIONAL_DEX_VOLCARONA, NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_DECIDUEYE, + //NATIONAL_DEX_DECIDUEYE, // Hisuian Form NATIONAL_DEX_KOMMO_O, NATIONAL_DEX_TOXTRICITY, NATIONAL_DEX_GRAPPLOCT, NATIONAL_DEX_OBSTAGOON, NATIONAL_DEX_RUNERIGUS, + NATIONAL_DEX_ENAMORUS, + //NATIONAL_DEX_ENAMORUS, //Therian Form // 5'07" / 1.7m NATIONAL_DEX_CHARIZARD, //NATIONAL_DEX_CHARIZARD, // Mega X @@ -2820,6 +2866,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_COFAGRIGUS, NATIONAL_DEX_GOGOAT, NATIONAL_DEX_AEGISLASH, + //NATIONAL_DEX_GOODRA, //Hisuian Form //NATIONAL_DEX_GOURGEIST, // Super Size NATIONAL_DEX_VOLCANION, NATIONAL_DEX_CRABOMINABLE, @@ -2853,6 +2900,8 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DRACOZOLT, NATIONAL_DEX_DURALUDON, NATIONAL_DEX_ZARUDE, + NATIONAL_DEX_WYRDEER, + NATIONAL_DEX_KLEAVOR, // 6'03" / 1.9m NATIONAL_DEX_ARCANINE, NATIONAL_DEX_RHYDON, @@ -2878,6 +2927,7 @@ const u16 gPokedexOrder_Height[] = // 6'07" / 2.0m NATIONAL_DEX_VENUSAUR, NATIONAL_DEX_EKANS, + //NATIONAL_DEX_ARCANINE, //Hisuian Form //NATIONAL_DEX_SLOWBRO, // Mega NATIONAL_DEX_EXEGGUTOR, NATIONAL_DEX_MOLTRES, @@ -2947,6 +2997,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_NECROZMA, //NATIONAL_DEX_CALYREX, // Ice Rider //NATIONAL_DEX_CALYREX, // Shadow Rider + NATIONAL_DEX_URSALUNA, // 8'02" / 2.5m NATIONAL_DEX_LAPRAS, //NATIONAL_DEX_TYRANITAR, // Mega @@ -2959,6 +3010,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MUDSDALE, NATIONAL_DEX_MELMETAL, NATIONAL_DEX_STONJOURNER, + NATIONAL_DEX_OVERQWIL, // 8'06" / 2.6m NATIONAL_DEX_BEARTIC, //NATIONAL_DEX_VIKAVOLT, // Totem-sized @@ -2985,6 +3037,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_FALINKS, NATIONAL_DEX_COPPERAJAH, NATIONAL_DEX_DRAGAPULT, + NATIONAL_DEX_BASCULEGION, // 10'02" / 3.1m //NATIONAL_DEX_ARAQUANID, // Totem-sized // 10'06" / 3.2m @@ -3034,6 +3087,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_YVELTAL, // 20'04" / 6.2m NATIONAL_DEX_MILOTIC, + //NATIONAL_DEX_PALKIA, //Origin Forme // 21'04" / 6.5m NATIONAL_DEX_GYARADOS, //NATIONAL_DEX_GYARADOS, // Mega @@ -3042,6 +3096,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_GIRATINA, // Origin Forme // 23'00" / 7.0m NATIONAL_DEX_RAYQUAZA, + //NATIONAL_DEX_DIALGA, //Origin Forme // 24'07" / 7.5m //NATIONAL_DEX_NECROZMA, // Ultra // 26'11" / 8.2m diff --git a/src/data/pokemon/pokedex_text.h b/src/data/pokemon/pokedex_text.h index 15d56ee9d5..b29e9db8ef 100644 --- a/src/data/pokemon/pokedex_text.h +++ b/src/data/pokemon/pokedex_text.h @@ -5348,3 +5348,43 @@ const u8 gCalyrexPokedexText[] = _( "providing healing and blessings. It\n" "reigned over the Galar region in times\n" "of yore."); + +const u8 gWyrdeerPokedexText[] = _( + "The black orbs shine with an uncanny light\n" + "when it is erecting invisible barriers.\n" + "The fur shed from its beard retains heat\n" + "and useful for winter clothing."); + +const u8 gKleavorPokedexText[] = _( + "A violent creature that fells trees with\n" + "its crude axes and shields itself with hard\n" + "stone. If one should encounter this Pokémon\n" + "in the wild, one's only recourse is to flee."); + +const u8 gUrsalunaPokedexText[] = _( + "Swampy terrain gives Ursaluna its burly\n" + "physique and newfound capacity to\n" + "manipulate peat at will."); + +const u8 gBasculegionPokedexText[] = _( + "It clads itself in the souls of comrades\n" + "that perishes before their goals of\n" + "journeying upstream."); + +const u8 gSneaslerPokedexText[] = _( + "Because of its wicked poison and daunting\n" + "physical prowess, no other species could\n" + "hope to best it on frozen highlands. It\n" + "prefers solitude and doesn't form packs."); + +const u8 gOverqwilPokedexText[] = _( + "Its lancelike spikes and savage\n" + "temperament have earned it the\n" + "nickname Sea Fiend.\n" + "It surps up poison to nourish itself."); + +const u8 gEnamorusPokedexText[] = _( + "Its arrival brings an end to the\n" + "winter. According to legend, this\n" + "Pokémon's love gives rise to the\n" + "budding of fresh life across the land."); diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index b71192806f..0c91bc25e3 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -20193,6 +20193,20 @@ const u32 gTMHMLearnsets[][2] = | TMHM(TM22_SOLAR_BEAM) | TMHM(TM11_SUNNY_DAY)), + [SPECIES_WYRDEER] = TMHM_LEARNSET(0), + + [SPECIES_KLEAVOR] = TMHM_LEARNSET(0), + + [SPECIES_URSALUNA] = TMHM_LEARNSET(0), + + [SPECIES_BASCULEGION] = TMHM_LEARNSET(0), + + [SPECIES_SNEASLER] = TMHM_LEARNSET(0), + + [SPECIES_OVERQWIL] = TMHM_LEARNSET(0), + + [SPECIES_ENAMORUS] = TMHM_LEARNSET(0), + [SPECIES_RATTATA_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) | TMHM(HM01_CUT) | TMHM(TM28_DIG) @@ -20760,6 +20774,38 @@ const u32 gTMHMLearnsets[][2] = | TMHM(TM37_SANDSTORM) | TMHM(TM36_SLUDGE_BOMB) | TMHM(HM03_SURF)), + + [SPECIES_GROWLITHE_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_ARCANINE_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_VOLTORB_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_ELECTRODE_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_TYPHLOSION_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_QWILFISH_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_SNEASEL_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_SAMUROTT_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_LILLIGANT_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_ZORUA_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_ZOROARK_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_BRAVIARY_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_SLIGGOO_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_GOODRA_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_AVALUGG_HISUIAN] = TMHM_LEARNSET(0), + + [SPECIES_DECIDUEYE_HISUIAN] = TMHM_LEARNSET(0), [SPECIES_PIKACHU_COSPLAY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) | TMHM(TM31_BRICK_BREAK) @@ -21389,6 +21435,78 @@ const u32 gTMHMLearnsets[][2] = [SPECIES_ROTOM_MOW] = TMHM_LEARNSET(0), + [SPECIES_DIALGA_ORIGIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) + | TMHM(TM14_BLIZZARD) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM08_BULK_UP) + | TMHM(HM01_CUT) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM42_FACADE) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM35_FLAMETHROWER) + | TMHM(HM05_FLASH) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM50_OVERHEAT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM44_REST) + | TMHM(TM27_RETURN) + | TMHM(TM05_ROAR) + | TMHM(HM06_ROCK_SMASH) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM37_SANDSTORM) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(HM04_STRENGTH) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM25_THUNDER) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM06_TOXIC)), + + [SPECIES_PALKIA_ORIGIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) + | TMHM(TM14_BLIZZARD) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM08_BULK_UP) + | TMHM(HM01_CUT) + | TMHM(HM08_DIVE) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM42_FACADE) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM44_REST) + | TMHM(TM27_RETURN) + | TMHM(TM05_ROAR) + | TMHM(HM06_ROCK_SMASH) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM37_SANDSTORM) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(HM04_STRENGTH) + | TMHM(TM11_SUNNY_DAY) + | TMHM(HM03_SURF) + | TMHM(TM25_THUNDER) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM06_TOXIC) + | TMHM(TM03_WATER_PULSE)), + [SPECIES_GIRATINA_ORIGIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) | TMHM(TM04_CALM_MIND) | TMHM(HM01_CUT) @@ -22289,6 +22407,25 @@ const u32 gTMHMLearnsets[][2] = | TMHM(TM06_TOXIC) | TMHM(HM07_WATERFALL)), + [SPECIES_BASCULIN_WHITE_STRIPED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM08_DIVE) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM44_REST) + | TMHM(TM27_RETURN) + | TMHM(TM43_SECRET_POWER) + | TMHM(HM03_SURF) + | TMHM(TM12_TAUNT) + | TMHM(TM06_TOXIC) + | TMHM(HM07_WATERFALL)), + [SPECIES_DEERLING_SUMMER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) | TMHM(TM32_DOUBLE_TEAM) | TMHM(TM42_FACADE) @@ -22489,6 +22626,8 @@ const u32 gTMHMLearnsets[][2] = | TMHM(HM04_STRENGTH) | TMHM(TM06_TOXIC)), + [SPECIES_ENAMORUS_THERIAN] = TMHM_LEARNSET(0), + [SPECIES_KYUREM_WHITE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) | TMHM(HM01_CUT) | TMHM(TM32_DOUBLE_TEAM) diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h index f6ad5b26e8..26ccbcd9b2 100644 --- a/src/data/pokemon/tutor_learnsets.h +++ b/src/data/pokemon/tutor_learnsets.h @@ -10188,6 +10188,20 @@ static const u32 sTutorLearnsets[] = | TUTOR(MOVE_SUBSTITUTE) | TUTOR(MOVE_SWIFT)), + [SPECIES_WYRDEER] = (0), + + [SPECIES_KLEAVOR] = (0), + + [SPECIES_URSALUNA] = (0), + + [SPECIES_BASCULEGION] = (0), + + [SPECIES_SNEASLER] = (0), + + [SPECIES_OVERQWIL] = (0), + + [SPECIES_ENAMORUS] = (0), + [SPECIES_MEOWTH_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) | TUTOR(MOVE_DOUBLE_EDGE) | TUTOR(MOVE_ENDURE) @@ -10366,6 +10380,38 @@ static const u32 sTutorLearnsets[] = | TUTOR(MOVE_SUBSTITUTE) | TUTOR(MOVE_THUNDER_WAVE)), + [SPECIES_GROWLITHE_HISUIAN] = (0), + + [SPECIES_ARCANINE_HISUIAN] = (0), + + [SPECIES_VOLTORB_HISUIAN] = (0), + + [SPECIES_ELECTRODE_HISUIAN] = (0), + + [SPECIES_TYPHLOSION_HISUIAN] = (0), + + [SPECIES_QWILFISH_HISUIAN] = (0), + + [SPECIES_SNEASEL_HISUIAN] = (0), + + [SPECIES_SAMUROTT_HISUIAN] = (0), + + [SPECIES_LILLIGANT_HISUIAN] = (0), + + [SPECIES_ZORUA_HISUIAN] = (0), + + [SPECIES_ZOROARK_HISUIAN] = (0), + + [SPECIES_BRAVIARY_HISUIAN] = (0), + + [SPECIES_SLIGGOO_HISUIAN] = (0), + + [SPECIES_GOODRA_HISUIAN] = (0), + + [SPECIES_AVALUGG_HISUIAN] = (0), + + [SPECIES_DECIDUEYE_HISUIAN] = (0), + [SPECIES_BURMY_SANDY_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), [SPECIES_BURMY_TRASH_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index 70baff4b4f..91b77450c3 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -4499,6 +4499,41 @@ const struct MonCoords gMonBackPicCoords[] = .size = MON_COORDS_SIZE(56, 48), .y_offset = 10, }, + [SPECIES_WYRDEER] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_KLEAVOR] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_URSALUNA] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_BASCULEGION] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SNEASLER] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_OVERQWIL] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ENAMORUS] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Megas [SPECIES_VENUSAUR_MEGA] = { @@ -4937,6 +4972,87 @@ const struct MonCoords gMonBackPicCoords[] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 23, + }, + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ARCANINE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_VOLTORB_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ELECTRODE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_TYPHLOSION_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_QWILFISH_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SNEASEL_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SAMUROTT_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_LILLIGANT_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ZORUA_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ZOROARK_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_BRAVIARY_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SLIGGOO_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_GOODRA_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_AVALUGG_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_DECIDUEYE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, }, // Misc Forms // Cosplay Pikachu @@ -5251,7 +5367,17 @@ const struct MonCoords gMonBackPicCoords[] = .size = MON_COORDS_SIZE(56, 48), .y_offset = 10, }, - // Giratina + // Origin Forme + [SPECIES_DIALGA_ORIGIN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_PALKIA_ORIGIN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, [SPECIES_GIRATINA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 56), @@ -5355,6 +5481,11 @@ const struct MonCoords gMonBackPicCoords[] = .size = MON_COORDS_SIZE(64, 48), .y_offset = 16, }, + [SPECIES_BASCULIN_WHITE_STRIPED] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { @@ -5414,6 +5545,11 @@ const struct MonCoords gMonBackPicCoords[] = .size = MON_COORDS_SIZE(64, 56), .y_offset = 7, }, + [SPECIES_ENAMORUS_THERIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Kyurem [SPECIES_KYUREM_WHITE] = { diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 80f7aab3b3..f1f8a3afaf 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -899,6 +899,13 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(GLASTRIER, gMonBackPic_Glastrier), SPECIES_SPRITE(SPECTRIER, gMonBackPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonBackPic_Calyrex), + SPECIES_SPRITE(WYRDEER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Wyrdeer), + SPECIES_SPRITE(KLEAVOR, gMonBackPic_CircledQuestionMark), //gMonBackPic_Kleavor), + SPECIES_SPRITE(URSALUNA, gMonBackPic_CircledQuestionMark), //gMonBackPic_Ursaluna), + SPECIES_SPRITE(BASCULEGION, gMonBackPic_CircledQuestionMark), //gMonBackPic_Basculegion), + SPECIES_SPRITE(SNEASLER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Sneasler), + SPECIES_SPRITE(OVERQWIL, gMonBackPic_CircledQuestionMark), //gMonBackPic_Overqwil), + SPECIES_SPRITE(ENAMORUS, gMonBackPic_CircledQuestionMark), //gMonBackPic_Enamorus), SPECIES_SPRITE(VENUSAUR_MEGA, gMonBackPic_VenusaurMega), SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonBackPic_CharizardMegaX), @@ -991,6 +998,23 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(YAMASK_GALARIAN, gMonBackPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonBackPic_StunfiskGalarian), + SPECIES_SPRITE(GROWLITHE_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_GrowlitheHisuian), + SPECIES_SPRITE(ARCANINE_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_ArcanineHisuian), + SPECIES_SPRITE(VOLTORB_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_VoltorbHisuian), + SPECIES_SPRITE(ELECTRODE_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_ElectrodeHisuian), + SPECIES_SPRITE(TYPHLOSION_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_TyphlosionHisuian), + SPECIES_SPRITE(QWILFISH_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_QwilfishHisuian), + SPECIES_SPRITE(SNEASEL_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_SneaselHisuian), + SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_SamurottHisuian), + SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_LilligantHisuian), + SPECIES_SPRITE(ZORUA_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_ZoruaHisuian), + SPECIES_SPRITE(ZOROARK_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_ZoroarkHisuian), + SPECIES_SPRITE(BRAVIARY_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_BraviaryHisuian), + SPECIES_SPRITE(SLIGGOO_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_SliggooHisuian), + SPECIES_SPRITE(GOODRA_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_GoodraHisuian), + SPECIES_SPRITE(AVALUGG_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_AvaluggHisuian), + SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_DecidueyeHisuian), + SPECIES_SPRITE(PIKACHU_COSPLAY, gMonBackPic_PikachuCosplay), SPECIES_SPRITE(PIKACHU_ROCK_STAR, gMonBackPic_PikachuRockStar), SPECIES_SPRITE(PIKACHU_BELLE, gMonBackPic_PikachuBelle), @@ -1063,6 +1087,8 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(ROTOM_FAN, gMonBackPic_RotomFan), SPECIES_SPRITE(ROTOM_MOW, gMonBackPic_RotomMow), + SPECIES_SPRITE(DIALGA_ORIGIN, gMonBackPic_CircledQuestionMark), //gMonBackPic_DialgaOrigin), + SPECIES_SPRITE(PALKIA_ORIGIN, gMonBackPic_CircledQuestionMark), //gMonBackPic_PalkiaOrigin), SPECIES_SPRITE(GIRATINA_ORIGIN, gMonBackPic_GiratinaOrigin), SPECIES_SPRITE(SHAYMIN_SKY, gMonBackPic_ShayminSky), @@ -1086,6 +1112,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(ARCEUS_FAIRY, gMonBackPic_Arceus), SPECIES_SPRITE(BASCULIN_BLUE_STRIPED, gMonBackPic_BasculinBlueStriped), + SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonBackPic_CircledQuestionMark), //gMonBackPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonBackPic_DarmanitanZenMode), SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonBackPic_DarmanitanZenModeGalarian), @@ -1101,6 +1128,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(TORNADUS_THERIAN, gMonBackPic_TornadusTherian), SPECIES_SPRITE(THUNDURUS_THERIAN, gMonBackPic_ThundurusTherian), SPECIES_SPRITE(LANDORUS_THERIAN, gMonBackPic_LandorusTherian), + SPECIES_SPRITE(ENAMORUS_THERIAN, gMonBackPic_CircledQuestionMark), //gMonBackPic_EnamorusTherian), SPECIES_SPRITE(KYUREM_WHITE, gMonBackPic_KyuremWhite), SPECIES_SPRITE(KYUREM_BLACK, gMonBackPic_KyuremBlack), @@ -1292,4 +1320,5 @@ const struct CompressedSpriteSheet gMonBackPicTableFemale[] = SPECIES_SPRITE(FRILLISH, gMonBackPic_FrillishF), SPECIES_SPRITE(JELLICENT, gMonBackPic_JellicentF), SPECIES_SPRITE(PYROAR, gMonBackPic_PyroarF), + SPECIES_SPRITE(BASCULEGION, gMonBackPic_CircledQuestionMark), //gMonBackPic_BasculegionF), }; diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 6387994c1a..1e9dc41a8e 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -8527,6 +8527,48 @@ static const union AnimCmd sAnim_CALYREX_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_WYRDEER_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_KLEAVOR_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_URSALUNA_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_BASCULEGION_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SNEASLER_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_OVERQWIL_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ENAMORUS_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + static const union AnimCmd sAnim_VENUSAUR_MEGA_1[] = { ANIMCMD_FRAME(0, 1), @@ -9049,12 +9091,120 @@ static const union AnimCmd sAnim_STUNFISK_GALARIAN_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_GROWLITHE_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ARCANINE_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_VOLTORB_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ELECTRODE_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_TYPHLOSION_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_QWILFISH_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SNEASEL_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SAMUROTT_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_LILLIGANT_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ZORUA_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_ZOROARK_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_BRAVIARY_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_SLIGGOO_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_GOODRA_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_AVALUGG_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_DECIDUEYE_HISUIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + static const union AnimCmd sAnim_SHAYMIN_SKY_1[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; +static const union AnimCmd sAnim_DIALGA_ORIGIN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd sAnim_PALKIA_ORIGIN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + static const union AnimCmd sAnim_GIRATINA_ORIGIN_1[] = { ANIMCMD_FRAME(0, 1), @@ -9091,6 +9241,12 @@ static const union AnimCmd sAnim_LANDORUS_THERIAN_1[] = ANIMCMD_END, }; +static const union AnimCmd sAnim_ENAMORUS_THERIAN_1[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + static const union AnimCmd sAnim_KELDEO_RESOLUTE_1[] = { ANIMCMD_FRAME(0, 1), @@ -14041,6 +14197,41 @@ static const union AnimCmd *const sAnims_CALYREX[] ={ sAnim_CALYREX_1, }; +static const union AnimCmd *const sAnims_WYRDEER[] ={ + sAnim_GeneralFrame0, + sAnim_WYRDEER_1, +}; + +static const union AnimCmd *const sAnims_KLEAVOR[] ={ + sAnim_GeneralFrame0, + sAnim_KLEAVOR_1, +}; + +static const union AnimCmd *const sAnims_URSALUNA[] ={ + sAnim_GeneralFrame0, + sAnim_URSALUNA_1, +}; + +static const union AnimCmd *const sAnims_BASCULEGION[] ={ + sAnim_GeneralFrame0, + sAnim_BASCULEGION_1, +}; + +static const union AnimCmd *const sAnims_SNEASLER[] ={ + sAnim_GeneralFrame0, + sAnim_SNEASLER_1, +}; + +static const union AnimCmd *const sAnims_OVERQWIL[] ={ + sAnim_GeneralFrame0, + sAnim_OVERQWIL_1, +}; + +static const union AnimCmd *const sAnims_ENAMORUS[] ={ + sAnim_GeneralFrame0, + sAnim_ENAMORUS_1, +}; + static const union AnimCmd *const sAnims_VENUSAUR_MEGA[] ={ sAnim_GeneralFrame0, sAnim_VENUSAUR_MEGA_1, @@ -14476,11 +14667,101 @@ static const union AnimCmd *const sAnims_STUNFISK_GALARIAN[] ={ sAnim_STUNFISK_GALARIAN_1, }; +static const union AnimCmd *const sAnims_GROWLITHE_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_GROWLITHE_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_ARCANINE_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_ARCANINE_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_VOLTORB_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_VOLTORB_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_ELECTRODE_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_ELECTRODE_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_TYPHLOSION_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_TYPHLOSION_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_QWILFISH_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_QWILFISH_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_SNEASEL_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_SNEASEL_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_SAMUROTT_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_SAMUROTT_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_LILLIGANT_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_LILLIGANT_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_ZORUA_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_ZORUA_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_ZOROARK_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_ZOROARK_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_BRAVIARY_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_BRAVIARY_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_SLIGGOO_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_SLIGGOO_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_GOODRA_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_GOODRA_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_AVALUGG_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_AVALUGG_HISUIAN_1, +}; + +static const union AnimCmd *const sAnims_DECIDUEYE_HISUIAN[] ={ + sAnim_GeneralFrame0, + sAnim_DECIDUEYE_HISUIAN_1, +}; + static const union AnimCmd *const sAnims_SHAYMIN_SKY[] ={ sAnim_GeneralFrame0, sAnim_SHAYMIN_SKY_1, }; +static const union AnimCmd *const sAnims_DIALGA_ORIGIN[] ={ + sAnim_GeneralFrame0, + sAnim_DIALGA_ORIGIN_1, +}; + +static const union AnimCmd *const sAnims_PALKIA_ORIGIN[] ={ + sAnim_GeneralFrame0, + sAnim_PALKIA_ORIGIN_1, +}; + static const union AnimCmd *const sAnims_GIRATINA_ORIGIN[] ={ sAnim_GeneralFrame0, sAnim_GIRATINA_ORIGIN_1, @@ -14511,6 +14792,11 @@ static const union AnimCmd *const sAnims_LANDORUS_THERIAN[] ={ sAnim_LANDORUS_THERIAN_1, }; +static const union AnimCmd *const sAnims_ENAMORUS_THERIAN[] ={ + sAnim_GeneralFrame0, + sAnim_ENAMORUS_THERIAN_1, +}; + static const union AnimCmd *const sAnims_KELDEO_RESOLUTE[] ={ sAnim_GeneralFrame0, sAnim_KELDEO_RESOLUTE_1, @@ -15573,6 +15859,13 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD(GLASTRIER), ANIM_CMD(SPECTRIER), ANIM_CMD(CALYREX), + ANIM_CMD(WYRDEER), + ANIM_CMD(KLEAVOR), + ANIM_CMD(URSALUNA), + ANIM_CMD(BASCULEGION), + ANIM_CMD(SNEASLER), + ANIM_CMD(OVERQWIL), + ANIM_CMD(ENAMORUS), ANIM_CMD(VENUSAUR_MEGA), ANIM_CMD(CHARIZARD_MEGA_X), ANIM_CMD(CHARIZARD_MEGA_Y), @@ -15660,6 +15953,22 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD(DARMANITAN_GALARIAN), ANIM_CMD(YAMASK_GALARIAN), ANIM_CMD(STUNFISK_GALARIAN), + ANIM_CMD(GROWLITHE_HISUIAN), + ANIM_CMD(ARCANINE_HISUIAN), + ANIM_CMD(VOLTORB_HISUIAN), + ANIM_CMD(ELECTRODE_HISUIAN), + ANIM_CMD(TYPHLOSION_HISUIAN), + ANIM_CMD(QWILFISH_HISUIAN), + ANIM_CMD(SNEASEL_HISUIAN), + ANIM_CMD(SAMUROTT_HISUIAN), + ANIM_CMD(LILLIGANT_HISUIAN), + ANIM_CMD(ZORUA_HISUIAN), + ANIM_CMD(ZOROARK_HISUIAN), + ANIM_CMD(BRAVIARY_HISUIAN), + ANIM_CMD(SLIGGOO_HISUIAN), + ANIM_CMD(GOODRA_HISUIAN), + ANIM_CMD(AVALUGG_HISUIAN), + ANIM_CMD(DECIDUEYE_HISUIAN), ANIM_CMD(PIKACHU_COSPLAY), ANIM_CMD(PIKACHU_ROCK_STAR), ANIM_CMD(PIKACHU_BELLE), @@ -15720,6 +16029,8 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD(ROTOM_FROST), ANIM_CMD(ROTOM_FAN), ANIM_CMD(ROTOM_MOW), + ANIM_CMD(DIALGA_ORIGIN), + ANIM_CMD(PALKIA_ORIGIN), ANIM_CMD(GIRATINA_ORIGIN), ANIM_CMD(SHAYMIN_SKY), ANIM_CMD_FULL(ARCEUS_FIGHTING, sAnims_ARCEUS), @@ -15740,6 +16051,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD_FULL(ARCEUS_DARK, sAnims_ARCEUS), ANIM_CMD_FULL(ARCEUS_FAIRY, sAnims_ARCEUS), ANIM_CMD_FULL(BASCULIN_BLUE_STRIPED, sAnims_BASCULIN), + ANIM_CMD_FULL(BASCULIN_WHITE_STRIPED, sAnims_BASCULIN), ANIM_CMD(DARMANITAN_ZEN_MODE), ANIM_CMD(DARMANITAN_ZEN_MODE_GALARIAN), ANIM_CMD_FULL(DEERLING_SUMMER, sAnims_DEERLING), @@ -15751,6 +16063,7 @@ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] = ANIM_CMD(TORNADUS_THERIAN), ANIM_CMD(THUNDURUS_THERIAN), ANIM_CMD(LANDORUS_THERIAN), + ANIM_CMD(ENAMORUS_THERIAN), ANIM_CMD(KYUREM_WHITE), ANIM_CMD(KYUREM_BLACK), ANIM_CMD(MELOETTA_PIROUETTE), diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 02a0e06135..fd33f6fa39 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -4499,6 +4499,41 @@ const struct MonCoords gMonFrontPicCoords[] = .size = MON_COORDS_SIZE(48, 64), .y_offset = 2, }, + [SPECIES_WYRDEER] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_KLEAVOR] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_URSALUNA] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_BASCULEGION] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SNEASLER] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_OVERQWIL] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ENAMORUS] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Megas [SPECIES_VENUSAUR_MEGA] = { @@ -4937,6 +4972,87 @@ const struct MonCoords gMonFrontPicCoords[] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14, + }, + // Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ARCANINE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_VOLTORB_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ELECTRODE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_TYPHLOSION_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_QWILFISH_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SNEASEL_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SAMUROTT_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_LILLIGANT_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ZORUA_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_ZOROARK_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_BRAVIARY_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_SLIGGOO_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_GOODRA_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_AVALUGG_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_DECIDUEYE_HISUIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, }, // Misc Forms // Cosplay Pikachu @@ -5251,7 +5367,17 @@ const struct MonCoords gMonFrontPicCoords[] = .size = MON_COORDS_SIZE(56, 64), .y_offset = 12, }, - // Giratina + // Origin Forme + [SPECIES_DIALGA_ORIGIN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, + [SPECIES_PALKIA_ORIGIN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, [SPECIES_GIRATINA_ORIGIN] = { .size = MON_COORDS_SIZE(64, 64), @@ -5355,6 +5481,11 @@ const struct MonCoords gMonFrontPicCoords[] = .size = MON_COORDS_SIZE(56, 40), .y_offset = 16, }, + [SPECIES_BASCULIN_WHITE_STRIPED] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = { @@ -5414,6 +5545,11 @@ const struct MonCoords gMonFrontPicCoords[] = .size = MON_COORDS_SIZE(64, 64), .y_offset = 0, }, + [SPECIES_ENAMORUS_THERIAN] = + { + .size = MON_COORDS_SIZE(64, 64), + .y_offset = 0, + }, // Kyurem [SPECIES_KYUREM_WHITE] = { diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 7640dc23e4..8669e45e96 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -899,6 +899,13 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(GLASTRIER, gMonFrontPic_Glastrier), SPECIES_SPRITE(SPECTRIER, gMonFrontPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonFrontPic_Calyrex), + SPECIES_SPRITE(WYRDEER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Wyrdeer), + SPECIES_SPRITE(KLEAVOR, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Kleavor), + SPECIES_SPRITE(URSALUNA, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Ursaluna), + SPECIES_SPRITE(BASCULEGION, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Basculegion), + SPECIES_SPRITE(SNEASLER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Sneasler), + SPECIES_SPRITE(OVERQWIL, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Overqwil), + SPECIES_SPRITE(ENAMORUS, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Enamorus), SPECIES_SPRITE(VENUSAUR_MEGA, gMonFrontPic_VenusaurMega), SPECIES_SPRITE(CHARIZARD_MEGA_X, gMonFrontPic_CharizardMegaX), @@ -991,6 +998,23 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(YAMASK_GALARIAN, gMonFrontPic_YamaskGalarian), SPECIES_SPRITE(STUNFISK_GALARIAN, gMonFrontPic_StunfiskGalarian), + SPECIES_SPRITE(GROWLITHE_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_GrowlitheHisuian), + SPECIES_SPRITE(ARCANINE_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_ArcanineHisuian), + SPECIES_SPRITE(VOLTORB_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_VoltorbHisuian), + SPECIES_SPRITE(ELECTRODE_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_ElectrodeHisuian), + SPECIES_SPRITE(TYPHLOSION_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_TyphlosionHisuian), + SPECIES_SPRITE(QWILFISH_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_QwilfishHisuian), + SPECIES_SPRITE(SNEASEL_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_SneaselHisuian), + SPECIES_SPRITE(SAMUROTT_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_SamurottHisuian), + SPECIES_SPRITE(LILLIGANT_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_LilligantHisuian), + SPECIES_SPRITE(ZORUA_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_ZoruaHisuian), + SPECIES_SPRITE(ZOROARK_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_ZoroarkHisuian), + SPECIES_SPRITE(BRAVIARY_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_BraviaryHisuian), + SPECIES_SPRITE(SLIGGOO_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_SliggooHisuian), + SPECIES_SPRITE(GOODRA_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_GoodraHisuian), + SPECIES_SPRITE(AVALUGG_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_AvaluggHisuian), + SPECIES_SPRITE(DECIDUEYE_HISUIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_DecidueyeHisuian), + SPECIES_SPRITE(PIKACHU_COSPLAY, gMonFrontPic_PikachuCosplay), SPECIES_SPRITE(PIKACHU_ROCK_STAR, gMonFrontPic_PikachuRockStar), SPECIES_SPRITE(PIKACHU_BELLE, gMonFrontPic_PikachuBelle), @@ -1063,6 +1087,8 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(ROTOM_FAN, gMonFrontPic_RotomFan), SPECIES_SPRITE(ROTOM_MOW, gMonFrontPic_RotomMow), + SPECIES_SPRITE(DIALGA_ORIGIN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_DialgaOrigin), + SPECIES_SPRITE(PALKIA_ORIGIN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_PalkiaOrigin), SPECIES_SPRITE(GIRATINA_ORIGIN, gMonFrontPic_GiratinaOrigin), SPECIES_SPRITE(SHAYMIN_SKY, gMonFrontPic_ShayminSky), @@ -1086,6 +1112,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(ARCEUS_FAIRY, gMonFrontPic_Arceus), SPECIES_SPRITE(BASCULIN_BLUE_STRIPED, gMonFrontPic_BasculinBlueStriped), + SPECIES_SPRITE(BASCULIN_WHITE_STRIPED, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_BasculinWhiteStriped), SPECIES_SPRITE(DARMANITAN_ZEN_MODE, gMonFrontPic_DarmanitanZenMode), SPECIES_SPRITE(DARMANITAN_ZEN_MODE_GALARIAN, gMonFrontPic_DarmanitanZenModeGalarian), @@ -1101,6 +1128,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(TORNADUS_THERIAN, gMonFrontPic_TornadusTherian), SPECIES_SPRITE(THUNDURUS_THERIAN, gMonFrontPic_ThundurusTherian), SPECIES_SPRITE(LANDORUS_THERIAN, gMonFrontPic_LandorusTherian), + SPECIES_SPRITE(ENAMORUS_THERIAN, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_EnamorusTherian), SPECIES_SPRITE(KYUREM_WHITE, gMonFrontPic_KyuremWhite), SPECIES_SPRITE(KYUREM_BLACK, gMonFrontPic_KyuremBlack), @@ -1292,4 +1320,5 @@ const struct CompressedSpriteSheet gMonFrontPicTableFemale[] = SPECIES_SPRITE(FRILLISH, gMonFrontPic_FrillishF), SPECIES_SPRITE(JELLICENT, gMonFrontPic_JellicentF), SPECIES_SPRITE(PYROAR, gMonFrontPic_PyroarF), + SPECIES_SPRITE(BASCULEGION, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_BasculegionF), }; diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 3de4107007..21af8045d2 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -899,6 +899,13 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(GLASTRIER, gMonPalette_Glastrier), SPECIES_PAL(SPECTRIER, gMonPalette_Spectrier), SPECIES_PAL(CALYREX, gMonPalette_Calyrex), + SPECIES_PAL(WYRDEER, gMonPalette_CircledQuestionMark), // gMonPalette_Wyrdeer), + SPECIES_PAL(KLEAVOR, gMonPalette_CircledQuestionMark), // gMonPalette_Kleavor), + SPECIES_PAL(URSALUNA, gMonPalette_CircledQuestionMark), // gMonPalette_Ursaluna), + SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_Basculegion), + SPECIES_PAL(SNEASLER, gMonPalette_CircledQuestionMark), // gMonPalette_Sneasler), + SPECIES_PAL(OVERQWIL, gMonPalette_CircledQuestionMark), // gMonPalette_Overqwil), + SPECIES_PAL(ENAMORUS, gMonPalette_CircledQuestionMark), // gMonPalette_Enamorus), SPECIES_PAL(VENUSAUR_MEGA, gMonPalette_VenusaurMega), SPECIES_PAL(CHARIZARD_MEGA_X, gMonPalette_CharizardMegaX), @@ -991,6 +998,23 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(YAMASK_GALARIAN, gMonPalette_YamaskGalarian), SPECIES_PAL(STUNFISK_GALARIAN, gMonPalette_StunfiskGalarian), + SPECIES_PAL(GROWLITHE_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_GrowlitheHisuian), + SPECIES_PAL(ARCANINE_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_ArcanineHisuian), + SPECIES_PAL(VOLTORB_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_VoltorbHisuian), + SPECIES_PAL(ELECTRODE_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_ElectrodeHisuian), + SPECIES_PAL(TYPHLOSION_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_TyphlosionHisuian), + SPECIES_PAL(QWILFISH_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_QwilfishHisuian), + SPECIES_PAL(SNEASEL_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_SneaselHisuian), + SPECIES_PAL(SAMUROTT_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_SamurottHisuian), + SPECIES_PAL(LILLIGANT_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_LilligantHisuian), + SPECIES_PAL(ZORUA_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_ZoruaHisuian), + SPECIES_PAL(ZOROARK_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_ZoroarkHisuian), + SPECIES_PAL(BRAVIARY_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_BraviaryHisuian), + SPECIES_PAL(SLIGGOO_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_SliggooHisuian), + SPECIES_PAL(GOODRA_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_GoodraHisuian), + SPECIES_PAL(AVALUGG_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_AvaluggHisuian), + SPECIES_PAL(DECIDUEYE_HISUIAN, gMonPalette_CircledQuestionMark), // gMonPalette_DecidueyeHisuian), + SPECIES_PAL(PIKACHU_COSPLAY, gMonPalette_PikachuCosplay), SPECIES_PAL(PIKACHU_ROCK_STAR, gMonPalette_PikachuRockStar), SPECIES_PAL(PIKACHU_BELLE, gMonPalette_PikachuBelle), @@ -1063,6 +1087,8 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(ROTOM_FAN, gMonPalette_RotomFan), SPECIES_PAL(ROTOM_MOW, gMonPalette_RotomMow), + SPECIES_PAL(DIALGA_ORIGIN, gMonPalette_CircledQuestionMark), // gMonPalette_DialgaOrigin), + SPECIES_PAL(PALKIA_ORIGIN, gMonPalette_CircledQuestionMark), // gMonPalette_PalkiaOrigin), SPECIES_PAL(GIRATINA_ORIGIN, gMonPalette_GiratinaOrigin), SPECIES_PAL(SHAYMIN_SKY, gMonPalette_ShayminSky), @@ -1086,6 +1112,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(ARCEUS_FAIRY, gMonPalette_ArceusFairy), SPECIES_PAL(BASCULIN_BLUE_STRIPED, gMonPalette_BasculinBlueStriped), + SPECIES_PAL(BASCULIN_WHITE_STRIPED, gMonPalette_CircledQuestionMark), // gMonPalette_BasculinWhiteStriped), SPECIES_PAL(DARMANITAN_ZEN_MODE, gMonPalette_DarmanitanZenMode), SPECIES_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonPalette_DarmanitanZenModeGalarian), @@ -1101,6 +1128,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(TORNADUS_THERIAN, gMonPalette_TornadusTherian), SPECIES_PAL(THUNDURUS_THERIAN, gMonPalette_ThundurusTherian), SPECIES_PAL(LANDORUS_THERIAN, gMonPalette_LandorusTherian), + SPECIES_PAL(ENAMORUS_THERIAN, gMonPalette_CircledQuestionMark), // gMonPalette_EnamorusTherian), SPECIES_PAL(KYUREM_WHITE, gMonPalette_KyuremWhite), SPECIES_PAL(KYUREM_BLACK, gMonPalette_KyuremBlack), @@ -1292,4 +1320,5 @@ const struct CompressedSpritePalette gMonPaletteTableFemale[] = SPECIES_PAL(FRILLISH, gMonPalette_FrillishF), SPECIES_PAL(JELLICENT, gMonPalette_JellicentF), SPECIES_PAL(PYROAR, gMonPalette_PyroarF), + SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_BasculegionF), }; diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index aa7c4153e7..0a7576dd8b 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -899,6 +899,13 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(GLASTRIER, gMonShinyPalette_Glastrier), SPECIES_SHINY_PAL(SPECTRIER, gMonShinyPalette_Spectrier), SPECIES_SHINY_PAL(CALYREX, gMonShinyPalette_Calyrex), + SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Wyrdeer), + SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Kleavor), + SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Ursaluna), + SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Basculegion), + SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Sneasler), + SPECIES_SHINY_PAL(OVERQWIL, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Overqwil), + SPECIES_SHINY_PAL(ENAMORUS, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Enamorus), SPECIES_SHINY_PAL(VENUSAUR_MEGA, gMonShinyPalette_VenusaurMega), SPECIES_SHINY_PAL(CHARIZARD_MEGA_X, gMonShinyPalette_CharizardMegaX), @@ -991,6 +998,23 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(YAMASK_GALARIAN, gMonShinyPalette_YamaskGalarian), SPECIES_SHINY_PAL(STUNFISK_GALARIAN, gMonShinyPalette_StunfiskGalarian), + SPECIES_SHINY_PAL(GROWLITHE_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_GrowlitheHisuian), + SPECIES_SHINY_PAL(ARCANINE_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_ArcanineHisuian), + SPECIES_SHINY_PAL(VOLTORB_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_VoltorbHisuian), + SPECIES_SHINY_PAL(ELECTRODE_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_ElectrodeHisuian), + SPECIES_SHINY_PAL(TYPHLOSION_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_TyphlosionHisuian), + SPECIES_SHINY_PAL(QWILFISH_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_QwilfishHisuian), + SPECIES_SHINY_PAL(SNEASEL_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_SneaselHisuian), + SPECIES_SHINY_PAL(SAMUROTT_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_SamurottHisuian), + SPECIES_SHINY_PAL(LILLIGANT_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_LilligantHisuian), + SPECIES_SHINY_PAL(ZORUA_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_ZoruaHisuian), + SPECIES_SHINY_PAL(ZOROARK_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_ZoroarkHisuian), + SPECIES_SHINY_PAL(BRAVIARY_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_BraviaryHisuian), + SPECIES_SHINY_PAL(SLIGGOO_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_SliggooHisuian), + SPECIES_SHINY_PAL(GOODRA_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_GoodraHisuian), + SPECIES_SHINY_PAL(AVALUGG_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_AvaluggHisuian), + SPECIES_SHINY_PAL(DECIDUEYE_HISUIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_DecidueyeHisuian), + SPECIES_SHINY_PAL(PIKACHU_COSPLAY, gMonShinyPalette_PikachuCosplay), SPECIES_SHINY_PAL(PIKACHU_ROCK_STAR, gMonShinyPalette_PikachuRockStar), SPECIES_SHINY_PAL(PIKACHU_BELLE, gMonShinyPalette_PikachuBelle), @@ -1063,6 +1087,8 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(ROTOM_FAN, gMonShinyPalette_RotomFan), SPECIES_SHINY_PAL(ROTOM_MOW, gMonShinyPalette_RotomMow), + SPECIES_SHINY_PAL(DIALGA_ORIGIN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_DialgaOrigin), + SPECIES_SHINY_PAL(PALKIA_ORIGIN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_PalkiaOrigin), SPECIES_SHINY_PAL(GIRATINA_ORIGIN, gMonShinyPalette_GiratinaOrigin), SPECIES_SHINY_PAL(SHAYMIN_SKY, gMonShinyPalette_ShayminSky), @@ -1086,6 +1112,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(ARCEUS_FAIRY, gMonShinyPalette_ArceusFairy), SPECIES_SHINY_PAL(BASCULIN_BLUE_STRIPED, gMonShinyPalette_BasculinBlueStriped), + SPECIES_SHINY_PAL(BASCULIN_WHITE_STRIPED, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_BasculinWhiteStriped), SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE, gMonShinyPalette_DarmanitanZenMode), SPECIES_SHINY_PAL(DARMANITAN_ZEN_MODE_GALARIAN, gMonShinyPalette_DarmanitanZenModeGalarian), @@ -1101,6 +1128,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(TORNADUS_THERIAN, gMonShinyPalette_TornadusTherian), SPECIES_SHINY_PAL(THUNDURUS_THERIAN, gMonShinyPalette_ThundurusTherian), SPECIES_SHINY_PAL(LANDORUS_THERIAN, gMonShinyPalette_LandorusTherian), + SPECIES_SHINY_PAL(ENAMORUS_THERIAN, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_EnamorusTherian), SPECIES_SHINY_PAL(KYUREM_WHITE, gMonShinyPalette_KyuremWhite), SPECIES_SHINY_PAL(KYUREM_BLACK, gMonShinyPalette_KyuremBlack), @@ -1292,4 +1320,5 @@ const struct CompressedSpritePalette gMonShinyPaletteTableFemale[] = SPECIES_SHINY_PAL(FRILLISH, gMonShinyPalette_FrillishF), SPECIES_SHINY_PAL(JELLICENT, gMonShinyPalette_JellicentF), SPECIES_SHINY_PAL(PYROAR, gMonShinyPalette_PyroarF), + SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_BasculegionF), }; diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 8129e2a602..aa8b4261ea 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -898,6 +898,13 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_GLASTRIER] = _("Glastrier"), [SPECIES_SPECTRIER] = _("Spectrier"), [SPECIES_CALYREX] = _("Calyrex"), + [SPECIES_WYRDEER] = _("Wyrdeer"), + [SPECIES_KLEAVOR] = _("Kleavor"), + [SPECIES_URSALUNA] = _("Ursaluna"), + [SPECIES_BASCULEGION] = _("Bsculegion"), + [SPECIES_SNEASLER] = _("Sneasler"), + [SPECIES_OVERQWIL] = _("Overqwil"), + [SPECIES_ENAMORUS] = _("Enamorus"), // Megas [SPECIES_VENUSAUR_MEGA] = _("Venusaur"), @@ -993,6 +1000,24 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_YAMASK_GALARIAN] = _("Yamask"), [SPECIES_STUNFISK_GALARIAN] = _("Stunfisk"), +//Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = _("Growlithe"), + [SPECIES_ARCANINE_HISUIAN] = _("Arcanine"), + [SPECIES_VOLTORB_HISUIAN] = _("Voltorb"), + [SPECIES_ELECTRODE_HISUIAN] = _("Electrode"), + [SPECIES_TYPHLOSION_HISUIAN] = _("Typhlosion"), + [SPECIES_QWILFISH_HISUIAN] = _("Qwilfish"), + [SPECIES_SNEASEL_HISUIAN] = _("Sneasel"), + [SPECIES_SAMUROTT_HISUIAN] = _("Samurott"), + [SPECIES_LILLIGANT_HISUIAN] = _("Lilligant"), + [SPECIES_ZORUA_HISUIAN] = _("Zorua"), + [SPECIES_ZOROARK_HISUIAN] = _("Zoroark"), + [SPECIES_BRAVIARY_HISUIAN] = _("Braviary"), + [SPECIES_SLIGGOO_HISUIAN] = _("Sliggoo"), + [SPECIES_GOODRA_HISUIAN] = _("Goodra"), + [SPECIES_AVALUGG_HISUIAN] = _("Avalugg"), + [SPECIES_DECIDUEYE_HISUIAN] = _("Decidueye"), + // Cosplay Pikachu [SPECIES_PIKACHU_COSPLAY] = _("Pikachu"), [SPECIES_PIKACHU_ROCK_STAR] = _("Pikachu"), @@ -1065,7 +1090,9 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ROTOM_FROST] = _("Rotom"), [SPECIES_ROTOM_MOW] = _("Rotom"), [SPECIES_ROTOM_WASH] = _("Rotom"), - // Giratina + // Origin + [SPECIES_DIALGA_ORIGIN] = _("Dialga"), + [SPECIES_PALKIA_ORIGIN] = _("Palkia"), [SPECIES_GIRATINA_ORIGIN] = _("Giratina"), // Shaymin [SPECIES_SHAYMIN_SKY] = _("Shaymin"), @@ -1089,6 +1116,7 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ARCEUS_FAIRY] = _("Arceus"), // Basculin [SPECIES_BASCULIN_BLUE_STRIPED] = _("Basculin"), + [SPECIES_BASCULIN_WHITE_STRIPED] = _("Basculin"), // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = _("Darmanitan"), [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = _("Darmanitan"), @@ -1104,6 +1132,7 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_TORNADUS_THERIAN] = _("Tornadus"), [SPECIES_THUNDURUS_THERIAN] = _("Thundurus"), [SPECIES_LANDORUS_THERIAN] = _("Landorus"), + [SPECIES_ENAMORUS_THERIAN] = _("Enamorus"), // Kyurem [SPECIES_KYUREM_BLACK] = _("Kyurem"), [SPECIES_KYUREM_WHITE] = _("Kyurem"), diff --git a/src/pokemon.c b/src/pokemon.c index 215dc00626..0e8bbfa6cb 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1218,6 +1218,13 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = SPECIES_TO_NATIONAL(GLASTRIER), SPECIES_TO_NATIONAL(SPECTRIER), SPECIES_TO_NATIONAL(CALYREX), + SPECIES_TO_NATIONAL(WYRDEER), + SPECIES_TO_NATIONAL(KLEAVOR), + SPECIES_TO_NATIONAL(URSALUNA), + SPECIES_TO_NATIONAL(BASCULEGION), + SPECIES_TO_NATIONAL(SNEASLER), + SPECIES_TO_NATIONAL(OVERQWIL), + SPECIES_TO_NATIONAL(ENAMORUS), // Megas [SPECIES_VENUSAUR_MEGA - 1] = NATIONAL_DEX_VENUSAUR, @@ -1310,6 +1317,23 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_DARMANITAN_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, [SPECIES_YAMASK_GALARIAN - 1] = NATIONAL_DEX_YAMASK, [SPECIES_STUNFISK_GALARIAN - 1] = NATIONAL_DEX_STUNFISK, +//Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN - 1] = NATIONAL_DEX_GROWLITHE, + [SPECIES_ARCANINE_HISUIAN - 1] = NATIONAL_DEX_ARCANINE, + [SPECIES_VOLTORB_HISUIAN - 1] = NATIONAL_DEX_VOLTORB, + [SPECIES_ELECTRODE_HISUIAN - 1] = NATIONAL_DEX_ELECTRODE, + [SPECIES_TYPHLOSION_HISUIAN - 1] = NATIONAL_DEX_TYPHLOSION, + [SPECIES_QWILFISH_HISUIAN - 1] = NATIONAL_DEX_QWILFISH, + [SPECIES_SNEASEL_HISUIAN - 1] = NATIONAL_DEX_SNEASEL, + [SPECIES_SAMUROTT_HISUIAN - 1] = NATIONAL_DEX_SAMUROTT, + [SPECIES_LILLIGANT_HISUIAN - 1] = NATIONAL_DEX_LILLIGANT, + [SPECIES_ZORUA_HISUIAN - 1] = NATIONAL_DEX_ZORUA, + [SPECIES_ZOROARK_HISUIAN - 1] = NATIONAL_DEX_ZOROARK, + [SPECIES_BRAVIARY_HISUIAN - 1] = NATIONAL_DEX_BRAVIARY, + [SPECIES_SLIGGOO_HISUIAN - 1] = NATIONAL_DEX_SLIGGOO, + [SPECIES_GOODRA_HISUIAN - 1] = NATIONAL_DEX_GOODRA, + [SPECIES_AVALUGG_HISUIAN - 1] = NATIONAL_DEX_AVALUGG, + [SPECIES_DECIDUEYE_HISUIAN - 1] = NATIONAL_DEX_DECIDUEYE, // Cosplay Pikachu [SPECIES_PIKACHU_COSPLAY - 1] = NATIONAL_DEX_PIKACHU, [SPECIES_PIKACHU_ROCK_STAR - 1] = NATIONAL_DEX_PIKACHU, @@ -1382,7 +1406,9 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_ROTOM_FROST - 1] = NATIONAL_DEX_ROTOM, [SPECIES_ROTOM_FAN - 1] = NATIONAL_DEX_ROTOM, [SPECIES_ROTOM_MOW - 1] = NATIONAL_DEX_ROTOM, - // Giratina + // Origin + [SPECIES_DIALGA_ORIGIN - 1] = NATIONAL_DEX_DIALGA, + [SPECIES_PALKIA_ORIGIN - 1] = NATIONAL_DEX_PALKIA, [SPECIES_GIRATINA_ORIGIN - 1] = NATIONAL_DEX_GIRATINA, // Shaymin [SPECIES_SHAYMIN_SKY - 1] = NATIONAL_DEX_SHAYMIN, @@ -1406,6 +1432,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_ARCEUS_FAIRY - 1] = NATIONAL_DEX_ARCEUS, // Basculin [SPECIES_BASCULIN_BLUE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, + [SPECIES_BASCULIN_WHITE_STRIPED - 1] = NATIONAL_DEX_BASCULIN, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE - 1] = NATIONAL_DEX_DARMANITAN, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN - 1] = NATIONAL_DEX_DARMANITAN, @@ -1421,6 +1448,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_TORNADUS_THERIAN - 1] = NATIONAL_DEX_TORNADUS, [SPECIES_THUNDURUS_THERIAN - 1] = NATIONAL_DEX_THUNDURUS, [SPECIES_LANDORUS_THERIAN - 1] = NATIONAL_DEX_LANDORUS, + [SPECIES_ENAMORUS_THERIAN - 1] = NATIONAL_DEX_ENAMORUS, // Kyurem [SPECIES_KYUREM_BLACK - 1] = NATIONAL_DEX_KYUREM, [SPECIES_KYUREM_WHITE - 1] = NATIONAL_DEX_KYUREM, @@ -2776,6 +2804,13 @@ static const u8 sMonFrontAnimIdsTable[NUM_SPECIES - 1] = [SPECIES_GLASTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_SPECTRIER - 1] = ANIM_V_SQUISH_AND_BOUNCE, [SPECIES_CALYREX - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_WYRDEER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_KLEAVOR - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_URSALUNA - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_BASCULEGION - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_SNEASLER - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_OVERQWIL - 1] = ANIM_V_SQUISH_AND_BOUNCE, + [SPECIES_ENAMORUS - 1] = ANIM_V_SQUISH_AND_BOUNCE, // Forms [SPECIES_ROTOM_HEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE, diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 0faebfe74b..5420c1ede6 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -928,7 +928,14 @@ const u8 *const gMonIconTable[] = [SPECIES_REGIDRAGO] = gMonIcon_Regidrago, [SPECIES_GLASTRIER] = gMonIcon_Glastrier, [SPECIES_SPECTRIER] = gMonIcon_Spectrier, - [SPECIES_CALYREX] = gMonIcon_QuestionMark,//gMonIcon_Calyrex, + [SPECIES_CALYREX] = gMonIcon_Calyrex, + [SPECIES_WYRDEER] = gMonIcon_Wyrdeer, + [SPECIES_KLEAVOR] = gMonIcon_Kleavor, + [SPECIES_URSALUNA] = gMonIcon_Ursaluna, + [SPECIES_BASCULEGION] = gMonIcon_Basculegion, + [SPECIES_SNEASLER] = gMonIcon_Sneasler, + [SPECIES_OVERQWIL] = gMonIcon_Overqwil, + [SPECIES_ENAMORUS] = gMonIcon_Enamorus, [SPECIES_VENUSAUR_MEGA] = gMonIcon_VenusaurMega, [SPECIES_CHARIZARD_MEGA_X] = gMonIcon_CharizardMegaX, [SPECIES_CHARIZARD_MEGA_Y] = gMonIcon_CharizardMegaY, @@ -1016,6 +1023,22 @@ const u8 *const gMonIconTable[] = [SPECIES_DARMANITAN_GALARIAN] = gMonIcon_DarmanitanGalarian, [SPECIES_YAMASK_GALARIAN] = gMonIcon_YamaskGalarian, [SPECIES_STUNFISK_GALARIAN] = gMonIcon_StunfiskGalarian, + [SPECIES_GROWLITHE_HISUIAN] = gMonIcon_GrowlitheHisuian, + [SPECIES_ARCANINE_HISUIAN] = gMonIcon_ArcanineHisuian, + [SPECIES_VOLTORB_HISUIAN] = gMonIcon_VoltorbHisuian, + [SPECIES_ELECTRODE_HISUIAN] = gMonIcon_ElectrodeHisuian, + [SPECIES_TYPHLOSION_HISUIAN] = gMonIcon_TyphlosionHisuian, + [SPECIES_QWILFISH_HISUIAN] = gMonIcon_QwilfishHisuian, + [SPECIES_SNEASEL_HISUIAN] = gMonIcon_SneaselHisuian, + [SPECIES_SAMUROTT_HISUIAN] = gMonIcon_SamurottHisuian, + [SPECIES_LILLIGANT_HISUIAN] = gMonIcon_LilligantHisuian, + [SPECIES_ZORUA_HISUIAN] = gMonIcon_ZoruaHisuian, + [SPECIES_ZOROARK_HISUIAN] = gMonIcon_ZoroarkHisuian, + [SPECIES_BRAVIARY_HISUIAN] = gMonIcon_BraviaryHisuian, + [SPECIES_SLIGGOO_HISUIAN] = gMonIcon_SliggooHisuian, + [SPECIES_GOODRA_HISUIAN] = gMonIcon_GoodraHisuian, + [SPECIES_AVALUGG_HISUIAN] = gMonIcon_AvaluggHisuian, + [SPECIES_DECIDUEYE_HISUIAN] = gMonIcon_DecidueyeHisuian, [SPECIES_PIKACHU_COSPLAY] = gMonIcon_PikachuCosplay, [SPECIES_PIKACHU_ROCK_STAR] = gMonIcon_PikachuRockStar, [SPECIES_PIKACHU_BELLE] = gMonIcon_PikachuBelle, @@ -1076,6 +1099,8 @@ const u8 *const gMonIconTable[] = [SPECIES_ROTOM_FROST] = gMonIcon_RotomFrost, [SPECIES_ROTOM_FAN] = gMonIcon_RotomFan, [SPECIES_ROTOM_MOW] = gMonIcon_RotomMow, + [SPECIES_DIALGA_ORIGIN] = gMonIcon_DialgaOrigin, + [SPECIES_PALKIA_ORIGIN] = gMonIcon_PalkiaOrigin, [SPECIES_GIRATINA_ORIGIN] = gMonIcon_GiratinaOrigin, [SPECIES_SHAYMIN_SKY] = gMonIcon_ShayminSky, [SPECIES_ARCEUS_FIGHTING] = gMonIcon_Arceus, @@ -1096,6 +1121,7 @@ const u8 *const gMonIconTable[] = [SPECIES_ARCEUS_DARK] = gMonIcon_Arceus, [SPECIES_ARCEUS_FAIRY] = gMonIcon_Arceus, [SPECIES_BASCULIN_BLUE_STRIPED] = gMonIcon_BasculinBlueStriped, + [SPECIES_BASCULIN_WHITE_STRIPED] = gMonIcon_BasculinWhiteStriped, [SPECIES_DARMANITAN_ZEN_MODE] = gMonIcon_DarmanitanZenMode, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = gMonIcon_DarmanitanZenModeGalarian, [SPECIES_DEERLING_SUMMER] = gMonIcon_DeerlingSummer, @@ -1107,6 +1133,7 @@ const u8 *const gMonIconTable[] = [SPECIES_TORNADUS_THERIAN] = gMonIcon_TornadusTherian, [SPECIES_THUNDURUS_THERIAN] = gMonIcon_ThundurusTherian, [SPECIES_LANDORUS_THERIAN] = gMonIcon_LandorusTherian, + [SPECIES_ENAMORUS_THERIAN] = gMonIcon_EnamorusTherian, [SPECIES_KYUREM_WHITE] = gMonIcon_KyuremWhite, [SPECIES_KYUREM_BLACK] = gMonIcon_KyuremBlack, [SPECIES_KELDEO_RESOLUTE] = gMonIcon_KeldeoResolute, @@ -1257,6 +1284,7 @@ const u8 *const gMonIconTableFemale[] = [SPECIES_FRILLISH] = gMonIcon_FrillishF, [SPECIES_JELLICENT] = gMonIcon_JellicentF, [SPECIES_PYROAR] = gMonIcon_PyroarF, + [SPECIES_BASCULEGION] = gMonIcon_BasculegionF, }; const u8 gMonIconPaletteIndices[] = @@ -2159,6 +2187,13 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_GLASTRIER] = 0, [SPECIES_SPECTRIER] = 0, [SPECIES_CALYREX] = 0, + [SPECIES_WYRDEER] = 2, + [SPECIES_KLEAVOR] = 2, + [SPECIES_URSALUNA] = 2, + [SPECIES_BASCULEGION] = 1, + [SPECIES_SNEASLER] = 2, + [SPECIES_OVERQWIL] = 2, + [SPECIES_ENAMORUS] = 1, [SPECIES_VENUSAUR_MEGA] = 1, [SPECIES_CHARIZARD_MEGA_X] = 0, [SPECIES_CHARIZARD_MEGA_Y] = 0, @@ -2246,6 +2281,22 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_DARMANITAN_GALARIAN] = 0, [SPECIES_YAMASK_GALARIAN] = 2, [SPECIES_STUNFISK_GALARIAN] = 1, + [SPECIES_GROWLITHE_HISUIAN] = 0, + [SPECIES_ARCANINE_HISUIAN] = 0, + [SPECIES_VOLTORB_HISUIAN] = 0, + [SPECIES_ELECTRODE_HISUIAN] = 1, + [SPECIES_TYPHLOSION_HISUIAN] = 1, + [SPECIES_QWILFISH_HISUIAN] = 0, + [SPECIES_SNEASEL_HISUIAN] = 2, + [SPECIES_SAMUROTT_HISUIAN] = 0, + [SPECIES_LILLIGANT_HISUIAN] = 1, + [SPECIES_ZORUA_HISUIAN] = 0, + [SPECIES_ZOROARK_HISUIAN] = 0, + [SPECIES_BRAVIARY_HISUIAN] = 2, + [SPECIES_SLIGGOO_HISUIAN] = 2, + [SPECIES_GOODRA_HISUIAN] = 2, + [SPECIES_AVALUGG_HISUIAN] = 5, + [SPECIES_DECIDUEYE_HISUIAN] = 0, [SPECIES_PIKACHU_COSPLAY] = 2, [SPECIES_PIKACHU_ROCK_STAR] = 1, [SPECIES_PIKACHU_BELLE] = 0, @@ -2277,6 +2328,8 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ROTOM_FROST] = 5, [SPECIES_ROTOM_FAN] = 0, [SPECIES_ROTOM_MOW] = 0, + [SPECIES_DIALGA_ORIGIN] = 0, + [SPECIES_PALKIA_ORIGIN] = 2, [SPECIES_GIRATINA_ORIGIN] = 0, [SPECIES_SHAYMIN_SKY] = 1, [SPECIES_ARCEUS_FIGHTING] = 1, @@ -2297,6 +2350,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_ARCEUS_DARK] = 1, [SPECIES_ARCEUS_FAIRY] = 1, [SPECIES_BASCULIN_BLUE_STRIPED] = 0, + [SPECIES_BASCULIN_WHITE_STRIPED] = 0, [SPECIES_DARMANITAN_ZEN_MODE] = 0, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = 0, [SPECIES_DEERLING_SUMMER] = 1, @@ -2308,6 +2362,7 @@ const u8 gMonIconPaletteIndices[] = [SPECIES_TORNADUS_THERIAN] = 1, [SPECIES_THUNDURUS_THERIAN] = 0, [SPECIES_LANDORUS_THERIAN] = 0, + [SPECIES_ENAMORUS_THERIAN] = 1, [SPECIES_KYUREM_WHITE] = 0, [SPECIES_KYUREM_BLACK] = 0, [SPECIES_KELDEO_RESOLUTE] = 0, @@ -2451,6 +2506,7 @@ const u8 gMonIconPaletteIndicesFemale[] = [SPECIES_FRILLISH] = 1, [SPECIES_JELLICENT] = 1, [SPECIES_PYROAR] = 2, + [SPECIES_BASCULEGION] = 0, }; const struct SpritePalette gMonIconPaletteTable[] = From ff861ff963d0ca1a4eb01927b08fed2509727a7e Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Mon, 4 Jul 2022 12:28:40 +0700 Subject: [PATCH 059/271] Add some of Legends Arceus battle sprites --- graphics/pokemon/arcanine/hisuian/back.png | Bin 0 -> 902 bytes graphics/pokemon/arcanine/hisuian/front.png | Bin 0 -> 1137 bytes graphics/pokemon/arcanine/hisuian/normal.pal | 19 ++ graphics/pokemon/arcanine/hisuian/shiny.pal | 19 ++ graphics/pokemon/avalugg/hisuian/back.png | Bin 0 -> 528 bytes graphics/pokemon/avalugg/hisuian/front.png | Bin 0 -> 809 bytes graphics/pokemon/avalugg/hisuian/normal.pal | 19 ++ graphics/pokemon/avalugg/hisuian/shiny.pal | 19 ++ .../pokemon/basculin/white_striped/back.png | Bin 0 -> 645 bytes .../pokemon/basculin/white_striped/front.png | Bin 0 -> 546 bytes .../pokemon/basculin/white_striped/normal.pal | 19 ++ .../pokemon/basculin/white_striped/shiny.pal | 19 ++ graphics/pokemon/braviary/hisuian/back.png | Bin 0 -> 786 bytes graphics/pokemon/braviary/hisuian/front.png | Bin 0 -> 978 bytes graphics/pokemon/braviary/hisuian/normal.pal | 19 ++ graphics/pokemon/braviary/hisuian/shiny.pal | 19 ++ graphics/pokemon/dialga/origin/back.png | Bin 0 -> 623 bytes graphics/pokemon/dialga/origin/front.png | Bin 0 -> 1072 bytes graphics/pokemon/dialga/origin/normal.pal | 19 ++ graphics/pokemon/dialga/origin/shiny.pal | 19 ++ graphics/pokemon/electrode/hisuian/back.png | Bin 0 -> 516 bytes graphics/pokemon/electrode/hisuian/front.png | Bin 0 -> 653 bytes graphics/pokemon/electrode/hisuian/normal.pal | 19 ++ graphics/pokemon/electrode/hisuian/shiny.pal | 19 ++ graphics/pokemon/goodra/hisuian/back.png | Bin 0 -> 882 bytes graphics/pokemon/goodra/hisuian/front.png | Bin 0 -> 924 bytes graphics/pokemon/goodra/hisuian/normal.pal | 19 ++ graphics/pokemon/goodra/hisuian/shiny.pal | 19 ++ graphics/pokemon/growlithe/hisuian/back.png | Bin 0 -> 678 bytes graphics/pokemon/growlithe/hisuian/front.png | Bin 0 -> 701 bytes graphics/pokemon/growlithe/hisuian/normal.pal | 19 ++ graphics/pokemon/growlithe/hisuian/shiny.pal | 19 ++ graphics/pokemon/lilligant/hisuian/back.png | Bin 0 -> 814 bytes graphics/pokemon/lilligant/hisuian/front.png | Bin 0 -> 705 bytes graphics/pokemon/lilligant/hisuian/normal.pal | 19 ++ graphics/pokemon/lilligant/hisuian/shiny.pal | 19 ++ graphics/pokemon/overqwil/back.png | Bin 0 -> 605 bytes graphics/pokemon/overqwil/front.png | Bin 0 -> 742 bytes graphics/pokemon/overqwil/normal.pal | 19 ++ graphics/pokemon/overqwil/shiny.pal | 19 ++ graphics/pokemon/palkia/origin/back.png | Bin 0 -> 739 bytes graphics/pokemon/palkia/origin/front.png | Bin 0 -> 1162 bytes graphics/pokemon/palkia/origin/normal.pal | 19 ++ graphics/pokemon/palkia/origin/shiny.pal | 19 ++ graphics/pokemon/qwilfish/hisuian/back.png | Bin 0 -> 606 bytes graphics/pokemon/qwilfish/hisuian/front.png | Bin 0 -> 571 bytes graphics/pokemon/qwilfish/hisuian/normal.pal | 19 ++ graphics/pokemon/qwilfish/hisuian/shiny.pal | 19 ++ graphics/pokemon/sliggoo/hisuian/back.png | Bin 0 -> 606 bytes graphics/pokemon/sliggoo/hisuian/front.png | Bin 0 -> 659 bytes graphics/pokemon/sliggoo/hisuian/normal.pal | 19 ++ graphics/pokemon/sliggoo/hisuian/shiny.pal | 19 ++ graphics/pokemon/sneasel/hisuian/back.png | Bin 0 -> 591 bytes graphics/pokemon/sneasel/hisuian/front.png | Bin 0 -> 682 bytes graphics/pokemon/sneasel/hisuian/normal.pal | 19 ++ graphics/pokemon/sneasel/hisuian/shiny.pal | 19 ++ graphics/pokemon/typhlosion/hisuian/back.png | Bin 0 -> 767 bytes graphics/pokemon/typhlosion/hisuian/front.png | Bin 0 -> 872 bytes .../pokemon/typhlosion/hisuian/normal.pal | 19 ++ graphics/pokemon/typhlosion/hisuian/shiny.pal | 19 ++ graphics/pokemon/ursaluna/back.png | Bin 0 -> 564 bytes graphics/pokemon/ursaluna/front.png | Bin 0 -> 996 bytes graphics/pokemon/ursaluna/normal.pal | 19 ++ graphics/pokemon/ursaluna/shiny.pal | 19 ++ graphics/pokemon/voltorb/hisuian/back.png | Bin 0 -> 443 bytes graphics/pokemon/voltorb/hisuian/front.png | Bin 0 -> 436 bytes graphics/pokemon/voltorb/hisuian/normal.pal | 19 ++ graphics/pokemon/voltorb/hisuian/shiny.pal | 19 ++ graphics/pokemon/zoroark/hisuian/back.png | Bin 0 -> 1185 bytes graphics/pokemon/zoroark/hisuian/front.png | Bin 0 -> 1099 bytes graphics/pokemon/zoroark/hisuian/normal.pal | 19 ++ graphics/pokemon/zoroark/hisuian/shiny.pal | 19 ++ graphics/pokemon/zorua/hisuian/back.png | Bin 0 -> 772 bytes graphics/pokemon/zorua/hisuian/front.png | Bin 0 -> 750 bytes graphics/pokemon/zorua/hisuian/normal.pal | 19 ++ graphics/pokemon/zorua/hisuian/shiny.pal | 19 ++ include/graphics.h | 152 ++++++++-------- src/data/graphics/pokemon.h | 168 +++++++++--------- .../pokemon_graphics/back_pic_coordinates.h | 54 +++--- src/data/pokemon_graphics/back_pic_table.h | 38 ++-- .../pokemon_graphics/enemy_mon_elevation.h | 4 + .../pokemon_graphics/front_pic_coordinates.h | 48 ++--- src/data/pokemon_graphics/front_pic_table.h | 38 ++-- src/data/pokemon_graphics/palette_table.h | 42 ++--- .../pokemon_graphics/shiny_palette_table.h | 44 ++--- 85 files changed, 1018 insertions(+), 292 deletions(-) create mode 100644 graphics/pokemon/arcanine/hisuian/back.png create mode 100644 graphics/pokemon/arcanine/hisuian/front.png create mode 100644 graphics/pokemon/arcanine/hisuian/normal.pal create mode 100644 graphics/pokemon/arcanine/hisuian/shiny.pal create mode 100644 graphics/pokemon/avalugg/hisuian/back.png create mode 100644 graphics/pokemon/avalugg/hisuian/front.png create mode 100644 graphics/pokemon/avalugg/hisuian/normal.pal create mode 100644 graphics/pokemon/avalugg/hisuian/shiny.pal create mode 100644 graphics/pokemon/basculin/white_striped/back.png create mode 100644 graphics/pokemon/basculin/white_striped/front.png create mode 100644 graphics/pokemon/basculin/white_striped/normal.pal create mode 100644 graphics/pokemon/basculin/white_striped/shiny.pal create mode 100644 graphics/pokemon/braviary/hisuian/back.png create mode 100644 graphics/pokemon/braviary/hisuian/front.png create mode 100644 graphics/pokemon/braviary/hisuian/normal.pal create mode 100644 graphics/pokemon/braviary/hisuian/shiny.pal create mode 100644 graphics/pokemon/dialga/origin/back.png create mode 100644 graphics/pokemon/dialga/origin/front.png create mode 100644 graphics/pokemon/dialga/origin/normal.pal create mode 100644 graphics/pokemon/dialga/origin/shiny.pal create mode 100644 graphics/pokemon/electrode/hisuian/back.png create mode 100644 graphics/pokemon/electrode/hisuian/front.png create mode 100644 graphics/pokemon/electrode/hisuian/normal.pal create mode 100644 graphics/pokemon/electrode/hisuian/shiny.pal create mode 100644 graphics/pokemon/goodra/hisuian/back.png create mode 100644 graphics/pokemon/goodra/hisuian/front.png create mode 100644 graphics/pokemon/goodra/hisuian/normal.pal create mode 100644 graphics/pokemon/goodra/hisuian/shiny.pal create mode 100644 graphics/pokemon/growlithe/hisuian/back.png create mode 100644 graphics/pokemon/growlithe/hisuian/front.png create mode 100644 graphics/pokemon/growlithe/hisuian/normal.pal create mode 100644 graphics/pokemon/growlithe/hisuian/shiny.pal create mode 100644 graphics/pokemon/lilligant/hisuian/back.png create mode 100644 graphics/pokemon/lilligant/hisuian/front.png create mode 100644 graphics/pokemon/lilligant/hisuian/normal.pal create mode 100644 graphics/pokemon/lilligant/hisuian/shiny.pal create mode 100644 graphics/pokemon/overqwil/back.png create mode 100644 graphics/pokemon/overqwil/front.png create mode 100644 graphics/pokemon/overqwil/normal.pal create mode 100644 graphics/pokemon/overqwil/shiny.pal create mode 100644 graphics/pokemon/palkia/origin/back.png create mode 100644 graphics/pokemon/palkia/origin/front.png create mode 100644 graphics/pokemon/palkia/origin/normal.pal create mode 100644 graphics/pokemon/palkia/origin/shiny.pal create mode 100644 graphics/pokemon/qwilfish/hisuian/back.png create mode 100644 graphics/pokemon/qwilfish/hisuian/front.png create mode 100644 graphics/pokemon/qwilfish/hisuian/normal.pal create mode 100644 graphics/pokemon/qwilfish/hisuian/shiny.pal create mode 100644 graphics/pokemon/sliggoo/hisuian/back.png create mode 100644 graphics/pokemon/sliggoo/hisuian/front.png create mode 100644 graphics/pokemon/sliggoo/hisuian/normal.pal create mode 100644 graphics/pokemon/sliggoo/hisuian/shiny.pal create mode 100644 graphics/pokemon/sneasel/hisuian/back.png create mode 100644 graphics/pokemon/sneasel/hisuian/front.png create mode 100644 graphics/pokemon/sneasel/hisuian/normal.pal create mode 100644 graphics/pokemon/sneasel/hisuian/shiny.pal create mode 100644 graphics/pokemon/typhlosion/hisuian/back.png create mode 100644 graphics/pokemon/typhlosion/hisuian/front.png create mode 100644 graphics/pokemon/typhlosion/hisuian/normal.pal create mode 100644 graphics/pokemon/typhlosion/hisuian/shiny.pal create mode 100644 graphics/pokemon/ursaluna/back.png create mode 100644 graphics/pokemon/ursaluna/front.png create mode 100644 graphics/pokemon/ursaluna/normal.pal create mode 100644 graphics/pokemon/ursaluna/shiny.pal create mode 100644 graphics/pokemon/voltorb/hisuian/back.png create mode 100644 graphics/pokemon/voltorb/hisuian/front.png create mode 100644 graphics/pokemon/voltorb/hisuian/normal.pal create mode 100644 graphics/pokemon/voltorb/hisuian/shiny.pal create mode 100644 graphics/pokemon/zoroark/hisuian/back.png create mode 100644 graphics/pokemon/zoroark/hisuian/front.png create mode 100644 graphics/pokemon/zoroark/hisuian/normal.pal create mode 100644 graphics/pokemon/zoroark/hisuian/shiny.pal create mode 100644 graphics/pokemon/zorua/hisuian/back.png create mode 100644 graphics/pokemon/zorua/hisuian/front.png create mode 100644 graphics/pokemon/zorua/hisuian/normal.pal create mode 100644 graphics/pokemon/zorua/hisuian/shiny.pal diff --git a/graphics/pokemon/arcanine/hisuian/back.png b/graphics/pokemon/arcanine/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a6fdca501ad80a47b717c7e55e47b0349eae3292 GIT binary patch literal 902 zcmV;119|+3P)+-&?vB&0NB{j`1tThKsYEUDB#d2000000000000000GKn000009K zNkltn!se*}E*``*{> z5wP)om~00YVF!biM;7GZ~V=o zSmmbHPHXK*YX;!p=6+GCvgX_5$XXq){Q7oKU#}O0z-O;c>1popc3fn=D zQcDL#MKOjMz(1?*mq4uo1}1r-z+z;U4u~H3j{!rGD305AfN%~WPJqCNQnNNh889O? z!Gsur36916x?YuB*DPT;OT#luDI?RtMW^yp6S$A?0@>hF8o>~N(yDpFiz=8n1`r7_ zti(ZxH<7ZVk(_`Z2JHM8nm9s)^C!hFbP63eGaxY!=D?LED*>>J5}ss!PDulbg8lQv=n2rU znTp@t`YyiOF%1<1nl(CNKns5H>hcFtO--ePgkksi2H3PSF8g*P+?s(M0JVFWG;Cff zvTZkG^~!zPaqKW)CxZQ2aQzzihx@}_YGVtvom(ptDAf@*+K);oc z>a*q`ah->Nb@Z*@HzPNVzA0&x$N*YdsR{5i;2>OMcVm`GzilSk0szsWR(NE!oB-Y! z^ZMKRA+_NI0-CAlTT@`1tThKsYEUD9~6y000000000000000F9>6h000C0 zNkl)~f5QQn8!2Hu%Y(kv!?8t@>0HBk-qJULi3LasR-5epanEkjai#fpD za~?p+iXA7g%OQb}58V&lNKs%^#ZN{}>%Yz2`|G8fFTn17pykV#%>=a{*Eg&$Up7!0 ze%z*ZF94*5H``Q113Qx+0qjb)uhfaf%?;0Mh)UNzo2q^h*$gbqtXba`eKC+@EmP?_saS-Pd_`j_z8B>~s!spx&5Ud&RtPF*r7vw(J55T)vdC%l-0@K%`> zP#M5?BDPSLKQn*qPHqZv0S3+yA~FD_mCsUr=vuc8ay=Vfha{k=Kl&4Q=c$_PF(-#4m?`-~P##SO%g}48v-YZH;0mw)fA;($-?qraU*< z1+7JigAK)|Rw7j;$jZX0(625yOvq|nX{zcgo(=Vw(y?zr2t-Xji4+tzkVI?)RGDj{ z{BGBzA(6E5r~>soc^_y6t`%0&ia`6}Sl51`F%kCGOD)u}t3h=>90>yZMTs`IE*P-x z5V!490^LaG&^x(xQaK=In1Sji0J9%Gk?5CREcZIKiM0H%Fr|Sg$l2REOrF;B_eWMF zb|0Xyd(lVDbJw6zA@6bIAc(?E0Gl^_e&XZo&-(JzSACV?@e z3+ig5{jl}^@Nl&0pe;PQe~!DN!t)wOSszF5hlk@F2F|A1Z*jLtmRtf+M}0oPLmmSm zK@fY|t=+Xs49AqkgJTG#b0E5>-`Bb_*Iw=N2ctg(8gY|66Rj7_y2qe-pFYr|-v)}~ z`EjI>TC=@WgklH4ApyT705OK~1bNi$rCHf+0qK#(n#Nd1Fik3PF*hJ+HX%?=u@Xo` z$5SqM$B-&O zKGwKMZgowOcICf>D-{W)R*Laf)M<<%>`EG+cp3o|$%!`rCQ8Um%{Bqu@&-Vm1Avpv z+kh*=cZcPBpj`Za0B}e=5f(Nl-@OLDEFPgPaa`-P3^=Y=K=^{4_i3MNQmL%Jk0B*- z?z$^b61`5Mz literal 0 HcmV?d00001 diff --git a/graphics/pokemon/arcanine/hisuian/normal.pal b/graphics/pokemon/arcanine/hisuian/normal.pal new file mode 100644 index 0000000000..7502c6a4cc --- /dev/null +++ b/graphics/pokemon/arcanine/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 32 +0 0 0 +136 136 128 +96 96 80 +232 72 56 +176 48 32 +216 216 208 +248 248 240 +72 64 56 +40 40 40 +208 88 64 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/arcanine/hisuian/shiny.pal b/graphics/pokemon/arcanine/hisuian/shiny.pal new file mode 100644 index 0000000000..c786e1990f --- /dev/null +++ b/graphics/pokemon/arcanine/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 40 32 +0 0 0 +136 136 128 +96 96 80 +224 208 40 +176 152 0 +216 216 208 +248 248 240 +72 64 56 +40 40 40 +224 208 40 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/avalugg/hisuian/back.png b/graphics/pokemon/avalugg/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..885fd4c13a1c37339cae81e998477b422bc1620b GIT binary patch literal 528 zcmV+r0`L8aP)YU7{yC4h?7LnB}ygbI>bPsA+9a~$I`T)>qQIS+9i+&5eFwh=+Z^% zdJCef7sLk;UqNFpqEYI-w<`S;@&fj(=XcLJUr4F6&_e%2Mq2Efggh7f9Vh}!a!jHE zz#u3<1FN}|>Gm!G^oBGKFbQ_tt_BRA2M}xvdO_95RenG3M~GDbheoO)2Z#=_LjXPm zRRNrD&mM4y@&bT}P!%u-7(0mj&{!iBB;eifnUzKbu_mDWB@|$Ady_j;2g>)yZnv>D zS|2IkhHdiO$$bQ|?e<9H@o8O1z*E4)8IIhCwX_G;<3k_;W5BJ+m4+{UOyL8*o-7LR zyvw-K-^#bj9=7EtiW=pYR|zQ8w$NJ?>ByOG&epNQH6YXRP|E(tm+l1;nSmR8SA=^=8Jd zIa9K1-BDHfP38O08ft)fcdTz~i0Ov-MEe2M<8YX&=N{WQ8WV$@A7-J23iS;Qbl)lh Sc$MP-0000KAKFSk z>MF`k=@C=eDZ*>|>_Hn%66qDx9t<;52RO_kL1DARmQsf(ypIe3rAM0pIcQ;8w5Wr! z4{zRY02#vKbi@#vF}myHsp|8n0R=GyrC>N~4HzRO72d^X$h@sQ%Ft&199Ee2tC~7{!3C!Tn4C>h!9ZrI}qEvA`n2 z?jr#9j7LCfI-TI|P-YfT< za?9Z}T2b{zOEl`?IZVloc9ohsnlFGzV$5L-%x_UjO*$JugR%C&yRRfbw_^pXK&!#p zuBP8t7SD-W0Z#x-w_La9RdlbC>{^m9FU&#$d~{vQ|2@DvuokaH?#kT+7~$ZSuSbBt z`oEb2t{BXv` nOPH0{d?~f&KOp%p{=d~9)0=YPmf^fP00000NkvXXu0mjfBYt#7 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/avalugg/hisuian/normal.pal b/graphics/pokemon/avalugg/hisuian/normal.pal new file mode 100644 index 0000000000..8055ef92ab --- /dev/null +++ b/graphics/pokemon/avalugg/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 168 208 +80 112 144 +184 240 248 +104 80 64 +128 208 240 +248 248 248 +80 40 24 +8 8 8 +144 120 96 +144 64 32 +200 200 216 +144 152 168 +248 192 0 +88 56 56 +0 0 0 diff --git a/graphics/pokemon/avalugg/hisuian/shiny.pal b/graphics/pokemon/avalugg/hisuian/shiny.pal new file mode 100644 index 0000000000..9e547358cc --- /dev/null +++ b/graphics/pokemon/avalugg/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 152 208 +80 96 168 +184 232 248 +200 160 144 +128 192 240 +248 248 248 +112 80 72 +8 8 8 +232 192 176 +248 176 24 +248 176 120 +248 136 88 +248 176 24 +160 128 120 +0 0 0 diff --git a/graphics/pokemon/basculin/white_striped/back.png b/graphics/pokemon/basculin/white_striped/back.png new file mode 100644 index 0000000000000000000000000000000000000000..d8faa1575d9e1ee56aac500aa8c41a420543c332 GIT binary patch literal 645 zcmV;00($+4P)P;e*!0000000000O8R9+0006I zNklFoTN%M8Oh3V>@lM*$*% zv%$Yz1VG2cj$t(bBV<^(h4IjC7y}XHV+Z5LDNI6qEY%2H5Tbx?(+(p--b$chMg@3` zu~8i`k&4hThO{4mZde__=-h`xQ`u6i_mc2&$A`vau)-us;vksyY5?w74(kWEQKA$F zvsw=+H@F2WjB=v)7ht;q*c|i&n0Qw2VUyO!_!C#k09n2$fgnTjF3~>EIFG6&OawOR zPGarz9p`DXJoqE&6SpkD?>PTH`C9hq-#~*dLa1E;E6&%8_=EOeEdw^ZaAA)UQ9v{= z00?ftTIx%HGP=b&ntUk$NX0Y9o(chka$6{Lmq%F@@_k#oQJg48phUEZ+lD+3? z##2SSmV1eieirn~FM(+`h2yjU?!@z40I<~nX-`v?m@HxLBp?*<+gBqH_j<(-fPfA{ zJPEP+Y2`Dz>`}k898lW8mHY5x?8Q#`q5@pOwPjM*LhRu|`dgy}_K%{X2YnwLfTyZ2 fG+qC}PCDriTfkhgu*E~h00000NkvXXu0mjfmPZ>5 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/basculin/white_striped/front.png b/graphics/pokemon/basculin/white_striped/front.png new file mode 100644 index 0000000000000000000000000000000000000000..f16202e1493807f722b352d7288ea877b6795924 GIT binary patch literal 546 zcmV+-0^R+IP)#KvkZgxIzq_sMUe#F1cM8S~Z*^UwBM5@A5FOzHpWbN!@)%fME?<=JGljE*l(!o z(gs)}X4;&Q^5_ksyN3b*#3hXuI5Llz1}e@A0PKDAf}Z(4eTeRG{`CyD7*FPz8QTDq zfY#JMPs2|jI>%oDJJmWTv6#z`v1xcMfe#UcRzQwf0dP&p(=7N)Vu!8@z*cDeq+j%_ zl=6@+h6TV$yjcaZf8YYffeI)uaI%Ca{m9Azuq^;mnx8NX9Y8H6EF@5sTEIJX;F~{A kG2=SG>i`?ofmMDb@9bjVj^@vOF#rGn07*qoM6N<$f`8-W!vFvP literal 0 HcmV?d00001 diff --git a/graphics/pokemon/basculin/white_striped/normal.pal b/graphics/pokemon/basculin/white_striped/normal.pal new file mode 100644 index 0000000000..5e82d654d3 --- /dev/null +++ b/graphics/pokemon/basculin/white_striped/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 80 +8 8 8 +224 224 224 +160 160 160 +32 48 56 +16 16 16 +64 80 80 +120 168 168 +168 216 224 +64 160 80 +0 64 32 +40 112 48 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/basculin/white_striped/shiny.pal b/graphics/pokemon/basculin/white_striped/shiny.pal new file mode 100644 index 0000000000..766d07db7e --- /dev/null +++ b/graphics/pokemon/basculin/white_striped/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +72 80 80 +8 8 8 +224 224 224 +160 160 160 +32 48 56 +16 16 16 +64 80 80 +120 168 168 +168 216 224 +120 168 56 +40 64 0 +80 112 40 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/braviary/hisuian/back.png b/graphics/pokemon/braviary/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..e314179b2b445519449d874662f40ce28d50c66f GIT binary patch literal 786 zcmV+t1MU2YP)V*290007= zNklc#H5Jf2=2assF3u0+S$4vkgOT=wVEzBy70mXd~u?`g3O9-ygXrWW2 zW3ajbS*cf*8~6eY>;q`?XGz(TOy&Z~g57`o^JjKQ$N7K$#UthH@4!qgr2J8@x80di zi=^JA&x5m{N@@AEQto_ca$hi*B(f6e`|gkn0h8}qC-Q}U(dXO;AOvGlYkfd8Iy~Uq z>OzD{0%`97O?n*>pb9x7gS&ORMV)OquaE)Ag{E`2Ua#6tJI_m^>6QK>gqkAedbM6d z&+}H%B!33dECVrl_j*NoeqUtV0y3UK&U7+m?Kh;GP0MC1fl$qtczvlS%zJzCkmtXR zxi2ynA>#!^0O|BH=owfTV;+i(Abc2T*aJw!mtR+ffqA4kQjOs-gh84Tpr_u)lMM`* z1zwR3hj^|ubpV&!PZtITZkL&^;~ZIlpUY{ySkf3$J&6Vz=!33<$613SVSSplR5XIDG(ZSD#PYh~L36f*wgwcU^#nAmgSD^+ z!0774ecrhvtXzmLRk2UWc!a~8T?0Y)9m}`?NWa=$S|$jPp$M(T4e4EH_pox~5EP#< z>1>hv&>N*LWjr}Wg+tw@6vCsmy}7Q?K|l*U5s0(Vb(Ic_ zfO!Bsxj%p%q8kV%JomJ+Kv^URE=F|*)Tkfyjz_fy4Ih7?<70@fb+^807M3_qp%)y?2rg<3FS7mbT1F zHV?M|t;{pDidlCB;Imy4z^s{W+O7$I0dyI*YnL2U7Fx>1gpIO*1neAO77%*{*igqO zy9D?-pwtEesB3E=1X`>T`zio#39tc+OM$TLfPgke79dm(Br8C*Ndkb6Lt9;#X)8ds zQAvT89RPJ#2B0;tdks{58!PcEHvncssgVHGR)>5)qd+0)UalCPm$haAxlREZgnGwM zdq~680PBKJC8KX-1+?^%u{zk=#7!NvWF-Lz&Lo5kK!NgS0D*Rt0=}P&BXJ1ZBB}%E z**XY>RF_TFY$>#RLi9;;$4-!1Y7Z=7hYO6CM343kYIR1CdQ<`0GS5jmdE9}{I2la~ zSG#R_Uc5{176l+q0Qmybo)j2};SGTD@f(%y$oEJVh%wtr0c#)N0YaU9h-pg~kQFej z7&9a2#FPDT*n*x)i<=TLPR5>UzLb)ejZQ852jx}ACGALkrtR`1k8Af zKzu%#PDaY1C-$-ihV}U5<77NNIsQC`?k<-CeIpmn>*Kdyr(e!SKs`Pf3i2+WH_V6e zw{P+I6+oBwdV;Vg1;E}p`~Lgusdz>mPqn}b64myn^{chh0ls>Ah`U7z=jr_7XInT< zSLMZkxdn;!tNFz}!n#D|55;b`n*A3w%=vs?BgSS!<%dFi=(3=a2QF)_Vd)Aa!#4B8 z_Ei%BL-jB?)Bp>z!(3Pk`GaHR909S309(rt#6kgbKsd%xVog^O;4wOCD{pHG(D? ziN=fT<;>#;?!l#4L|%lSCD{nF0IAik7d*NvqQUj{WhB+Djf@8|n#<*4My&qYtah>Z zpwz9^U#DCl5E+I`nzh<6D)y)bzP!ID=doNKMtrk4CJ9tsCD~khOV07*qoM6N<$g2ctV AD*ylh literal 0 HcmV?d00001 diff --git a/graphics/pokemon/braviary/hisuian/normal.pal b/graphics/pokemon/braviary/hisuian/normal.pal new file mode 100644 index 0000000000..b792f9ab7e --- /dev/null +++ b/graphics/pokemon/braviary/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 88 80 +8 8 8 +232 232 224 +184 176 168 +56 56 64 +80 88 88 +152 64 168 +168 96 184 +32 40 40 +144 152 184 +80 184 160 +168 24 24 +240 248 248 +224 192 72 +184 128 56 diff --git a/graphics/pokemon/braviary/hisuian/shiny.pal b/graphics/pokemon/braviary/hisuian/shiny.pal new file mode 100644 index 0000000000..fea7024017 --- /dev/null +++ b/graphics/pokemon/braviary/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +24 24 24 +8 8 8 +64 64 56 +40 40 32 +56 56 64 +80 88 88 +48 176 216 +120 232 240 +32 40 40 +168 248 248 +232 248 248 +96 56 144 +240 248 248 +224 192 72 +184 128 56 diff --git a/graphics/pokemon/dialga/origin/back.png b/graphics/pokemon/dialga/origin/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a9867f0bd801bb6b82247271ca2836093153adb3 GIT binary patch literal 623 zcmV-#0+9WQP)66~u%MWzZ~y=R3n?&d0005{ zNklyKLhC<8xI>up&=YB=)VAo6%6L_4uIg&V6`hMM+U?QO{wB?+V0`>xIvd$ZF0-KfP1gdmp1z>#^ zdk2N>A)s7sFtOMHTq43_K+|ZJF7_5upauA7Lh=Q5mjx6}*s2Y%br^^kk(x;|s&)ei zvI6XY!{pTkrEo^KMo`#CpjiPjI5&X<+6Y*T5s-i4m}(@n4UrGgTV!Bz^@t0=Beiyl zz+f%k^>ZBNLDOXI^Gc%!y0^8?19J-jcwI*wfExp$mI6=Uf5rg7n*og*ptmn@5m0cm zjrPPGLD&5g5&+&!*unzn{v|;8_87P|nipY~@5TchA%2`413ZFMz;Hyq5tpSnrsLo) z0q$JKWtpnGIB6}30FEDU@?Jnvl1l{E>mi0ntQmU1YJ0qdNd&6TBN9fo7zElKAQDd3 zBm@iW0hZt~2{1|v8NjFT01N00;8XZ_DKp5_D}<)@Z=VGc;1}GEuJ^Ih;~xM3002ov JPDHLkV1jm{0S^EG literal 0 HcmV?d00001 diff --git a/graphics/pokemon/dialga/origin/front.png b/graphics/pokemon/dialga/origin/front.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7c7aabb788c38f2805ee57746e796a531a3d01 GIT binary patch literal 1072 zcmV-01kd}4P)LimUl@-N({sLM$%k>o}Mc1E@-0?Tun`K#c!DJ9C?|Yy5z8~`#GnTG{GJQ)=*uHh} z^pvru-tk_5eEP&Y{Q+>Q&phGmkKpNAuMGYD0{V#jpdN8?&BXD6egUU)4ql{#z$iht!aw4)J!_rd73$$i?y!2rZw0I3JB;?Q$X0)+)U{<^}kbJnzA_UcraeoLvphVMq z;K1HFGz8C#?GJ{fLjw9jqzZ+a1prFMPE;@;fU3-1B$X#|E1Ob=w!%`&K)y|}gfE(9 zNyj4_DEr2A*=G1&DVo)lzb^unPy9t~oC!ldi680_M#o8Gd z)jYC*?=7}Af&gwMwAlje z4iyq$6eFVP(N8%WqhMpUMeiuIR!)G8v<)<*eL5?k&L2@&1I)i~)_Jv>1*9!Y$^>{_ zb(+e*yWap;65a`Ch0$y0?*1p$sb+xpSLg5U?)e(vlST4K72bcpu2x3|-mZWL3p^~- zB#P6k^UweNJ^JT-Tpg_e)}3U4%j@Z6IePp3^6sOxb}wRV158HasqVJ^J)eGzw{_z{ znGj3WS$4)RuRl*GacVJ;JmWP{odqZ0db-#L@C6@PVAQeJ)v)XU-G|Onk2hAH`I9ll q6n~&k?w{S(B9+At0jt8)j`e@y|5c%d*%s*l00002;j(wdYqHT0004x zNkl+;kuSoCpeelJ*QUT48i++Z-QQIrld2tY4nd9aE*2fY(*RI(34xoSiD%m} zbW_-Jku5ba^h;bhHo!X-_M{q>u$XBe^@i=!1V#jGOV{q<$*ThT0p4l%1gw7p>00tr z0f#H&Fx_iFo{aCE^dk2k1e~Qjr9*#;-*+nlE>cP?%Dr*&Hw^(X0`m0Z+B79M%~xar zd01`jX{OqiyQVpI0P13NHt*lfQT>fPu4P!8X1$C4i~ayC%{%x=V!HSM0000in)6onO<%(y}phFZ$Vy?vz&l#W-SHqu4(A*x|AOad?9wJFocspv2Q zUI4!VcAkb8;NF#Ful^{gb7ow4&!=;Lb`9e}{~?prZ9j6n5Wt^2?(&C;2dq&$L4NX< zY#(6OMzEh;P8HCaF+3+A3CQK&q#2MXfSd3F@PkIgFbNodDHB5AtPzkzT)u%FCSmwFRN^c5d^ye88PtOj7aCs0I;O~eLZnK)4Z zUBjqf02Z*X4 zAN5T!aE%0D{DA;hgj7NA;R*)$o^K$S5#Uggr~_j}^_Gx*RRM8+06qdZt{P(OIK^$F z)PdXmRh94MjnskO>K6X+C6{_GN!qH9S1Uq%5is(C{>TWtr}4Ef~fP z`JXqN&GO(^fu3A_-;uUiY0LDB4jfDQgZ=Gxo!g7WqVnvG^^!W+-QVwi72l_K72mj7 z(rK3c-2E;S=2f7VpD(kbMw(VDP>rIuY~32LkC3uRs0UCNQdc8@Ce?{~GoV7W`Wn&U n6Y)v;U%PzLHLKfx&_DDS;Z`N_d2MJZ00000NkvXXu0mjfo#QGC literal 0 HcmV?d00001 diff --git a/graphics/pokemon/electrode/hisuian/normal.pal b/graphics/pokemon/electrode/hisuian/normal.pal new file mode 100644 index 0000000000..e414980448 --- /dev/null +++ b/graphics/pokemon/electrode/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +104 72 32 +152 104 32 +240 216 136 +184 136 40 +232 176 80 +248 240 192 +16 16 16 +184 48 24 +248 80 32 +88 0 0 +184 168 168 +232 232 232 +80 72 64 +128 16 16 +240 216 136 diff --git a/graphics/pokemon/electrode/hisuian/shiny.pal b/graphics/pokemon/electrode/hisuian/shiny.pal new file mode 100644 index 0000000000..fb741c2d56 --- /dev/null +++ b/graphics/pokemon/electrode/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 104 72 +152 144 80 +232 224 184 +152 128 80 +184 168 120 +240 232 208 +16 16 16 +40 40 40 +80 80 80 +16 8 8 +184 168 168 +232 232 232 +80 72 64 +16 8 8 +224 200 136 diff --git a/graphics/pokemon/goodra/hisuian/back.png b/graphics/pokemon/goodra/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..a454fcde6556f0f8a122086e12736ec223248404 GIT binary patch literal 882 zcmV-&1C9KNP)an84`J=nxPP2&p6Z00090 zNklzxfNl$KN3M%9*a56&zG>4Wdz3ro{Z(j4rvEV@*voM0XDE9{CG~9Q3Ovg z4Mcp$As|3qN$3$a&+&gpK(mXpnn`7Vo}wXdI}{GZX~LJM0zlKeh{0OUx7;`k0kq*_ z3+o`c5DFL$V^ol;pcDh_`*{M~xX${o2>D3`21ExHT|QCZkl}K1notIq@%wrELEhLy z3HlrT>e5KT+=u!RQ_EGN7M?0#Kb$zv*BQ{KaJfjWLSI`FEY2SkXiu;_8Zz2jMiJb$ z?3n@%fO`%2sNI4Hxq57%L2&yBJsfh*_|)MyLoFB^s2jt1T>O5LfOD^n04^5>F!ojg zv3gno7(;#9=CF??O9Jw^TBTsZdKoZ~m+>P2KLLH32R77KYXv+$=@$|N)FVTIF`sPp zFinf5XIGj{H05vt0yMe8vn0X?afW1oboU2j1L#)B~5@NdN!<07*qo IM6N<$f-B*O;{X5v literal 0 HcmV?d00001 diff --git a/graphics/pokemon/goodra/hisuian/front.png b/graphics/pokemon/goodra/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..edd5e3c3abd5da6cdb9062eeb198351cab4f4b2b GIT binary patch literal 924 zcmV;N17rM&P)an84`J=nxPPnz&Y#0009g zNklau;l#9?9x8@*2~iMEL%?x_MR7AU#9cZClLH$vNEi-E zhk_wE&Zss>Yg0^d$k31>MD-VFnxQmP&3%`?lmF>tr*!CBZ1R5h-n+9-k);0=vNHOj zDD!~|nPDDau8;vV%$Iw1<86%pu)fAf@@FDMCun+y}ZW0vUmVbb86a-*X=iv6HIRO~HQH;09(;s0t2Ei-{F)Dunk`;#5 zVd%s7(Om}!~_qUCMlT0H3Pa|GRPV-;W<^M&5Vm5^WPVxINL#pM`;;*4$t zej~uQkx^(N5Jp&lr+q$Tjp1qPM(6Chm*@b%0o!C>BXE9mB6d&#?pPFf-1+U!c_?-e z0aOr(9T3oFl)vYfxbo#BQ9zRE2wX)VOcvmP-ZIu7*dvfA!0#@_KM(r0i$hjs3gF$u z9(X$kHg&-Xzs(fDn}b@vpmZT3Flw0000&au3vzE^gfFCyuDu}St#=p0lz~)vjF2k$ z2}1HdX*08Xme#Ul!Es#{EEoE;|35ST?riqzYdP_Lo=yOZDIm@!H0~yVIb`~_1%TT? z41l*ZqB{bjX#72_Vla@65fK2a_yNNzb7f_f@!18-_ z|EuTm3i$Ko#eny4|9d?KxGL(?&&xW=q~Nb*j+n?j0oPS9P@olPQOftIn9|*lk{C+ zF8MBlR0@}~ha@k%Z4A3OCNs(?C+FtDxYd{(Tf`-8N6Zj%1QE1vST#_R6fMtuSA)xD} zI}(;svs9+p#|~~KmuwvZ;C-b+5hkQ2S;R1znRcuApigX M07*qoM6N<$f~Ke~2><{9 literal 0 HcmV?d00001 diff --git a/graphics/pokemon/growlithe/hisuian/front.png b/graphics/pokemon/growlithe/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d6232a95a5c612d3eb93190f8d3b001a734dbc GIT binary patch literal 701 zcmV;u0z&HV{6vbcUW+w)#Ui3DR*MBF{<%arLUek>hgdoXjS zHta~MAG2$&!nEbzR{XwvwD|KK&i0di7znpXKy(Z*;{iF5Zo_?qQr+^Mt{bx^g z>;TXj(F5A-@8|%~uj38D?#P3@wz9gRL*3(86n%Izssubrq2C4$_<7ma4QK+6T>xXr zt#Tmn;s($y0AqR;SXDyIPzSU!!sF`?lS1HmNCBc6U_&tly(s_>bWZ_X^AY6CUT%R7 zI)qI?TP%A$jP_(w0(1yq*7u;jyG_%N5YxB>@-iEz8L%`>Q6q`AKvD-fmnR6MI=sq( zun=ef`|q*+{Tq(IU>4ag1nL=yyJWZN=T!*tU~|sc8TJ*xzGnTC6}}C!S;p6Hk~AEM z_TtOUv*jmu;RG4aHZ!3J5W<#M%T*FFDaG;35z>vUCP1{WE7aXXz!8p=Ozo2n%Y6}$ z4nDHgCp#fdp1hP*wE?}@%`ZT-fL^&?S^J{6H@kKrcxSugNbIpEBh^py}=?1CBL0XUxs z{P&SmQ?iFi61$6|4PQHsMf{dW_u?>NuPrjj*322*0gPvBHqX5><~Vb$opQ`Cepm&7 zw-VZXu4L%)X%!1EiGUC)5Xj#EE{Um&vQPceG?!|h8mF}T<^4{_!JPons<-yR)4PGK j6a)2BXd(CX|HAqSJE_V@Gi=O@00000NkvXXu0mjfTu4HR literal 0 HcmV?d00001 diff --git a/graphics/pokemon/growlithe/hisuian/normal.pal b/graphics/pokemon/growlithe/hisuian/normal.pal new file mode 100644 index 0000000000..e6d97462b5 --- /dev/null +++ b/graphics/pokemon/growlithe/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +88 72 88 +200 192 184 +16 16 16 +120 104 128 +104 16 8 +248 80 48 +184 32 32 +160 144 160 +112 96 32 +208 128 112 +184 152 120 +224 200 160 +72 72 72 +0 0 0 +16 0 0 diff --git a/graphics/pokemon/growlithe/hisuian/shiny.pal b/graphics/pokemon/growlithe/hisuian/shiny.pal new file mode 100644 index 0000000000..3406fee673 --- /dev/null +++ b/graphics/pokemon/growlithe/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +112 104 96 +232 232 232 +16 16 16 +160 152 144 +88 72 40 +232 184 128 +168 136 48 +208 200 192 +112 96 32 +208 128 112 +184 152 120 +224 200 160 +72 72 72 +0 0 0 +16 0 0 diff --git a/graphics/pokemon/lilligant/hisuian/back.png b/graphics/pokemon/lilligant/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..aefd8b022aa5ee45c9147c22248fc49a6f2416b4 GIT binary patch literal 814 zcmV+}1JV46P)^FhE%N`1m-maLB;8Ab@~ys6de5P`Fr_VIeZk0008H zNkljrZLnk5? zMf?|lR7Kt^51#GmJSLNG;UC~RiCcOXGa}w%$=}btUw7|m+CQ|$zTW>UU|R2OO*^R7 ziD@|i zuvn7Z$@&xY%5T1%p`%~81XKqtL|g}bL&(IKGNz=UnMXf5U34-7zy|%3QUyLN0rVPm z1}{SrWHQjkhp2<0#+hS>F6V{hqG8!HbnF1|9b?eBkdka*0I-9hMvOhqb0Nnt2Q7@- zxHM}Gq)L*w0@}O;s0P%wZk#e3%WzvK^=;9*a@@46S{}ExK0$KnURM`-KmF!_t9u!cBWwiL33;8xT z4H9{tXTxZ&0^YXCMNyCl03iW-P~B4o`eNRn${yUUJ_bEn+-Q4B4(oT2ks;{O4K!&Y zms!3TQXY>Y(pSXF_STd#b`QE=?ug!b9kF-WJM9_1@wASB^B;PrV`4l#+YL-669BF# zq*0p%={<{RzgE`t(71|dSP#(8B)X+L_D|)2g;{i)?%GfroiaBY1^}>~%>*5W6W%L) zS*SYEY0Sc4wFRzY*@;fe=@kL@co_rcD13x~4uD%s0pNtevR)&Pbciro!Diq*rOC$P s`<|A6V%DFo)>D=06#+pP34*&oF literal 0 HcmV?d00001 diff --git a/graphics/pokemon/lilligant/hisuian/front.png b/graphics/pokemon/lilligant/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..6699ad47f3553462d6c5c9af632548b46f5703ab GIT binary patch literal 705 zcmV;y0zUnTP)TxLBC@*gy~v5Kv$!Fjz47`1nY$K*+$jNPtLqs4$4=D7aXdcadxH0006^ zNkl_K!jA!zC#Px4q#y1$|4YDtjp`7K6#KfHH-Ivb&>Ta2^|1xy z$idz5J(N2me-%vAjU6ZX2)@L>H^F^MeDyqs*0&&N$3Mt8Ex3;Nzk;Q`UXx*v2q)?L zSlk#}aNeVWrrzUMwukBCrNKueCL6BzkaT=Pb2cII#AXSbU_6PUNuLms`9kT}7_}+DRA$dWXf%sf z;euo4XyjttT`=P0R~ne}Xd`r)RLk6t|`@+$(I8AFppk-;A n0Rl}cKsn-sL$Cq;^`!HEXh#Gpzd$@V00000NkvXXu0mjf%}q&# literal 0 HcmV?d00001 diff --git a/graphics/pokemon/lilligant/hisuian/normal.pal b/graphics/pokemon/lilligant/hisuian/normal.pal new file mode 100644 index 0000000000..4160f1ed62 --- /dev/null +++ b/graphics/pokemon/lilligant/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 160 80 +96 64 64 +248 128 184 +184 88 152 +248 216 64 +16 16 16 +80 96 40 +48 88 48 +248 248 248 +72 176 64 +200 192 184 +72 128 72 +120 168 48 +136 232 40 +184 88 152 diff --git a/graphics/pokemon/lilligant/hisuian/shiny.pal b/graphics/pokemon/lilligant/hisuian/shiny.pal new file mode 100644 index 0000000000..0f934d2ee3 --- /dev/null +++ b/graphics/pokemon/lilligant/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +184 160 80 +112 64 32 +248 104 56 +184 96 56 +248 216 64 +16 16 16 +96 96 40 +48 64 88 +248 248 248 +56 176 112 +200 192 184 +32 128 128 +112 168 64 +144 224 80 +184 88 152 diff --git a/graphics/pokemon/overqwil/back.png b/graphics/pokemon/overqwil/back.png new file mode 100644 index 0000000000000000000000000000000000000000..79670b0601dd47f35736c8ae2ed62d1b1fd91f8b GIT binary patch literal 605 zcmV-j0;2tiP)6pG5CC9S6xSY6L?0rhM%nz3nh~P6R&i>q)s>MhmeWJzDRN~Bp2w{p zA@?pfvtYw6n{y;r$wtOKzCvWU5} z3Nhp%;(8^Y!2I%nQsQc<)KdvL*K%*b5U^e;rS2PSa`b@`>2v~!&9&rV+{o5#`=-=0 zoqVk_AGmAVb_ZsY4%DMHfZJ2AYzpoSm@{~OQL_mM-&&r5!5UGi0Yp*6UrY7CGhzp* z1pg^1Xqyry<{JAB^ieZTg4vhLM5DZ&zcAqZiVupG0-?|qwF+-^-`C{3xaUJtRA!V= z|H38OVR}K;k1DknKt4RpX0UOrdBaC*aXa^b@ml?G0hRn6{0IEmZsel{+&o44F)(=> zgcf)`1hxmjs|Q#!ymvs3gv_!@hYi+y5g}%i0-Is2qs0jHX#<*0L>Khf*LHUMcgv?h rMX$mr(G28nefoGepwRx;_VHq;6aetEJRn($6qAUhn~9jMxO4!faI|W>B{?Z&OCz~mtA-kNr4iSi z3~Z6wESwoCZ};fLQh|{wWh=0>|48pJP4Nd_Hv=WV=7{VPWY>dgP-x8wX#b!ZxU~RdbEVaIJj69q7PtsM*6;rnF)>Af z=n04VlBt9UaA_1GKsBVu?FJxoiu0kevV;`Mc>o#&ix%`y8|q6T6nj^tZO0)*OrqQ2 zQw|S~bY#Dx*Myw4MHR)4%%Nh8o!skgR|tA_lDT{w-IQ1WdG`@_YCS@!)5O*2hEz;Q zqw}=$jFU6krXS*~ZeG=IUvx=b0@`fF@+i}M&q=S&xM+g5lkUoCuv^C1=LJZ}qfF7| zY|4I0Kph!xbP+4xX7PA7{W=UlgOF2vWEl3|-@`KG_}3TRsFCr6id{)jIJZ`h0P;L% zKN!Qn|0aN#rD}zGeG5M5`UOZpWrWknIRSu2_8x%004*z&R&*kPXO$(Gw4$#o`*;Cl z3`Xu`9)2C^S#cAz;>)zpXMA!ODQ^_;6U!?3GNybC{hLr;eB_oq()DK&0E2$00o4i` z(qJ+WVl-yp#qL1{8}uab%L3da0p=!HVm;P;HCjJCI2t+ Y8zMgrh1@Z|)Bpeg07*qoM6N<$g4^v(dH?_b literal 0 HcmV?d00001 diff --git a/graphics/pokemon/overqwil/normal.pal b/graphics/pokemon/overqwil/normal.pal new file mode 100644 index 0000000000..edf871d9a7 --- /dev/null +++ b/graphics/pokemon/overqwil/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 192 168 +120 32 96 +240 72 208 +16 16 16 +160 72 200 +96 96 104 +184 56 152 +40 40 48 +64 64 72 +128 128 128 +88 80 56 +208 200 176 +176 168 120 +136 120 88 +248 248 248 +0 0 0 diff --git a/graphics/pokemon/overqwil/shiny.pal b/graphics/pokemon/overqwil/shiny.pal new file mode 100644 index 0000000000..d791dac4eb --- /dev/null +++ b/graphics/pokemon/overqwil/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +120 192 168 +40 48 128 +80 96 224 +16 16 16 +96 136 216 +168 184 208 +64 64 200 +80 80 96 +136 136 152 +208 224 240 +64 64 48 +200 192 184 +168 160 136 +112 112 96 +248 248 248 +0 0 0 diff --git a/graphics/pokemon/palkia/origin/back.png b/graphics/pokemon/palkia/origin/back.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3bbd210c4f386781e2e04379fab8cf37e01527 GIT binary patch literal 739 zcmV<90v!E`P)4LE3(X@JJB+6cR>yb4y4N`X!X046CtUqt{Zl1V-4a zU@qRgMCb=_JQakccHfM#OHC%Xz3dab{D1S_`@eaUO67l!T2QVBez*KMrDZ_Pr!JHL zHQxm&1C(9@)F_k#zS3c+O`r;Ztp&0KS|CdRJ)!}sO1^8@F8Njnm{KQHhE+%ypE?pn z6|e>CB;SsTGRPKuDfb3U*P|o#!DB0yp1xlK6Ck$IALH2&hmr$A7&j<&*bg>a4J$P} z*G34T+wfq(X3IrT@#rN`HK1)%ix|Oj5?GjPcmdQsfU)!t1caEBx;X%+pt{T^m9vUK z+wPtT>+-w;Ak1X9nb&a)08K;5q;QfU0!DjeyG_1!u_+Z#|-G`fs@P5i`FIXyn`lq z8Q|f0w4tAqhaKF%Xn>jo&;w}|+a&VS;Bk*7Nt_>4osGD!OtcqCk}!5b)aN^{fKEK( zJV{o^!xy6d@V+Jl$6$4$4QnCsOMD^bAH<+N`Sb^Ax@CNk{5*=oU%k1*#{dojMwB9f zDVBY)|6JQDU)yqsZWEfRj7^I@P$3rQA}wyp?EbA2Mq42XmWmGq;tZHRN!|1<2qPhO zDoH93SY{S@jJIRD2(V1YzpeP4B*P4tNFDqJM1+tlc|2W{o5Nz2H8Bm@*u@?jFyI(O z0@vd8eR?jjVV*K!cx?&rr)#kmZ~dE1G(6qHM16k!F0TCaM9g20`~H>K=dSFZ#2=TF VILfr&0672v002ovPDHLkV1oT|QV{?E literal 0 HcmV?d00001 diff --git a/graphics/pokemon/palkia/origin/front.png b/graphics/pokemon/palkia/origin/front.png new file mode 100644 index 0000000000000000000000000000000000000000..3147470d646259760385d78c4baf94d0b9a768e8 GIT binary patch literal 1162 zcmV;51abP~T>TF!)nu^6ey5ebN78X)h!i8=QE+KoA z_a22AboU{1`>ePrgnv$pBQ_aM4^XSpqf8) zq4WE<(fG@sKUM&qJjs;!Ao!Jn9`>T?t_Gsn8dj=#>{2GBX}`1NRd_s_HEf$JP*dX#uCqsjy{StbrZvBDiUs6o ztmGv{ku-{@>}3FTs15ZXnkfCKqi;B%;6CAy0FD6`0uu(&D?942wt}0thQD4C?@2XE z?HYCJ(Zr6%OmFNcA|eT(7N@>V@yCL}1o~r!5n^+i9)^p6CQ#pUYK{#H&~=39<3Ul58z`i>e_&a8escbijE(H(|i1T;}VxIK}c!8}kwmS*q604_#fGJ#_j4=_x zV9NWrt#nmiJp{m=KnffbRYfpl{YeHWfB+XjZH_G1Qw@y+Z{wDP1EmUP9m&@hj_X0d1*p}1tWbqvlzYB7yv`yXvlAabHb!!W` ce`-Gd2l~gfW-ZmiR{#J207*qoM6N<$f+_4K5dZ)H literal 0 HcmV?d00001 diff --git a/graphics/pokemon/palkia/origin/normal.pal b/graphics/pokemon/palkia/origin/normal.pal new file mode 100644 index 0000000000..428dc93d33 --- /dev/null +++ b/graphics/pokemon/palkia/origin/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 80 120 +96 120 144 +200 176 208 +152 184 200 +232 216 240 +152 128 176 +192 216 224 +8 8 8 +104 56 112 +216 104 80 +152 88 160 +184 104 208 +240 160 152 +224 192 184 +224 208 200 diff --git a/graphics/pokemon/palkia/origin/shiny.pal b/graphics/pokemon/palkia/origin/shiny.pal new file mode 100644 index 0000000000..f520c1e3b7 --- /dev/null +++ b/graphics/pokemon/palkia/origin/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +128 32 56 +128 112 192 +224 176 176 +176 168 216 +248 216 232 +200 104 112 +216 216 248 +8 8 8 +128 32 80 +216 104 80 +168 48 80 +208 96 136 +240 160 152 +224 192 184 +224 208 200 diff --git a/graphics/pokemon/qwilfish/hisuian/back.png b/graphics/pokemon/qwilfish/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..48a01e06f23fa0eb379da21b5aa51d1e2357a45e GIT binary patch literal 606 zcmV-k0-^nhP)-A`1r`cxBvhEMSLVV0005$ zNkl5pe1M<_7e!(!6`dI_>5S>Ky>*~59T|GiIZ~2` zyfG2+Au2H?%7^OR#diJ9f0&VYi~qcz-+OnqgW!KWMVelB=arguiDydV)vN>DT;g|q z)luRG6C(Ysy~8CE(K>1e)7SvQ)*eD9v_#bHz>E;nx}$;tX397$ZXER+08&zd<2ul~ z0*+4myoSISF?bRm&E(TM0iViq=#|68N`IjSUEBFz%6+~@*X{^#;RU{1De-n z@WASCz?AU+qzMO$+TUD){Q>w}-77$rAHf5=p9R=hl5IWE+bnXhb7$LZ;T0gtd+dI> zlg*xkJwO4#9e(`wR}qK<_*0DfP!nt?0Q^s`Ea75XPn&=;pEWdaVw>;tWYY|K@YX&K sBe81%^Z)=hCt5((c)J3cpZn+I5zfI@mI+!&*8l(j07*qoM6N<$g0lA)*Z=?k literal 0 HcmV?d00001 diff --git a/graphics/pokemon/qwilfish/hisuian/front.png b/graphics/pokemon/qwilfish/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..a32988cf7d8f3966b9e70ec7d74474650d0a5321 GIT binary patch literal 571 zcmV-B0>u4^P)USXf|~h)}Sgc(}m8SWqbV`1rW6kN^Mx)+dl20005T zNklX2&E`~mh^LU?{W-}k;xBE(EHMQbjV1bj^b z(n&yOB>{lF>44gjwmHTBQfs@-B|G*QHH+9@(B&JUI)`CbO9{Koz2*vp3K?AnXM(4yxkMCRW?1Uq}V}k+kidaKlhg#Y$(Qz11 zDh;RrG>RyZ4Y&0B9U#_R04PHl+cGx>K)wUA$Uv>NhA8EsaD6E|_QVlQw*`Dj_XSXq z`lX2}gtGnz*=KpHn&$i>>UiOu&JWff@Kr4^(vmue6SY{>yykRtbcD@(PRgn|S(`FA zFK9YCf0waR%pO(E50xqByGGu-eq2WH=-@7*QRVWVmeDt^e)1mbk&U0-78dnpemo_e zMgjM|!jJI~ZAo2P6T>1i@g${*Z|JF<+%(`Taio zmLEg|OprgMu4(mR0HK)v(7fSC9Ke-4#e1(ANr0I4=gss9^bA6;ss|~t49x%l002ov JPDHLkV1i`K0h<5- literal 0 HcmV?d00001 diff --git a/graphics/pokemon/qwilfish/hisuian/normal.pal b/graphics/pokemon/qwilfish/hisuian/normal.pal new file mode 100644 index 0000000000..b1a2bcd32b --- /dev/null +++ b/graphics/pokemon/qwilfish/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +120 32 96 +240 64 208 +16 16 16 +184 48 152 +128 128 128 +64 64 72 +40 40 48 +88 88 96 +152 136 80 +176 160 120 +184 192 192 +88 80 40 +248 248 248 +184 176 144 +0 0 0 diff --git a/graphics/pokemon/qwilfish/hisuian/shiny.pal b/graphics/pokemon/qwilfish/hisuian/shiny.pal new file mode 100644 index 0000000000..79d490248c --- /dev/null +++ b/graphics/pokemon/qwilfish/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +40 48 128 +120 112 208 +16 16 16 +96 88 184 +208 224 240 +136 136 152 +80 80 96 +168 184 208 +168 160 136 +184 184 168 +184 192 192 +96 96 80 +248 248 248 +200 192 184 +0 0 0 diff --git a/graphics/pokemon/sliggoo/hisuian/back.png b/graphics/pokemon/sliggoo/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4289b1b2c32ac4f7d7c5aabd3d94b49b89608b GIT binary patch literal 606 zcmV-k0-^nhP);y40)(W^=vZ#+S zI%{izG5}P0sJp@$=m<*~T@jrIDj&F%02an4raO)J9vNeWdJFrIzdOlr9{?N7S|j0m z2!L9>28{QqphVa0P!O7Fc{9Lc!DPVu4murduP) zOFLM|gnog30Hbnr3f<)H1=CLu@)`P`&Tb^-&d{wxA27yxe)l|g?^%}hUw<$A;by<( zKHUsDZlL@%cn^TX(g(MzZvbC?fp=&Cx+=$OZ)%_bU+>=m`T_#VYR4F0^+E|8gZ>DV zy(fXzp0QyK1g3@-^eEi%O$`zVY#X{pfELq?pl7~O2ljUXdZs;6#|zhmPPhTsCjg9N zu&lNMjDxh=;O_c#*AaiGZ-RT8L|E088YzfFqox7ItAu= zJtA{mL}rH}HIT9-Ni+bSvz=J_mqQ`)yxOsiRDpQrg^zHQjZ#5M>OiS8@E*@nF_*rW zSI3zt;1k{USgce7uB4p|9Dq)L4e%ul~Qc=(kuFziyX{?i(; tI&t5x6FQ#=#?+9eOzW>0lF|NG^&9Ee7Ck}yRDA#d002ovPDHLkV1meLFpvNM literal 0 HcmV?d00001 diff --git a/graphics/pokemon/sliggoo/hisuian/normal.pal b/graphics/pokemon/sliggoo/hisuian/normal.pal new file mode 100644 index 0000000000..5f3e5ae0cd --- /dev/null +++ b/graphics/pokemon/sliggoo/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +232 224 176 +128 96 112 +240 240 240 +216 192 208 +168 152 168 +8 8 8 +136 136 136 +72 152 80 +200 200 200 +64 64 64 +88 200 80 +176 176 176 +168 152 192 +64 56 88 +136 104 168 +104 96 104 diff --git a/graphics/pokemon/sliggoo/hisuian/shiny.pal b/graphics/pokemon/sliggoo/hisuian/shiny.pal new file mode 100644 index 0000000000..9cccd5d391 --- /dev/null +++ b/graphics/pokemon/sliggoo/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +232 224 176 +128 96 112 +240 240 240 +216 192 208 +168 152 168 +8 8 8 +120 104 56 +72 152 80 +200 176 88 +56 40 32 +88 200 80 +160 136 72 +168 152 192 +64 56 88 +136 104 168 +104 96 104 diff --git a/graphics/pokemon/sneasel/hisuian/back.png b/graphics/pokemon/sneasel/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1be20c851560c5bd2d2d05b6babbd60847fd7e GIT binary patch literal 591 zcmV-V0|ZGc4r0JFp>Ns`b4#GVoGeV-a7 z9^%*nP)dy+3NT8zHvvYE(k5XAv`1j`@QUVpnqm@)Xn;zrQ4=5nCrwi>M25HVL8})b zxTqNp5CVI}8tOwpD%4_Z2ypUaeE4>6uaJxcEx2xRR{Jsx(Bki;qjCwfd_do8FJb|ie& zqyE1P^-SkESe_qQsT3x)@?Lp*>hL={hGKh2+Pu45#j(rhiYSl4J5px|+PhNf$mcqk djmi99>kk1V)w6KHYuEq)002ovPDHLkV1m2x`iKAk literal 0 HcmV?d00001 diff --git a/graphics/pokemon/sneasel/hisuian/front.png b/graphics/pokemon/sneasel/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..75e3872b15cc67b231ff9c701bcebf9c90cc710c GIT binary patch literal 682 zcmV;b0#*HqP)yzi-+=6vti5y1534IR=RxE>c!18BnXxDMyIZ!4z{e5>c1HrF&8_bPl?T ze;`W!f@CE~L~lgd=v1*~tGZR{^N(~m?%X*y*qHB!@B8}QJ1pzvE;pAczjA3cOSkis zzRuP?x|0EvXpvU*l2eNeXfdBRM5rG`236Os7%C)y=eh;GP8h3M_U;=u7Z@Ti=KFTD zTQKNW-xoqO&O(!Jg{X_cDKi0NBoC1ow@n6bkL2`dDwxsXSbo2f(=#LBNO^rF4=)%q z)F4vcEu~~eAe_ltDdoH$19q{vqX4br<&9h}!q~yDQ#Yp&?|;kX?6S4#v%s&jNu}s1 zJL3Gp0-x6_#?YigX{De7m~giF!&w{dS)2Fh)|TyG&Hzvx!h#1DDQyil8Tzmfj02B< z+Ew2IiMbDedh+y9(+UoAfQ3eQ)_p#FxB)fWzXBmfgooRE1Axr|jy3K;zZE!5=iDM6 z;94J|yeCeBXl&sf=xUUy*sI~)`34IeVB=}sjXpSEu$h{PDphH6oE;$nx4WhSUWq1+ zcZ9%^V_#Lm>!tq(2;k6mCg*B~UL~zN5P~(r&P0vTb<=N}V#EXT=|TmFTYd(3)Q#zl0007t zNkl6u5g($-LBFrD=Y3?tQYP9l(7r}mnl*lAy`p&Z3KCaaEA=B z8xy!K?iubGjw9fMy$1+{%&z|It}HH9x(qH1^V@H}otae-{EtDze*+TdfBA6)V2(ub zWrSc9iLHAXOk5(TU(DGxA4G!g(+Rec3b4DVooph&O^faY9@ zkm?fJX7U1>@Ff@xLPpR;NK)ttD-lL9<|7`XObe*`TlL-oJjU~ph|x!zSI7F=)?gjL zT41eIUDvh-MINDStN#dWwuR02e%k8RY0uN_pD>1RE5ICU}~>Dj-)+GMLD1 za0<|jz|RsZ;Ni)>1vq7#w18m5T=May-6h>6(F24I02Z^zo^OHsxdTuZiQal|F$BI7IeuU7WM8hC6TElcp literal 0 HcmV?d00001 diff --git a/graphics/pokemon/typhlosion/hisuian/front.png b/graphics/pokemon/typhlosion/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..58c7f9e41755a916e377adfccc80b323da4261d7 GIT binary patch literal 872 zcmV-u1DE`XP) zNklbSVP^K}vYfsZ#8_z&o5GKfgTB`<`D})9$ME@EzZqW#VH`9AH%NWK|D59Xnc(9+m>|v7;j#;1Y(zQTkf}!U)?K zN(JbaZP}=dY=E$;1SK)%3+BkD z!1R@^18@jG5mJUZf~;P^$bK4z0PKeQ#KO3k>%ek+yB>ynEdHkQN%r&9=`}Hu|xcDA#)0*YvWidsie!$*d zL?=6RA9;Eye~%cu@AsG}PB$Ih&yS&F5#1TJ92) zGe)Oyi4T|Qs!P`b&b~?py;F$4dPHBKCv>MT0|slI@gDEd3VuRceI{iX>{I}};akhw zoXLQ8Ha>10iEAd0`2YYpquFeBpidrfe$!W3d}|(Q-FEu2ZbmA=NIF`VO^Bqg$Pfif zmlB<>%3=br6flNr03N3n9T;1cVWw*j#H}!EcV+-A1&nxjGYeoGB=fxcTiHTdVjT=a ziZG`DljB82_keOI=U6lal-GDKt1ZmG_1U-d4`A+pz%T=}QHVJ{LrioTd6e2FAi55z7lMgGAODv@rRb0R$W8bTf|G)YcgF ySt~cE8AZu`tTBw^{5K@Yq#E5w?jlph)b9`BvgA36F`Ov?0000s_3X zIDzg+-01uK`}gllCX-h^V?~Tj*!&;hES8a2J|ZIK0rBy0``p1Q0tD`BoMQqwfQ;^+ z;(!1KFy~@<&wzt8!vZ)#B1RH#;^@-cVrAcWN-_rG6-vDUHztlt`#YHf_sLG7;x?09WYfm3uA(SRejCrl^o_n1%smpHL$I(co-@as92>^ItD40tF20000O~F literal 0 HcmV?d00001 diff --git a/graphics/pokemon/ursaluna/front.png b/graphics/pokemon/ursaluna/front.png new file mode 100644 index 0000000000000000000000000000000000000000..954e6b8020eb41ceb176a1378a3d02e0859ac6d2 GIT binary patch literal 996 zcmVXU_=mJ#1DZ|oDa%ss1hk;caS~uy{R+)e{v>R|EPzI=g zFwyO7b<`vl1n_69kWi5K09M{6a~5y7x1n z+gN#A1!xly7us&0`ui%#01D9}orsmBgxo-UqY&pFC6FD~okk}Co*?2W7J#;ttlO}b zcu->Wn~29*lX4q)C&5`^fOYh{IbhTzi7j?nQ3r{RzHH`z;1*hxV!NaIn69vy$E;QF zPYH0QwN8)%eGI#PHfZO56#WSdNRi5Tg5hcgR4=0FJ&mD3-HNXm@X+^ipuXcqQN%rR zTpj?r=|I2cUJ7jW(RY0*yQ#~EP%{=>z4?yoId)h&t` zcFCYO7V{WuH4lIK_#qDAaF3y^hjJn^pxmP)f3Vkzoq^Hw!xxo(Ti#0AFtV#xq1?kiChIoAv1DXp6 zk>@mjo&It6oSs^|Q4gs-UduUPnB#j>QAq*HAM2i<1BOYlioo)&pd(QL7Iy1#Vd|kj z78Bw18CcE^ok2&y;u7Mduf+zPm*n7m2CxSqx}F#%FW20|9R%c9CxD$Qr`Lh!{JQyq z%^9+;1B+Mj*Gn@n5!To+2mE@`!AgO{;UNLOp)FHr+JJ@ldxrksr~S0R%hA;f0t{`6 zV|{ES-@D+)*{39hIUF7hM@cnJzo*HUDtI^hl=gUb_I7ln=ZP1Op8focAbh81^EsP~ zvrIRJS4VUm(yL__wj%#)=;6x|U9-ZYYwPSSl^ETwQJ4m Sq8DNS0000VYSO5S3^$_E?0003- zNkl;%#MxO%M zD&+_)+ypzV+Wu}z7ABM@W$F9+;-o4eUAp}9P?zI%kKQU9c8rW7>7vv#Ywly2^b0F8 zrJ!j)mLlkj6qM)69@n^CPyIh09?Nn0zIYI0}JKDuK*yuZvn7u179s*+yYpMKy=XGVL<(U ztjkyQszblmlOMnPgh!xg8HbG>N-obK+fIhr~PZY^~wQs lMnZ^8-t#ojpS*4<7&k002ovPDHLkV1mI1xa9x< literal 0 HcmV?d00001 diff --git a/graphics/pokemon/voltorb/hisuian/front.png b/graphics/pokemon/voltorb/hisuian/front.png new file mode 100644 index 0000000000000000000000000000000000000000..12052e98d6a19efcb1b3ff6d20b6b472494a2da3 GIT binary patch literal 436 zcmV;l0ZaagP)VQqU0003$ zNklD+tu<9VY-{a+JGpN9My16a@jp94xb39_MJ2v?N=?pink zKJq)@hzJfx5Rp5AY!63~>?3Ccf%QI-d1@kTKma0a}> z0DdZ9y$cHih*iG{7BNV}vh;Nc3qUyDLs*`!g>G`AYyi)~m%1+XL9F_K#~6PvXj3rLAJdyZi)9Ra3vjUmVP#zOTRTAFzsGRtl(Gz= zuUp%1UE4YUZ>nw7O{pK7?@iEbJ1lU%IbQ7)i3annEt-fk?rvNiXwk+H17C~2V*Y^t e`16h$^+3O{{CVD~dgQ|Z0000e)_-vd-FU)h+dSM?@n2g zZ!OB0COQS@UlSH-F=hyekG%C!yhX^#Af7X3kxs_B=S{u_?3mh&O-Kg?JkL4;tX51( zYwmbfVSr-^YDe&SVgT=3K#ZCv-pG|10?awip(|`%T)0wZBafk7?8vd#3%-)D&H?C` zYx02~mD}RHka8JJq2hk#mYlnXz%xEBXxqK`SfYvje z0XhjpJnv;=u=6xWk7EYOaphA0(C_Mr0KDqrGX%y-+=poJ6zFB#6sd{aj-=d(ncSP0 zac!Z=A#WqO5+d0HZP@@i&d0gk%VnPIbF?$QD*^#&_kb3&cTa&`5ePsIDf2xrI|PQk zcL>NtT2BDEdd$FweUl@JcYr(q-Z?#!V;T`_58y@^0qXQ}iV}AbPOJtp03H>F&gn!q zO|ERq03`&+yEY6R^|Aq4<{#HFU48_X=~XScez0z74}~lYkeR(oKdJ&<7mvM$Ns@aa z537%9f$ee&19Ubfx(qJMO*R%`eScNpo@LF%6q~mg4{%FYrAWko_g6Lcwi&t(Y%LH= zQ{=cz(mxHr3nS59m1dbD#&_v`1Gr`?XUnF((o``?KYjXK>qmvoF_W_c;)mzk&*>qs zoHbo8@bRdhrfK~af4dm~Z8X>rE=rBqbEOsy;2Jf`n&)H&=gT{DK<*UzT}D;dp~1?3@jvO1$|}f5%6BGQ?honz;4MVr+0$Re!nl z2_Icd`Z$nn0YrYvn5P9;e73EAyR2KK7&k#2tZQoWx84l}!5lQs~G z+tWvZNGxih)O(wGcw%mGKf=Yfq9#6wX&}@lRST+b020QQ?IzwOVG0rzNN7N< zF+LDeyj9|8KB1%w5&|U#aLl*UHN^jk@dS^nd+Xgh>$i zmQkezjr7QGd4NtHE5(++DROgl*I1T$P5~JgrhMkbsog6R2jM?w*!i} z^YT>!C}+D{f&H9}A50$9;!YdYvk1uN4)CNlNhpAVZFi4ySaq>a^iI8An@kdbRPf$~vi z$hZmMT?HS=^ZZb}=v)ICFGvC%{1{_$cP$ifctX8Rq6%$6aK736&~7c41}ck&IJVD`{e+K2n8TfJtzMok7pNk{x@F5@I!po?*WLRhP_UQp z6!1YXTet074uy>%Gkc1*0`}l^*;*PE8Mo!@^}IKQjb|ozw{B}Tg$#bXKr(LkIG^-3 zP@J3NU5U0V8J;bT9<$jcpS-4?DS?=mg@FX@-wboi05dtKeK9;YqeinK0FKX)=>R57 z{`?iZx_{+F`*l#rhCqc+Ga}&pwFBPV7dx{JUA^5pG%8N!jo5hHThsm~2DFWenswB7 zE{0+)gampYyvqoHh=wz(_Rvt&h4@1RzU9t$O{iZ!kYS?Qu1W##{j6clEz74M)+hiM z!&LsXOK)>(uzPK8O@#PU9(hA74mdC^n2=cee%RP(4x3 z8Q)Vyhz*bLmrLO{IOfzQP=6=$pO(}4At5W8J{ zk$!ieZ_V5&FZA3X4N$A+M{CyHx8@)<7>t(S+?vB3z7vVb(a-+cQgYjy{{Ytipm~;V Rf>i(j002ovPDHLkV1gi&1783D literal 0 HcmV?d00001 diff --git a/graphics/pokemon/zoroark/hisuian/normal.pal b/graphics/pokemon/zoroark/hisuian/normal.pal new file mode 100644 index 0000000000..16e1aed003 --- /dev/null +++ b/graphics/pokemon/zoroark/hisuian/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +144 24 32 +96 88 96 +216 88 80 +248 248 248 +224 144 144 +16 16 16 +192 56 80 +144 136 144 +192 176 184 +56 56 56 +208 208 208 +88 64 88 +176 112 112 +184 192 184 +240 232 32 diff --git a/graphics/pokemon/zoroark/hisuian/shiny.pal b/graphics/pokemon/zoroark/hisuian/shiny.pal new file mode 100644 index 0000000000..5b3e2797a5 --- /dev/null +++ b/graphics/pokemon/zoroark/hisuian/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +96 48 120 +96 88 96 +176 112 208 +248 248 248 +208 144 224 +16 16 16 +144 80 168 +144 136 144 +192 176 184 +56 48 56 +208 208 208 +88 64 88 +176 104 184 +136 128 136 +240 232 32 diff --git a/graphics/pokemon/zorua/hisuian/back.png b/graphics/pokemon/zorua/hisuian/back.png new file mode 100644 index 0000000000000000000000000000000000000000..1268b09e0b0bf927b6ce2d4fd7e29c6cda8e744e GIT binary patch literal 772 zcmV+f1N;1mP)qhU|3-I`1lYI5WujwI50SffQVQ?SZH8qFnFl=s2JFI0Fa1~S593G0007y zNkl2bG`uIhWGyXPinUw;2n}E@6XTs`0ly0tp8nhrv<=m0&WX{oHmJwv=ISm zv582F4Z96+T1Ma&lmFg-+MrG8(*{Egc%JvJv5zRFZ>(pY@B5eDW59)X?yG7d02s`C zpD_lXe$$kYGF4+qTsBFBsvpyr>=6kRcfZ2hG zPM&6)b|x|H^}vZgIsh!4W<=M_0F0FY>d2&FELQ@66&=d{v=kVt=>)P6o&vyEr{50% zq~}Kt!C}THG3PwJJD6Z%B#Df#7ZMPnx?6!E#)KU6%`E_%jPrSAg$;om;_~zsnj6kn zuPYLW=)(XKN2$05iG=?gR#!UEX_XQp`=WuPc^!ana-6Nzj30lR0A-U4Ao%vvW>NDX zf4E%La{HP8nwNlEkgj|jMkLiY4P3L^U+>inX)@vbCSOdH_cibvW5Kt})_X;3{(qSsT6{&L!0B6qI-%Fqi#1i@@ROVju)QNjVh$AH^ z?NF~c5y2(9h7}=aD~GD zg$8032l1lXS1QIN(*WOD4=bE00Tv5Q%pU?sUI`<{uDN&&&;_SLhAycA)fa|%<`H+p^2K%=$cVt73xvm9#~t$W@wC>>6oC=*}ox-JO{?=*P@o0#%=;I znZm$M&CE1z0K?uklFPa5qTQYA?3nmCtg2>VlI6>*-MYQZ(owt4ie0p9%3!Y59o2s$Y`h&o;13W*Gd-2jhAf5nx{&f(7n0Rt6 zP8#S7bZ6tyOK^QT_B7zvUY#ceQtrZgFXKQ+?GWXdT;u?Ht-~4*T?k{&MtK0P zgY#a%gn!wNa{)qzUhm|oh%fa*Aa+V1;+`Jo6}bSSo*oqdgRgkCF4h2%gMY%JpP}xM g!o!PD{7LiU9|`#fY_4U Date: Mon, 18 Jul 2022 18:15:44 -0400 Subject: [PATCH 060/271] Comatose prevents Battle Pike's status effects. --- src/battle_pike.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/battle_pike.c b/src/battle_pike.c index 2f36dbc29f..5071350f35 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -813,6 +813,9 @@ static bool8 DoesAbilityPreventStatus(struct Pokemon *mon, u32 status) u16 ability = GetMonAbility(mon); bool8 ret = FALSE; + if (ability == ABILITY_COMATOSE) + return TRUE; + switch (status) { case STATUS1_FREEZE: From 9c73cb322e83deb528a58d58223b2a5d0ce9320e Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Wed, 20 Jul 2022 10:48:09 -0700 Subject: [PATCH 061/271] replaced bitfield with LUT --- src/data/items.h | 22 ++++++---------------- src/pokemon.c | 28 ++++++++-------------------- 2 files changed, 14 insertions(+), 36 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index af62f0abed..8d08f0fde8 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1354,17 +1354,12 @@ const struct Item gItems[] = // Candy -#define ONE_HUNDRED 1 << 4 -#define ONE_THOUSAND 1 << 5 -#define TEN_THOUSAND 1 << 6 -#define FULL_LEVEL 1 << 7 - [ITEM_RARE_CANDY] = { .name = _("Rare Candy"), .itemId = ITEM_RARE_CANDY, .price = 10000, - .holdEffectParam = FULL_LEVEL, + .holdEffectParam = 0xFF, .description = sRareCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1377,7 +1372,7 @@ const struct Item gItems[] = .name = _("Exp.Candy XS"), .itemId = ITEM_EXP_CANDY_XS, .price = 20, - .holdEffectParam = 1 | ONE_HUNDRED, + .holdEffectParam = 0, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1390,7 +1385,7 @@ const struct Item gItems[] = .name = _("Exp.Candy S"), .itemId = ITEM_EXP_CANDY_S, .price = 240, - .holdEffectParam = 8 | ONE_HUNDRED, + .holdEffectParam = 1, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1403,7 +1398,7 @@ const struct Item gItems[] = .name = _("Exp.Candy M"), .itemId = ITEM_EXP_CANDY_M, .price = 1000, - .holdEffectParam = 3 | ONE_THOUSAND, + .holdEffectParam = 2, .description = sExpCandyMDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1416,7 +1411,7 @@ const struct Item gItems[] = .name = _("Exp.Candy L"), .itemId = ITEM_EXP_CANDY_L, .price = 3000, - .holdEffectParam = 1 | TEN_THOUSAND, + .holdEffectParam = 3, .description = sExpCandyLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1429,7 +1424,7 @@ const struct Item gItems[] = .name = _("Exp.Candy XL"), .itemId = ITEM_EXP_CANDY_XL, .price = 10000, - .holdEffectParam = 3 | TEN_THOUSAND, + .holdEffectParam = 4, .description = sExpCandyXLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1449,11 +1444,6 @@ const struct Item gItems[] = .flingPower = 30, }, -#undef ONE_HUNDRED -#undef ONE_THOUSAND -#undef TEN_THOUSAND -#undef FULL_LEVEL - // Medicinal Flutes [ITEM_BLUE_FLUTE] = diff --git a/src/pokemon.c b/src/pokemon.c index 7cb72b37f6..9ebfcd1a57 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4708,10 +4708,9 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } \ } -#define ONE_HUNDRED 1 << 4 -#define ONE_THOUSAND 1 << 5 -#define TEN_THOUSAND 1 << 6 -#define FULL_LEVEL 1 << 7 +// EXP candies store an index for this table in their holdEffectParam. +#define NUM_EXP_CANDY_SIZES 5 +static const u32 sExpCandyExperienceTable[] = {100, 800, 3000, 10000, 30000}; // Returns TRUE if the item has no effect on the Pokémon, FALSE otherwise bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, bool8 usedByAI) @@ -4878,24 +4877,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov retVal = FALSE; } - // Rare Candy + // Rare Candy / EXP Candy if ((itemEffect[i] & ITEM3_LEVEL_UP) && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { - if (ItemId_GetHoldEffectParam(item) & FULL_LEVEL) + u8 param = ItemId_GetHoldEffectParam(item); + if (param == 0xFF) // Rare Candy { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; } - else + else if (param < NUM_EXP_CANDY_SIZES) // EXP Candies { - temp1 = ItemId_GetHoldEffectParam(item) & 0x0F; - if (ItemId_GetHoldEffectParam(item) & ONE_HUNDRED) - temp1 *= 100; - if (ItemId_GetHoldEffectParam(item) & ONE_THOUSAND) - temp1 *= 1000; - if (ItemId_GetHoldEffectParam(item) & TEN_THOUSAND) - temp1 *= 10000; - dataUnsigned = temp1 + GetMonData(mon, MON_DATA_EXP, NULL); + dataUnsigned = sExpCandyExperienceTable[param] + GetMonData(mon, MON_DATA_EXP, NULL); if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; } @@ -5298,11 +5291,6 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov return retVal; } -#undef ONE_HUNDRED -#undef ONE_THOUSAND -#undef TEN_THOUSAND -#undef FULL_LEVEL - bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId) { u32 status = GetMonData(mon, MON_DATA_STATUS, 0); From 9a0a759b3ffd484fb6b8acc2ada4ae43674dcb41 Mon Sep 17 00:00:00 2001 From: Ariel A <24759293+aarant@users.noreply.github.com> Date: Wed, 6 Jul 2022 22:34:01 -0400 Subject: [PATCH 062/271] Fixed multihit odds. --- src/battle_script_commands.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 15915c71a6..a6718babba 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10494,19 +10494,20 @@ static void Cmd_setmultihitcounter(void) } else if (B_MULTI_HIT_CHANCE >= GEN_5) { - // 2 and 3 hits: 33.3% - // 4 and 5 hits: 16.7% - gMultiHitCounter = Random() % 4; - if (gMultiHitCounter > 2) - { - gMultiHitCounter = (Random() % 3); - if (gMultiHitCounter < 2) - gMultiHitCounter = 2; - else - gMultiHitCounter = 3; - } + // Based on Gen 5's odds + // 35% for 2 hits + // 35% for 3 hits + // 15% for 4 hits + // 15% for 5 hits + gMultiHitCounter = Random() % 100; + if (gMultiHitCounter < 35) + gMultiHitCounter = 2; + else if (gMultiHitCounter < 35 + 35) + gMultiHitCounter = 3; + else if (gMultiHitCounter < 35 + 35 + 15) + gMultiHitCounter = 4; else - gMultiHitCounter += 3; + gMultiHitCounter = 5; } else { From b95e450cb6208132596be8e721c4b73a751456d4 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Thu, 11 Aug 2022 22:48:36 -0600 Subject: [PATCH 063/271] Added corner case logic for AI Switching. 1. Refactor Perish Song 2. Yawn 3. Secondary Damage (Leech Seed, Cursed etc). 4. Added Preliminary logic to help AI be smarter against semi-invulnerable Added AI logic regarding abilities that benefit from switching 1. Natural Cure 2. Regenerator --- include/battle_util.h | 1 + src/battle_ai_switch_items.c | 212 +++++++++++++++++++++++++++-------- 2 files changed, 168 insertions(+), 45 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index e45acdb893..25226c9976 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -105,6 +105,7 @@ bool8 HasNoMonsToSwitch(u8 battlerId, u8 r1, u8 r2); u8 TryWeatherFormChange(u8 battlerId); bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility); u8 AbilityBattleEffects(u8 caseID, u8 battlerId, u16 ability, u8 special, u16 moveArg); +bool32 IsNeutralizingGasOnField(void); u32 GetBattlerAbility(u8 battlerId); u32 IsAbilityOnSide(u32 battlerId, u32 ability); u32 IsAbilityOnOpposingSide(u32 battlerId, u32 ability); diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 034bb59e84..bc26f78cf9 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1,10 +1,13 @@ #include "global.h" #include "battle.h" +#include "constants/battle_ai.h" #include "battle_ai_main.h" #include "battle_ai_util.h" +#include "battle_util.h" #include "battle_anim.h" #include "battle_controllers.h" #include "battle_main.h" +#include "constants/hold_effects.h" #include "battle_setup.h" #include "data.h" #include "pokemon.h" @@ -19,6 +22,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng); static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent); static bool8 ShouldUseItem(void); +static bool32 AiExpectsToFaintPlayer(void); static bool32 AI_ShouldHeal(u32 healAmount); static bool32 AI_OpponentCanFaintAiWithMod(u32 healAmount); @@ -56,21 +60,6 @@ static bool8 ShouldSwitchIfAllBadMoves(void) } } -static bool8 ShouldSwitchIfPerishSong(void) -{ - if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG - && gDisableStructs[gActiveBattler].perishSongTimer == 0) - { - *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); - return TRUE; - } - else - { - return FALSE; - } -} - static bool8 ShouldSwitchIfWonderGuard(void) { u8 opposingPosition; @@ -228,44 +217,177 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) return FALSE; } -static bool8 ShouldSwitchIfNaturalCure(void) +static bool8 ShouldSwitchIfGameStatePrompt(void) { - if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)) - return FALSE; - if (AI_GetAbility(gActiveBattler) != ABILITY_NATURAL_CURE) - return FALSE; - if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2) - return FALSE; + bool8 switchMon = FALSE; + u16 monAbility = AI_GetAbility(gActiveBattler); + u16 holdEffect = AI_GetHoldEffect(gActiveBattler); + u8 opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler)); + u8 opposingBattler = GetBattlerAtPosition(opposingPosition); + s32 moduloChance = 4; //25% Chance Default + s32 chanceReducer = 1; //No Reduce default. Increase to reduce - if ((gLastLandedMoves[gActiveBattler] == MOVE_NONE - || gLastLandedMoves[gActiveBattler] == MOVE_UNAVAILABLE) - && Random() & 1) + + if (AnyStatIsRaised(gActiveBattler)) + chanceReducer = 5; // Reduce switchout probability by factor of 5 if setup + + //Perish Song + if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG + && gDisableStructs[gActiveBattler].perishSongTimer == 0 + && monAbility != ABILITY_SOUNDPROOF) + switchMon = TRUE; + + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING) + { + //Yawn + if (gStatuses3[gActiveBattler] & STATUS3_YAWN + && AI_CanSleep(gActiveBattler, monAbility) + && gBattleMons[gActiveBattler].hp > gBattleMons[gActiveBattler].maxHP / 3) + { + switchMon = TRUE; + + //ToDo: + //Double Battles + //Add logic checking to see if effected by yawn & ally wants to switch out to a pokemon that will set Misty or Electric Terrain + + //Check if Active Pokemon can KO opponent instead of switching + //Will still fall asleep, but take out opposing Pokemon first + if (AiExpectsToFaintPlayer()) + switchMon = FALSE; + + //Checks to see if active Pokemon can do something against sleep + if (monAbility == (ABILITY_NATURAL_CURE | ABILITY_SHED_SKIN | ABILITY_EARLY_BIRD) + || holdEffect == (HOLD_EFFECT_CURE_SLP | HOLD_EFFECT_CURE_STATUS) + || HasMove(gActiveBattler, MOVE_SLEEP_TALK) + || (HasMoveEffect(gActiveBattler, MOVE_SNORE) && AI_GetTypeEffectiveness(MOVE_SNORE, gActiveBattler, opposingBattler) >= UQ_4_12(1.0)) + || (IsBattlerGrounded(gActiveBattler) + && (HasMove(gActiveBattler, MOVE_MISTY_TERRAIN) || HasMove(gActiveBattler, MOVE_ELECTRIC_TERRAIN))) + ) + switchMon = FALSE; + + //Check if Active Pokemon evasion boosted and might be able to dodge until awake + if (gBattleMons[gActiveBattler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) + && AI_GetAbility(opposingBattler) != ABILITY_UNAWARE + && AI_GetAbility(opposingBattler) != ABILITY_KEEN_EYE + && !(gBattleMons[gActiveBattler].status2 & STATUS2_FORESIGHT) + && !(gStatuses3[gActiveBattler] & STATUS3_MIRACLE_EYED)) + switchMon = FALSE; + + } + + //Secondary Damage + if (monAbility != ABILITY_MAGIC_GUARD + && !AiExpectsToFaintPlayer()) + { + //Toxic + moduloChance = 2; //50% + if (gBattleMons[gActiveBattler].status1 & (STATUS1_TOXIC_COUNTER > 2) + && gBattleMons[gActiveBattler].hp >= (gBattleMons[gActiveBattler].maxHP / 3) + && (Random() % (moduloChance*chanceReducer)) == 0) + switchMon = TRUE; + + //Cursed + moduloChance = 2; //50% + if (gBattleMons[gActiveBattler].status2 & STATUS2_CURSED + && (Random() % (moduloChance*chanceReducer)) == 0) + switchMon = TRUE; + + //Nightmare + moduloChance = 3; //33.3% + if (gBattleMons[gActiveBattler].status1 & (STATUS1_SLEEP > 1) && gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE + && (Random() % (moduloChance*chanceReducer)) == 0) + switchMon = TRUE; + + //Leech Seed + moduloChance = 4; //25% + if (gStatuses3[gActiveBattler] & STATUS3_LEECHSEED + && (Random() % (moduloChance*chanceReducer)) == 0) + switchMon = TRUE; + } + + //Infatuation + if (gBattleMons[gActiveBattler].status2 & STATUS2_INFATUATION + && !AiExpectsToFaintPlayer()) + switchMon = TRUE; + + //Todo + //Pass Wish Heal + + //Semi-Invulnerable + if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) + if (FindMonThatAbsorbsOpponentsMove()) //If find absorber default to switch + switchMon = TRUE; + if (!AI_OpponentCanFaintAiWithMod(0) + && AnyStatIsRaised(gActiveBattler)) + switchMon = FALSE; + if (AiExpectsToFaintPlayer() + && GetAIChosenMove(gActiveBattler) == AI_IS_SLOWER + && !AI_OpponentCanFaintAiWithMod(0)) + switchMon = FALSE; + } + + + if (switchMon) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } - else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 - && Random() & 1) - { - *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); - return TRUE; + else + return FALSE; +} + +static bool8 ShouldSwitchIfAbilityBenefit(void) +{ + s32 monToSwitchId; + s32 moduloChance = 4; //25% Chance Default + s32 chanceReducer = 1; //No Reduce default. Increase to reduce + u8 battlerId = GetBattlerPosition(gActiveBattler); + + if (AnyStatIsRaised(battlerId)) + chanceReducer = 5; // Reduce switchout probability by factor of 5 if setup + + //Check if ability is blocked + if (gStatuses3[gActiveBattler] & STATUS3_GASTRO_ACID + ||IsNeutralizingGasOnField()) + return FALSE; + + switch(AI_GetAbility(gActiveBattler)) { + case ABILITY_NATURAL_CURE: + moduloChance = 4; //25% + //Attempt to cure bad ailment + if (gBattleMons[gActiveBattler].status1 & (STATUS1_SLEEP | STATUS1_FREEZE | STATUS1_TOXIC_POISON) + && GetMostSuitableMonToSwitchInto() != PARTY_SIZE) + break; + //Attempt to cure lesser ailment + if ((gBattleMons[gActiveBattler].status1 & STATUS1_ANY) + && (gBattleMons[gActiveBattler].hp >= gBattleMons[gActiveBattler].maxHP / 2) + && GetMostSuitableMonToSwitchInto() != PARTY_SIZE + && Random() % (moduloChance*chanceReducer) == 0) + break; + + return FALSE; + + case ABILITY_REGENERATOR: + moduloChance = 2; //50% + //Don't switch if ailment + if (gBattleMons[gActiveBattler].status1 & STATUS1_ANY) + return FALSE; + if ((gBattleMons[gActiveBattler].hp <= ((gBattleMons[gActiveBattler].maxHP * 2) / 3)) + && GetMostSuitableMonToSwitchInto() != PARTY_SIZE + && Random() % (moduloChance*chanceReducer) == 0) + break; + + return FALSE; + + default: + return FALSE; } - if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1)) - return TRUE; - if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1)) - return TRUE; + *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; + BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); - if (Random() & 1) - { - *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); - return TRUE; - } - - return FALSE; + return TRUE; } static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) @@ -489,13 +611,13 @@ bool32 ShouldSwitch(void) return FALSE; if (ShouldSwitchIfAllBadMoves()) return TRUE; - if (ShouldSwitchIfPerishSong()) + if (ShouldSwitchIfGameStatePrompt()) return TRUE; if (ShouldSwitchIfWonderGuard()) return TRUE; if (FindMonThatAbsorbsOpponentsMove()) return TRUE; - if (ShouldSwitchIfNaturalCure()) + if (ShouldSwitchIfAbilityBenefit()) return TRUE; if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) return FALSE; From a5e742afcd78d98cdc94f3d4526a993777314669 Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Fri, 12 Aug 2022 12:00:05 -0700 Subject: [PATCH 064/271] implemented review changes --- src/pokemon.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 854c4c2b29..ca519729d5 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4709,7 +4709,6 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } // EXP candies store an index for this table in their holdEffectParam. -#define NUM_EXP_CANDY_SIZES 5 static const u32 sExpCandyExperienceTable[] = {100, 800, 3000, 10000, 30000}; // Returns TRUE if the item has no effect on the Pokémon, FALSE otherwise @@ -4885,15 +4884,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (param == 0xFF) // Rare Candy { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; - SetMonData(mon, MON_DATA_EXP, &dataUnsigned); - CalculateMonStats(mon); } - else if (param < NUM_EXP_CANDY_SIZES) // EXP Candies + else if (param < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies { dataUnsigned = sExpCandyExperienceTable[param] + GetMonData(mon, MON_DATA_EXP, NULL); if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; } + SetMonData(mon, MON_DATA_EXP, &dataUnsigned); + CalculateMonStats(mon); retVal = FALSE; } From 7378d1099b3df6e39b25c819197f53f5c4e8fd55 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Fri, 12 Aug 2022 15:21:25 -0600 Subject: [PATCH 065/271] Removed AI_GetAbility Misc cleanup --- src/battle_ai_switch_items.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index bc26f78cf9..5b4b1a30b4 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1,6 +1,5 @@ #include "global.h" #include "battle.h" -#include "constants/battle_ai.h" #include "battle_ai_main.h" #include "battle_ai_util.h" #include "battle_util.h" @@ -169,7 +168,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) else return FALSE; - if (AI_GetAbility(gActiveBattler) == absorbingTypeAbility) + if (AI_DATA->abilities[gActiveBattler]) == absorbingTypeAbility) return FALSE; GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); @@ -220,8 +219,8 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) static bool8 ShouldSwitchIfGameStatePrompt(void) { bool8 switchMon = FALSE; - u16 monAbility = AI_GetAbility(gActiveBattler); - u16 holdEffect = AI_GetHoldEffect(gActiveBattler); + u16 monAbility = AI_DATA->abilities[gActiveBattler]; + u16 holdEffect = AI_DATA->holdEffects[gActiveBattler]; u8 opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler)); u8 opposingBattler = GetBattlerAtPosition(opposingPosition); s32 moduloChance = 4; //25% Chance Default @@ -267,8 +266,8 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) //Check if Active Pokemon evasion boosted and might be able to dodge until awake if (gBattleMons[gActiveBattler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) - && AI_GetAbility(opposingBattler) != ABILITY_UNAWARE - && AI_GetAbility(opposingBattler) != ABILITY_KEEN_EYE + && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE + && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE && !(gBattleMons[gActiveBattler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[gActiveBattler] & STATUS3_MIRACLE_EYED)) switchMon = FALSE; @@ -334,7 +333,9 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) return TRUE; } else + { return FALSE; + } } static bool8 ShouldSwitchIfAbilityBenefit(void) @@ -352,7 +353,7 @@ static bool8 ShouldSwitchIfAbilityBenefit(void) ||IsNeutralizingGasOnField()) return FALSE; - switch(AI_GetAbility(gActiveBattler)) { + switch(AI_DATA->abilities[gActiveBattler]) { case ABILITY_NATURAL_CURE: moduloChance = 4; //25% //Attempt to cure bad ailment From bb978764f373bc90c7bbf3d9155393e98cfcf191 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Sat, 13 Aug 2022 00:39:44 -0600 Subject: [PATCH 066/271] Fixed recommended changes Added additional double battle logic for yawn --- src/battle_ai_switch_items.c | 54 +++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 5b4b1a30b4..3b00340d27 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "constants/battle_ai.h" #include "battle_ai_main.h" #include "battle_ai_util.h" #include "battle_util.h" @@ -14,6 +15,7 @@ #include "util.h" #include "constants/abilities.h" #include "constants/item_effects.h" +#include "constants/battle_move_effects.h" #include "constants/items.h" #include "constants/moves.h" @@ -168,7 +170,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) else return FALSE; - if (AI_DATA->abilities[gActiveBattler]) == absorbingTypeAbility) + if (AI_DATA->abilities[gActiveBattler] == absorbingTypeAbility) return FALSE; GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); @@ -225,6 +227,10 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) u8 opposingBattler = GetBattlerAtPosition(opposingPosition); s32 moduloChance = 4; //25% Chance Default s32 chanceReducer = 1; //No Reduce default. Increase to reduce + s32 firstId; + s32 lastId; + s32 i; + struct Pokemon *party; if (AnyStatIsRaised(gActiveBattler)) @@ -245,10 +251,50 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) { switchMon = TRUE; - //ToDo: - //Double Battles - //Add logic checking to see if effected by yawn & ally wants to switch out to a pokemon that will set Misty or Electric Terrain + //Double Battles + //Check if partner can prevent sleep + if (IsDoubleBattle()) + { + if (IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)) + && (GetAIChosenMove(BATTLE_PARTNER(gActiveBattler)) & MOVE_UPROAR) + ) + switchMon = FALSE; + if (IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)) + && (gBattleMoves[AI_DATA->partnerMove].effect == EFFECT_MISTY_TERRAIN + || gBattleMoves[AI_DATA->partnerMove].effect == EFFECT_ELECTRIC_TERRAIN) + && IsBattlerGrounded(gActiveBattler) + ) + switchMon = FALSE; + + if (*(gBattleStruct->AI_monToSwitchIntoId + BATTLE_PARTNER(gActiveBattler)) != PARTY_SIZE) //Partner is switching + { + GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + party = gPlayerParty; + + for (i = firstId; i < lastId; i++) + { + //Look for mon in party that is able to be switched into and has ability that sets terrain + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && i != gBattlerPartyIndexes[gActiveBattler] + && i != gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)] + && IsBattlerGrounded(gActiveBattler) + && (GetMonData(&party[i], MON_DATA_ABILITY_NUM) == 226 + || GetMonData(&party[i], MON_DATA_ABILITY_NUM) == 228)) //Ally has Misty or Electric Surge + { + *(gBattleStruct->AI_monToSwitchIntoId + BATTLE_PARTNER(gActiveBattler)) = i; + BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); + switchMon = FALSE; + break; + } + } + } + } + //Check if Active Pokemon can KO opponent instead of switching //Will still fall asleep, but take out opposing Pokemon first if (AiExpectsToFaintPlayer()) From 2ec8f27811888cfb9968112c2dc130da2734400a Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 13:00:28 -0400 Subject: [PATCH 067/271] Add missing usage of SOUND_PAN_* --- src/battle_anim_effects_1.c | 10 +++++----- src/battle_anim_effects_2.c | 6 +++--- src/battle_anim_effects_3.c | 20 ++++++++++---------- src/battle_anim_electric.c | 2 +- src/battle_anim_psychic.c | 2 +- src/battle_anim_rock.c | 4 ++-- src/battle_anim_utility_funcs.c | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 0387d39291..0ae945c0c7 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -3184,14 +3184,14 @@ static void AnimItemSteal_Step3(struct Sprite *sprite) sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); if (sprite->y2 == 0) - PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); if (moveAlongLinearPath(sprite)) { sprite->y2 = 0; sprite->data[0] = 0; sprite->callback = AnimItemSteal_Step2; - PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); } } @@ -4264,7 +4264,7 @@ static void AnimLockOnTarget_Step1(struct Sprite *sprite) sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2); sprite->data[5] += 0x100; - PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); break; } @@ -4350,7 +4350,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite) sprite->data[2]++; pal = sprite->oam.paletteNum; LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); - PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); } else if (sprite->data[1] == 0) { @@ -4812,7 +4812,7 @@ static void AnimSharpenSphere(struct Sprite *sprite) sprite->data[2] = 0; sprite->data[3] = 0; sprite->data[4] = 0; - sprite->data[5] = BattleAnimAdjustPanning(-64); + sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); sprite->callback = AnimSharpenSphere_Step; } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 33065c0dd8..82f3b77d5a 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1642,7 +1642,7 @@ static void AirCutterProjectileStep1(u8 taskId) gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; gTasks[taskId].data[0] = gTasks[taskId].data[3]; gTasks[taskId].data[1]++; - PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-63)); + PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER + 1)); if (gTasks[taskId].data[1] > 2) gTasks[taskId].func = AirCutterProjectileStep2; } @@ -1839,7 +1839,7 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite) int i; u16 rand; s16 *ptr; - PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); sprite->x += sprite->x2; sprite->y += sprite->y2; sprite->y2 = 0; @@ -2485,7 +2485,7 @@ static void AnimPencil(struct Sprite *sprite) sprite->data[3] = 16; sprite->data[4] = 0; sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2; - sprite->data[6] = BattleAnimAdjustPanning(63); + sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); sprite->callback = AnimPencil_Step; } diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 6fca60369a..f613ff5979 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1646,7 +1646,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite) sprite->data[2]++; if (sprite->data[3] == 0) { - PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(-64)); + PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); } } } @@ -1930,7 +1930,7 @@ static void TormentAttacker_Step(u8 taskId) y = task->data[3] + task->data[5]; spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]); - PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); if (spriteId != MAX_SPRITES) { @@ -2411,7 +2411,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; - PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); break; case 1: if (gTasks[taskId].data[4]++ > 0) @@ -2446,7 +2446,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) { gTasks[taskId].data[3] = 0; gTasks[taskId].data[0] = 1; - PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); } break; case 4: @@ -4845,7 +4845,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) if (gSprites[spriteId].y2 == 0) { - PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); gTasks[taskId].data[10] -= 0x800; gTasks[taskId].data[0]++; } @@ -4867,7 +4867,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) if (gSprites[spriteId].y2 == 0) { - PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); DestroyAnimVisualTask(taskId); } break; @@ -4904,7 +4904,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) sprite->y2 += 10; if (sprite->y2 >= 0) { - PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); sprite->y2 = 0; sprite->data[0]++; } @@ -4914,7 +4914,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) sprite->y2 = -(gSineTable[sprite->data[1]] >> 3); if (sprite->data[1] > 0x7F) { - PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); sprite->data[1] = 0; sprite->y2 = 0; sprite->data[0]++; @@ -4933,7 +4933,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) case 3: if (++sprite->data[1] > 8) { - PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); sprite->data[1] = 0; sprite->data[0]++; } @@ -5227,7 +5227,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite) case 0: if (gBattleAnimArgs[7] == -1) { - PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16; sprite->data[0] = -32; sprite->data[7]++; diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index ce1c5b1994..6a92fd607d 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -1159,7 +1159,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) task->data[4] = 7; task->data[5] = -1; task->data[11] = 12; - task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76); + task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[14] = task->data[12]; task->data[15] = (task->data[13] - task->data[12]) / 3; diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index aebf76cc06..c68ec5d8a5 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -1137,7 +1137,7 @@ static void AnimPsychoBoost(struct Sprite *sprite) case 1: if (sprite->affineAnimEnded) { - PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); ChangeSpriteAffineAnim(sprite, 1); sprite->data[0]++; } diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index e2ea43fb67..287a332b56 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -596,8 +596,8 @@ void AnimTask_Rollout(u8 taskId) task->data[6] = 0; task->data[7] = 0; - pan1 = BattleAnimAdjustPanning(-64); - pan2 = BattleAnimAdjustPanning(63); + pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[13] = pan1; task->data[14] = (pan2 - pan1) / task->data[8]; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 688a6e5aea..4071ce9b98 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -535,9 +535,9 @@ static void StatsChangeAnimation_Step2(u8 taskId) gTasks[taskId].func = StatsChangeAnimation_Step3; if (sAnimStatsChangeData->data[0] == 0) - PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64)); + PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER)); else - PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64)); + PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER)); } static void StatsChangeAnimation_Step3(u8 taskId) From a4b53126f639439a0901d94fbdedd8c4a9dfd5cd Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Wed, 17 Aug 2022 18:23:12 -0600 Subject: [PATCH 068/271] Added AI_FLAG_ACE_POKEMON When this flag is set, the trainer will have an "Ace" pokemon that will always be sent out last. If this flag is set, the last Pokemon in the party will be considered the "Ace" Pokemon. This is similar to the gym leader functionality found in Sword & Shield. --- include/constants/battle_ai.h | 1 + src/battle_ai_switch_items.c | 24 ++++++++++++++++++++++-- src/battle_controller_opponent.c | 30 ++++++++++++++++++++++++++++-- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index d48827683a..a7a3e54183 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -56,6 +56,7 @@ #define AI_FLAG_STALL (1 << 13) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished #define AI_FLAG_SCREENER (1 << 14) // AI prefers screening effects like reflect, mist, etc. TODO unfinished #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks +#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon -- Saves until last // 'other' ai logic flags #define AI_FLAG_ROAMING (1 << 29) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 3b00340d27..329d3ebf35 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -199,6 +199,10 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1)) + continue; + species = GetMonData(&party[i], MON_DATA_SPECIES); if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) @@ -276,6 +280,10 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) for (i = firstId; i < lastId; i++) { + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1)) + break; + //Look for mon in party that is able to be switched into and has ability that sets terrain if (GetMonData(&party[i], MON_DATA_HP) != 0 && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE @@ -562,6 +570,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1)) + continue; + species = GetMonData(&party[i], MON_DATA_SPECIES); if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) @@ -650,6 +662,9 @@ bool32 ShouldSwitch(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1)) + continue; availableToSwitch++; } @@ -712,7 +727,7 @@ void AI_TrySwitchOrUseItem(void) GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); - for (monToSwitchId = firstId; monToSwitchId < lastId; monToSwitchId++) + for (monToSwitchId = (lastId-1); monToSwitchId >= firstId; monToSwitchId--) { if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0) continue; @@ -724,6 +739,9 @@ void AI_TrySwitchOrUseItem(void) continue; if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && monToSwitchId == (CalculateEnemyPartyCount()-1)) + continue; break; } @@ -921,7 +939,9 @@ u8 GetMostSuitableMonToSwitchInto(void) || gBattlerPartyIndexes[battlerIn2] == i || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) - || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler))) // While not really invalid per say, not really wise to switch into this mon. + || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler)) // While not really invalid per say, not really wise to switch into this mon. + || (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1))) //Save Ace Pokemon for last invalidMons |= gBitTable[i]; else aliveCount++; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 501e31704c..ddc4c44052 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_ai_main.h" #include "battle_ai_util.h" +#include "constants/battle_ai.h" #include "battle_anim.h" #include "battle_arena.h" #include "battle_controllers.h" @@ -94,6 +95,7 @@ static void OpponentHandleResetActionMoveSelection(void); static void OpponentHandleEndLinkBattle(void); static void OpponentHandleDebugMenu(void); static void OpponentCmdEnd(void); +static u8 CountAIAliveNonEggMonsExcept(u8 slotToIgnore); static void OpponentBufferRunCommand(void); static void OpponentBufferExecCompleted(void); @@ -1670,6 +1672,7 @@ static void OpponentHandleChooseItem(void) static void OpponentHandleChoosePokemon(void) { s32 chosenMonId; + s32 pokemonInBattle = 1; if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == PARTY_SIZE) { @@ -1687,15 +1690,20 @@ static void OpponentHandleChoosePokemon(void) { battler1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + pokemonInBattle = 2; + } GetAIPartyIndexes(gActiveBattler, &firstId, &lastId); - for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++) + for (chosenMonId = (lastId-1); chosenMonId >= firstId; chosenMonId--) { if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 && chosenMonId != gBattlerPartyIndexes[battler1] - && chosenMonId != gBattlerPartyIndexes[battler2]) + && chosenMonId != gBattlerPartyIndexes[battler2] + && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && (!(chosenMonId == (CalculateEnemyPartyCount()-1)) + || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle))) { break; } @@ -1714,6 +1722,24 @@ static void OpponentHandleChoosePokemon(void) OpponentBufferExecCompleted(); } +static u8 CountAIAliveNonEggMonsExcept(u8 slotToIgnore) +{ + u16 i, count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (i != slotToIgnore + && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG) + && GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0) + { + count++; + } + } + + return count; +} + static void OpponentHandleCmd23(void) { OpponentBufferExecCompleted(); From 59f89bde9e8ced4c8240bdaded3b938ee1454def Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 18 Aug 2022 14:23:45 -0400 Subject: [PATCH 069/271] Misc cleanup --- gflib/sprite.c | 2 +- include/battle.h | 2 +- src/battle_controller_link_opponent.c | 21 +++++++++------------ src/battle_controller_opponent.c | 6 +++--- src/battle_controller_recorded_opponent.c | 6 +++--- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/gflib/sprite.c b/gflib/sprite.c index 9fc597cc3b..cbcd6fb7c0 100644 --- a/gflib/sprite.c +++ b/gflib/sprite.c @@ -103,7 +103,7 @@ typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *); #define DUMMY_OAM_DATA \ { \ .y = DISPLAY_HEIGHT, \ - .affineMode = 0, \ + .affineMode = ST_OAM_AFFINE_OFF, \ .objMode = 0, \ .mosaic = FALSE, \ .bpp = 0, \ diff --git a/include/battle.h b/include/battle.h index 0b349e4b69..38c4cd779d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -551,7 +551,7 @@ struct BattleHealthboxInfo u8 specialAnimActive:1; // x40 u8 triedShinyMonAnim:1; u8 finishedShinyMonAnim:1; - u8 field_1_x1E:4; + u8 opponentDrawPartyStatusSummaryDelay:4; u8 bgmRestored:1; u8 waitForCry:1; u8 healthboxSlideInStarted:1; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index a0756b8cb5..a9629f6622 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -368,16 +368,13 @@ static void TryShinyAnimAfterMonAnim(void) { TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } - else + else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim) { - if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim) - { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); - FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); - LinkOpponentBufferExecCompleted(); - } + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; + FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); + FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); + LinkOpponentBufferExecCompleted(); } } } @@ -1758,14 +1755,14 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void) if (gBattleBufferA[gActiveBattler][2] != 0) { - if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2) + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2) { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay++; return; } else { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0; } } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index cf155dc764..641cbd0ace 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1929,14 +1929,14 @@ static void OpponentHandleDrawPartyStatusSummary(void) if (gBattleBufferA[gActiveBattler][2] != 0) { - if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2) + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2) { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay++; return; } else { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0; } } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index ebfdbc909c..49538b834e 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -1698,14 +1698,14 @@ static void RecordedOpponentHandleDrawPartyStatusSummary(void) if (gBattleBufferA[gActiveBattler][2] != 0) { - if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2) + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay < 2) { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay++; return; } else { - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].opponentDrawPartyStatusSummaryDelay = 0; } } From 3bc2cf921c79530862c8c4b2fff0ce7a5bfef4c9 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 8 Aug 2022 10:06:30 -0400 Subject: [PATCH 070/271] Sync src/battle_controllers.c with pokefirered --- include/battle.h | 2 +- include/battle_controllers.h | 14 ---------- include/battle_message.h | 2 +- src/battle_controllers.c | 54 ++++++++++++++++++++++-------------- src/battle_message.c | 4 +-- 5 files changed, 37 insertions(+), 39 deletions(-) diff --git a/include/battle.h b/include/battle.h index 38c4cd779d..0eaa60f30f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -368,7 +368,7 @@ struct BattleStruct u8 faintedActionsState; u8 faintedActionsBattlerId; u16 expValue; - u8 field_52; + u8 scriptPartyIdx; // for printing the nickname u8 sentInPokes; bool8 selectionScriptFinished[MAX_BATTLERS_COUNT]; u8 battlerPartyIndexes[MAX_BATTLERS_COUNT]; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index f6ac07b913..064c080f61 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -202,9 +202,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data); // emitters void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck); -void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data); -void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused void BtlController_EmitLoadMonSprite(u8 bufferId); void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim); @@ -212,10 +210,7 @@ void BtlController_EmitDrawTrainerPic(u8 bufferId); void BtlController_EmitTrainerSlide(u8 bufferId); void BtlController_EmitTrainerSlideBack(u8 bufferId); void BtlController_EmitFaintAnimation(u8 bufferId); -void BtlController_EmitPaletteFade(u8 bufferId); // unused -void BtlController_EmitSuccessBallThrowAnim(u8 bufferId); // unused void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId); -void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); void BtlController_EmitPrintString(u8 bufferId, u16 stringId); void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId); @@ -224,24 +219,15 @@ void BtlController_EmitYesNoBox(u8 bufferId); void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); void BtlController_EmitChooseItem(u8 bufferId, u8 *battlePartyOrder); void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data); -void BtlController_EmitCmd23(u8 bufferId); // unused void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2); void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status); -void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); -void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused -void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data); // unused -void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data); // unused void BtlController_EmitTwoReturnValues(u8 bufferId, u8 ret8, u16 ret16); void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 partyId, u8 *battlePartyOrder); void BtlController_EmitOneReturnValue(u8 bufferId, u16 ret); void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret); -void BtlController_EmitClearUnkVar(u8 bufferId); // unused -void BtlController_EmitSetUnkVar(u8 bufferId, u8 b); // unused -void BtlController_EmitClearUnkFlag(u8 bufferId); // unused -void BtlController_EmitToggleUnkFlag(u8 bufferId); // unused void BtlController_EmitHitAnimation(u8 bufferId); void BtlController_EmitCantSwitch(u8 bufferId); void BtlController_EmitPlaySE(u8 bufferId, u16 songId); diff --git a/include/battle_message.h b/include/battle_message.h index cc18a13d22..ed642fb6ec 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -202,7 +202,7 @@ struct BattleMsgData u16 lastItem; u8 lastAbility; u8 scrActive; - u8 unk1605E; + u8 bakScriptPartyIdx; u8 hpScale; u8 itemEffectBattler; u8 moveType; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 42bdba8998..20681b27ce 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -8,7 +8,6 @@ #include "link.h" #include "link_rfu.h" #include "party_menu.h" -#include "pokemon.h" #include "recorded_battle.h" #include "task.h" #include "util.h" @@ -595,7 +594,7 @@ static void SetBattlePartyIds(void) if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0) + && !GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG)) { gBattlerPartyIndexes[i] = j; break; @@ -606,7 +605,7 @@ static void SetBattlePartyIds(void) if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0) + && !GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG)) { gBattlerPartyIndexes[i] = j; break; @@ -620,7 +619,7 @@ static void SetBattlePartyIds(void) if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0 && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2. && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0 + && !GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) && gBattlerPartyIndexes[i - 2] != j) { gBattlerPartyIndexes[i] = j; @@ -632,7 +631,7 @@ static void SetBattlePartyIds(void) if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0 && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG - && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0 + && !GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) && gBattlerPartyIndexes[i - 2] != j) { gBattlerPartyIndexes[i] = j; @@ -913,7 +912,8 @@ void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) +// Unused +static void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes) { sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA; sBattleBuffersTransferData[1] = monId; @@ -934,7 +934,8 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes); } -void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) +// Unused +static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data) { s32 i; @@ -1007,7 +1008,8 @@ void BtlController_EmitFaintAnimation(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitPaletteFade(u8 bufferId) +// Unused +static void BtlController_EmitPaletteFade(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE; sBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE; @@ -1016,7 +1018,8 @@ void BtlController_EmitPaletteFade(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitSuccessBallThrowAnim(u8 bufferId) +// Unused +static void BtlController_EmitSuccessBallThrowAnim(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM; sBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM; @@ -1032,7 +1035,8 @@ void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); } -void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) +// Unused +static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) { s32 i; @@ -1089,7 +1093,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID) stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.battler; - stringInfo->unk1605E = gBattleStruct->field_52; + stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx; stringInfo->hpScale = gBattleStruct->hpScale; stringInfo->itemEffectBattler = gPotentialItemEffectBattler; stringInfo->moveType = gBattleMoves[gCurrentMove].type; @@ -1121,7 +1125,7 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID) stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.battler; - stringInfo->unk1605E = gBattleStruct->field_52; + stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx; for (i = 0; i < MAX_BATTLERS_COUNT; i++) stringInfo->abilities[i] = gBattleMons[i].ability; @@ -1191,7 +1195,8 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abili PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written. } -void BtlController_EmitCmd23(u8 bufferId) +// Unused +static void BtlController_EmitCmd23(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_23; sBattleBuffersTransferData[1] = CONTROLLER_23; @@ -1245,7 +1250,8 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6); } -void BtlController_EmitStatusXor(u8 bufferId, u8 b) +// Unused +static void BtlController_EmitStatusXor(u8 bufferId, u8 b) { sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR; sBattleBuffersTransferData[1] = b; @@ -1265,7 +1271,8 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4); } -void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data) +// Unused +static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data) { s32 i; @@ -1282,7 +1289,7 @@ void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data } // Unused -void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data) +static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data) { s32 i; @@ -1297,7 +1304,8 @@ void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3); } -void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) +// Unused +static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) { s32 i; @@ -1347,7 +1355,8 @@ void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 ret) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitClearUnkVar(u8 bufferId) +// Unused +static void BtlController_EmitClearUnkVar(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKVAR; sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKVAR; @@ -1356,14 +1365,16 @@ void BtlController_EmitClearUnkVar(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitSetUnkVar(u8 bufferId, u8 b) +// Unused +static void BtlController_EmitSetUnkVar(u8 bufferId, u8 b) { sBattleBuffersTransferData[0] = CONTROLLER_SETUNKVAR; sBattleBuffersTransferData[1] = b; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); } -void BtlController_EmitClearUnkFlag(u8 bufferId) +// Unused +static void BtlController_EmitClearUnkFlag(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKFLAG; sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKFLAG; @@ -1372,7 +1383,8 @@ void BtlController_EmitClearUnkFlag(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitToggleUnkFlag(u8 bufferId) +// Unused +static void BtlController_EmitToggleUnkFlag(u8 bufferId) { sBattleBuffersTransferData[0] = CONTROLLER_TOGGLEUNKFLAG; sBattleBuffersTransferData[1] = CONTROLLER_TOGGLEUNKFLAG; diff --git a/src/battle_message.c b/src/battle_message.c index 677bb2fe38..99325e9e80 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2063,7 +2063,7 @@ void BufferStringBattle(u16 stringID) gLastUsedItem = gBattleMsgDataPtr->lastItem; gLastUsedAbility = gBattleMsgDataPtr->lastAbility; gBattleScripting.battler = gBattleMsgDataPtr->scrActive; - *(&gBattleStruct->field_52) = gBattleMsgDataPtr->unk1605E; + *(&gBattleStruct->scriptPartyIdx) = gBattleMsgDataPtr->bakScriptPartyIdx; *(&gBattleStruct->hpScale) = gBattleMsgDataPtr->hpScale; gPotentialItemEffectBattler = gBattleMsgDataPtr->itemEffectBattler; *(&gBattleStruct->stringMoveType) = gBattleMsgDataPtr->moveType; @@ -2713,7 +2713,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) } break; case B_TXT_26: // ? - HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->field_52)) + HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->scriptPartyIdx)) break; case B_TXT_PC_CREATOR_NAME: // lanette pc if (FlagGet(FLAG_SYS_PC_LANETTE)) From 00a827b3fb2d96c27902fc3a2581f47e86dd6352 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 19 Aug 2022 17:47:34 +0700 Subject: [PATCH 071/271] Add PLA pokemon to Form Species Table, add Kleavor's graphics --- graphics/pokemon/kleavor/back.png | Bin 0 -> 763 bytes graphics/pokemon/kleavor/front.png | Bin 0 -> 967 bytes graphics/pokemon/kleavor/normal.pal | 19 +++ graphics/pokemon/kleavor/shiny.pal | 19 +++ include/graphics.h | 8 +- src/data/graphics/pokemon.h | 8 +- .../pokemon/form_species_table_pointers.h | 46 ++++++- src/data/pokemon/form_species_tables.h | 115 ++++++++++++++++++ .../pokemon_graphics/back_pic_coordinates.h | 4 +- src/data/pokemon_graphics/back_pic_table.h | 2 +- .../pokemon_graphics/front_pic_coordinates.h | 2 +- src/data/pokemon_graphics/front_pic_table.h | 2 +- src/data/pokemon_graphics/palette_table.h | 2 +- .../pokemon_graphics/shiny_palette_table.h | 2 +- 14 files changed, 211 insertions(+), 18 deletions(-) create mode 100644 graphics/pokemon/kleavor/back.png create mode 100644 graphics/pokemon/kleavor/front.png create mode 100644 graphics/pokemon/kleavor/normal.pal create mode 100644 graphics/pokemon/kleavor/shiny.pal diff --git a/graphics/pokemon/kleavor/back.png b/graphics/pokemon/kleavor/back.png new file mode 100644 index 0000000000000000000000000000000000000000..4300b2afbc5e2b46fe85cb774f694c6b484397ef GIT binary patch literal 763 zcmV+P%x0FX!!W}$jGQ@fH>H=Xt;nlh)@^+0000000000%Jhq^0007p zNkll&H6bEp_iJgZ}sj|gKBj{#hI-q2T;kvh_j^wdaSjy@Q*SQNGTM(9R z?#h~lW9Zt#hw3|Q;)6(Lta@Uwbw9uNfA(Qn|KTFdb09be_+2&V4_}`HthxkNs4meT zR`(#BvT6V=RvE$rdJX`q?9p>zSPAOMnGp4_&KV$_>N)Eo0qRr&;lSw^uV0-2_Y@>o zCP-ca@vXS3HS05xgc`tc-=YL@njInDgh<)fU!OTZU6%I0nED?Py^cpehK8f&jW@bfR|^NEDRuj;0SHt7qlF+MoqBb zJZMXL@u_L-p8y`n&++uR0PdSW0=CDuS^|Oq2IW2m1c{&Sy)i@%!Z6?G!KIYhLkR}H z?y=k|^%Us@Is+~PcpBioQk%%rCHSRWMkOE!;H^^I%~ov|`Ua$o%8+?VTWys7{a)mW zA|vD&U<7c3yK1YRzWCtl2-(yCBaAt^-R;zN{nI7B2FpQNV(h!vWki(PtyeB~q&RO# zo=Y_3(zQGa2v)wkk3_>Tum16bghq3(@Zukzyqwg)4NWDmt_kovKab-VlXs{lUe tk6n}?kp`Aa)OuF{pFp4=G6wml>o1mM9tC-#FYy2X002ovPDHLkV1inUShD~C literal 0 HcmV?d00001 diff --git a/graphics/pokemon/kleavor/front.png b/graphics/pokemon/kleavor/front.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2341c2a7cf9b67c5d73afa1a72c844f790c38c GIT binary patch literal 967 zcmV;&133JNP)SU^C4P$=NQfcW_M$jGR`h*0q0xX8GWppa+)0000000000^psV|000A0 zNklF4+A^53Y@m0OpV`h*R2y({LnSet-MgBF&@4tO0vdxm;66g< zz>xp~UJkbz*@_N@I}|8xh?5U>k5Vk#k&p~UIS7>AkMIAZ2&oq%k1WUgQNSHOEVp>{ zunLQdpA8U4^rnPiHtbfA5i3+F0}SO|E8ukAoG1nm6Z>O3(90x?fP2I~?~qOl5URNV z9-@Wwfi-9g;`KZN(VflyJ_ptgI3QT8RPMk4THJ63z&}nxrIZ69_nU+T{LjB8;;B+D z2ghv!c62f;wD_f9Afh%vUMiJci0~iaob{S%w`8Hz9R2LS5YSg|8-RmA>Hxs-%w>I* zb{iU=sWiC&5s&8)hLXk&ADB$?-`(NM0)q&%rUpV!W&r%xFUsMfU*ydwd>7>~Ddr%; zqPS%D>qS|Y!@wD>TVP-mgczEg6-kbXN|qy)nkqVrjzH`faNr~zRX z0#vD+&)TfjSDB?1z+=1>wt&p;fSa|}Y2_t`Sp#Ezy8fD&V*IwwjSZ(VQ3DgbTwhNR zSkPO&2ORH!&Gf}?-SDwZ9v`DV7&z5-Ci(Q4Pl zC9qxSW?ZV+?0}=I{h2xzoxsR8-|KIu`v9S(nAl5Qt2n)$lE$*t4v?w^kSco&INK@1 z#%x-61n7S_0Mx5{a`rqb>T#y(b;b|n7KEUK8pwDChj$PiI(&DrQO$L9@0Z{m`+ILA p2)p-x#Ps0h_!W8hCrP(K{12(p3smPTd3^u?002ovPDHLkV1f=Ry@mh) literal 0 HcmV?d00001 diff --git a/graphics/pokemon/kleavor/normal.pal b/graphics/pokemon/kleavor/normal.pal new file mode 100644 index 0000000000..fd47f8a2d2 --- /dev/null +++ b/graphics/pokemon/kleavor/normal.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +48 32 32 +144 112 112 +16 16 16 +88 64 64 +128 80 40 +224 192 128 +248 248 248 +200 200 168 +192 136 80 +240 224 184 +200 184 144 +160 144 104 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/pokemon/kleavor/shiny.pal b/graphics/pokemon/kleavor/shiny.pal new file mode 100644 index 0000000000..5634b4c703 --- /dev/null +++ b/graphics/pokemon/kleavor/shiny.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +152 208 160 +32 32 32 +104 104 104 +16 16 16 +56 56 56 +72 80 48 +144 168 104 +248 248 248 +200 200 168 +104 128 56 +216 184 104 +184 128 56 +136 80 24 +0 0 0 +0 0 0 +0 0 0 diff --git a/include/graphics.h b/include/graphics.h index a296d309c1..1c06c53a5e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -950,7 +950,7 @@ extern const u32 gMonFrontPic_Glastrier[]; extern const u32 gMonFrontPic_Spectrier[]; extern const u32 gMonFrontPic_Calyrex[]; //extern const u32 gMonFrontPic_Wyrdeer[]; -//extern const u32 gMonFrontPic_Kleavor[]; +extern const u32 gMonFrontPic_Kleavor[]; extern const u32 gMonFrontPic_Ursaluna[]; //extern const u32 gMonFrontPic_Basculegion[]; //extern const u32 gMonFrontPic_BasculegionF[]; @@ -2130,7 +2130,7 @@ extern const u32 gMonBackPic_Glastrier[]; extern const u32 gMonBackPic_Spectrier[]; extern const u32 gMonBackPic_Calyrex[]; //extern const u32 gMonBackPic_Wyrdeer[]; -//extern const u32 gMonBackPic_Kleavor[]; +extern const u32 gMonBackPic_Kleavor[]; extern const u32 gMonBackPic_Ursaluna[]; //extern const u32 gMonBackPic_Basculegion[]; //extern const u32 gMonBackPic_BasculegionF[]; @@ -3302,7 +3302,7 @@ extern const u32 gMonPalette_Glastrier[]; extern const u32 gMonPalette_Spectrier[]; extern const u32 gMonPalette_Calyrex[]; //extern const u32 gMonPalette_Wyrdeer[]; -//extern const u32 gMonPalette_Kleavor[]; +extern const u32 gMonPalette_Kleavor[]; extern const u32 gMonPalette_Ursaluna[]; //extern const u32 gMonPalette_Basculegion[]; //extern const u32 gMonPalette_BasculegionF[]; @@ -4502,7 +4502,7 @@ extern const u32 gMonShinyPalette_Glastrier[]; extern const u32 gMonShinyPalette_Spectrier[]; extern const u32 gMonShinyPalette_Calyrex[]; //extern const u32 gMonShinyPalette_Wyrdeer[]; -//extern const u32 gMonShinyPalette_Kleavor[]; +extern const u32 gMonShinyPalette_Kleavor[]; extern const u32 gMonShinyPalette_Ursaluna[]; //extern const u32 gMonShinyPalette_Basculegion[]; //extern const u32 gMonShinyPalette_BasculegionF[]; diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index f9c634139e..1c41b1331f 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -913,7 +913,7 @@ const u32 gMonFrontPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/fron const u32 gMonFrontPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/front.4bpp.lz"); const u32 gMonFrontPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/front.4bpp.lz"); //const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); -//const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); +const u32 gMonFrontPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/front.4bpp.lz"); const u32 gMonFrontPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/front.4bpp.lz"); //const u32 gMonFrontPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/front.4bpp.lz"); //const u32 gMonFrontPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/frontf.4bpp.lz"); @@ -2093,7 +2093,7 @@ const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back. const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); //const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); -//const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); +const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); //const u32 gMonBackPic_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); //const u32 gMonBackPic_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/backf.4bpp.lz"); @@ -3265,7 +3265,7 @@ const u32 gMonPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/norma const u32 gMonPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/normal.gbapal.lz"); const u32 gMonPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/normal.gbapal.lz"); //const u32 gMonPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/normal.gbapal.lz"); -//const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); +const u32 gMonPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/normal.gbapal.lz"); const u32 gMonPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/normal.gbapal.lz"); //const u32 gMonPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/normal.gbapal.lz"); //const u32 gMonPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/normalf.gbapal.lz"); @@ -4464,7 +4464,7 @@ const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/ const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); //const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); -//const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); +const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); //const u32 gMonShinyPalette_Basculegion[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); //const u32 gMonShinyPalette_BasculegionF[] = INCBIN_U32("graphics/pokemon/basculegion/shinyf.gbapal.lz"); diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 7c7c56b0e3..0895fe59ea 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -18,6 +18,8 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_MEOWTH] = sMeowthFormSpeciesIdTable, [SPECIES_PERSIAN] = sPersianFormSpeciesIdTable, [SPECIES_ALAKAZAM] = sAlakazamFormSpeciesIdTable, + [SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable, + [SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable, [SPECIES_GEODUDE] = sGeodudeFormSpeciesIdTable, [SPECIES_GRAVELER] = sGravelerFormSpeciesIdTable, [SPECIES_GOLEM] = sGolemFormSpeciesIdTable, @@ -29,7 +31,9 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_GRIMER] = sGrimerFormSpeciesIdTable, [SPECIES_MUK] = sMukFormSpeciesIdTable, [SPECIES_GENGAR] = sGengarFormSpeciesIdTable, - [SPECIES_EXEGGUTOR] = sExeggutorFormSpeciesIdTable, + [SPECIES_VOLTORB] = sExeggutorFormSpeciesIdTable, + [SPECIES_ELECTRODE] = sVoltorbFormSpeciesIdTable, + [SPECIES_EXEGGUTOR] = sElectrodeFormSpeciesIdTable, [SPECIES_MAROWAK] = sMarowakFormSpeciesIdTable, [SPECIES_WEEZING] = sWeezingFormSpeciesIdTable, [SPECIES_KANGASKHAN] = sKangaskhanFormSpeciesIdTable, @@ -41,9 +45,12 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ZAPDOS] = sZapdosFormSpeciesIdTable, [SPECIES_MOLTRES] = sMoltresFormSpeciesIdTable, [SPECIES_MEWTWO] = sMewtwoFormSpeciesIdTable, + [SPECIES_TYPHLOSION] = sTyphlosionFormSpeciesIdTable, [SPECIES_PICHU] = sPichuFormSpeciesIdTable, [SPECIES_AMPHAROS] = sAmpharosFormSpeciesIdTable, [SPECIES_SLOWKING] = sSlowkingFormSpeciesIdTable, + [SPECIES_QWILFISH] = sQwilfishFormSpeciesIdTable, + [SPECIES_SNEASEL] = sSneaselFormSpeciesIdTable, [SPECIES_UNOWN] = sUnownFormSpeciesIdTable, [SPECIES_STEELIX] = sSteelixFormSpeciesIdTable, [SPECIES_SCIZOR] = sScizorFormSpeciesIdTable, @@ -88,17 +95,24 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ABOMASNOW] = sAbomasnowFormSpeciesIdTable, [SPECIES_GALLADE] = sGalladeFormSpeciesIdTable, [SPECIES_ROTOM] = sRotomFormSpeciesIdTable, + [SPECIES_DIALGA] = sDialgaFormSpeciesIdTable, + [SPECIES_PALKIA] = sPalkiaFormSpeciesIdTable, [SPECIES_GIRATINA] = sGiratinaFormSpeciesIdTable, + [SPECIES_SAMUROTT] = sSamurottFormSpeciesIdTable, [SPECIES_SHAYMIN] = sShayminFormSpeciesIdTable, [SPECIES_ARCEUS] = sArceusFormSpeciesIdTable, [SPECIES_AUDINO] = sAudinoFormSpeciesIdTable, [SPECIES_BASCULIN] = sBasculinFormSpeciesIdTable, + [SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable, [SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable, [SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable, - [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, + [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, + [SPECIES_ZORUA] = sZoruaFormSpeciesIdTable, + [SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable, [SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable, [SPECIES_SAWSBUCK] = sSawsbuckFormSpeciesIdTable, [SPECIES_STUNFISK] = sStunfiskFormSpeciesIdTable, + [SPECIES_BRAVIARY] = sBraviaryFormSpeciesIdTable, [SPECIES_TORNADUS] = sTornadusFormSpeciesIdTable, [SPECIES_THUNDURUS] = sThundurusFormSpeciesIdTable, [SPECIES_LANDORUS] = sLandorusFormSpeciesIdTable, @@ -114,12 +128,16 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_FURFROU] = sFurfrouFormSpeciesIdTable, [SPECIES_MEOWSTIC] = sMeowsticFormSpeciesIdTable, [SPECIES_AEGISLASH] = sAegislashFormSpeciesIdTable, + [SPECIES_SLIGGOO] = sSliggooFormSpeciesIdTable, + [SPECIES_GOODRA] = sGoodraFormSpeciesIdTable, [SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable, [SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable, + [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, [SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable, [SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable, [SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable, [SPECIES_HOOPA] = sHoopaFormSpeciesIdTable, + [SPECIES_DECIDUEYE] = sDecidueyeFormSpeciesIdTable, [SPECIES_ORICORIO] = sOricorioFormSpeciesIdTable, [SPECIES_ROCKRUFF] = sRockruffFormSpeciesIdTable, [SPECIES_LYCANROC] = sLycanrocFormSpeciesIdTable, @@ -143,6 +161,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_URSHIFU] = sUrshifuFormSpeciesIdTable, [SPECIES_ZARUDE] = sZarudeFormSpeciesIdTable, [SPECIES_CALYREX] = sCalyrexFormSpeciesIdTable, + [SPECIES_ENAMORUS] = sEnamorusFormSpeciesIdTable, // Megas [SPECIES_VENUSAUR_MEGA] = sVenusaurFormSpeciesIdTable, [SPECIES_CHARIZARD_MEGA_X] = sCharizardFormSpeciesIdTable, @@ -234,6 +253,23 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanFormSpeciesIdTable, [SPECIES_YAMASK_GALARIAN] = sYamaskFormSpeciesIdTable, [SPECIES_STUNFISK_GALARIAN] = sStunfiskFormSpeciesIdTable, + //Hisuian Forms + [SPECIES_GROWLITHE_HISUIAN] = sGrowlitheFormSpeciesIdTable, + [SPECIES_ARCANINE_HISUIAN] = sArcanineFormSpeciesIdTable, + [SPECIES_VOLTORB_HISUIAN] = sVoltorbFormSpeciesIdTable, + [SPECIES_ELECTRODE_HISUIAN] = sElectrodeFormSpeciesIdTable, + [SPECIES_TYPHLOSION_HISUIAN] = sTyphlosionFormSpeciesIdTable, + [SPECIES_QWILFISH_HISUIAN] = sQwilfishFormSpeciesIdTable, + [SPECIES_SNEASEL_HISUIAN] = sSneaselFormSpeciesIdTable, + [SPECIES_SAMUROTT_HISUIAN] = sSamurottFormSpeciesIdTable, + [SPECIES_LILLIGANT_HISUIAN] = sLilligantFormSpeciesIdTable, + [SPECIES_ZORUA_HISUIAN] = sZoruaFormSpeciesIdTable, + [SPECIES_ZOROARK_HISUIAN] = sZoroarkFormSpeciesIdTable, + [SPECIES_BRAVIARY_HISUIAN] = sBraviaryFormSpeciesIdTable, + [SPECIES_SLIGGOO_HISUIAN] = sSliggooFormSpeciesIdTable, + [SPECIES_GOODRA_HISUIAN] = sGoodraFormSpeciesIdTable, + [SPECIES_AVALUGG_HISUIAN] = sAvaluggFormSpeciesIdTable, + [SPECIES_DECIDUEYE_HISUIAN] = sDecidueyeFormSpeciesIdTable, // Misc Forms // Cosplay Pikachu [SPECIES_PIKACHU_COSPLAY] = sPikachuFormSpeciesIdTable, @@ -307,7 +343,9 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ROTOM_FROST] = sRotomFormSpeciesIdTable, [SPECIES_ROTOM_FAN] = sRotomFormSpeciesIdTable, [SPECIES_ROTOM_MOW] = sRotomFormSpeciesIdTable, - // Giratina + // Origin Forme + [SPECIES_DIALGA_ORIGIN] = sDialgaFormSpeciesIdTable, + [SPECIES_PALKIA_ORIGIN] = sPalkiaFormSpeciesIdTable, [SPECIES_GIRATINA_ORIGIN] = sGiratinaFormSpeciesIdTable, // Shaymin [SPECIES_SHAYMIN_SKY] = sShayminFormSpeciesIdTable, @@ -331,6 +369,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_ARCEUS_FAIRY] = sArceusFormSpeciesIdTable, // Basculin [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinFormSpeciesIdTable, + [SPECIES_BASCULIN_WHITE_STRIPED] = sBasculinFormSpeciesIdTable, // Darmanitan [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanFormSpeciesIdTable, [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanFormSpeciesIdTable, @@ -346,6 +385,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_TORNADUS_THERIAN] = sTornadusFormSpeciesIdTable, [SPECIES_THUNDURUS_THERIAN] = sThundurusFormSpeciesIdTable, [SPECIES_LANDORUS_THERIAN] = sLandorusFormSpeciesIdTable, + [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, // Kyurem [SPECIES_KYUREM_WHITE] = sKyuremFormSpeciesIdTable, [SPECIES_KYUREM_BLACK] = sKyuremFormSpeciesIdTable, diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 810da64997..c6660f6e7a 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -121,6 +121,18 @@ static const u16 sAlakazamFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sGrowlitheFormSpeciesIdTable[] = { + SPECIES_GROWLITHE, + SPECIES_GROWLITHE_HISUIAN, + FORM_SPECIES_END, +}; + +static const u16 sArcanineFormSpeciesIdTable[] = { + SPECIES_ARCANINE, + SPECIES_ARCANINE_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sGeodudeFormSpeciesIdTable[] = { SPECIES_GEODUDE, SPECIES_GEODUDE_ALOLAN, @@ -188,6 +200,18 @@ static const u16 sGengarFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sVoltorbFormSpeciesIdTable[] = { + SPECIES_VOLTORB, + SPECIES_VOLTORB_HISUIAN, + FORM_SPECIES_END, +}; + +static const u16 sElectrodeFormSpeciesIdTable[] = { + SPECIES_ELECTRODE, + SPECIES_ELECTRODE_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sExeggutorFormSpeciesIdTable[] = { SPECIES_EXEGGUTOR, SPECIES_EXEGGUTOR_ALOLAN, @@ -254,6 +278,12 @@ static const u16 sMoltresFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sTyphlosionFormSpeciesIdTable[] = { + SPECIES_TYPHLOSION, + SPECIES_TYPHLOSION_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sMewtwoFormSpeciesIdTable[] = { SPECIES_MEWTWO, SPECIES_MEWTWO_MEGA_X, @@ -279,6 +309,18 @@ static const u16 sSlowkingFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sQwilfishFormSpeciesIdTable[] = { + SPECIES_QWILFISH, + SPECIES_QWILFISH_HISUIAN, + FORM_SPECIES_END, +}; + +static const u16 sSneaselFormSpeciesIdTable[] = { + SPECIES_SNEASEL, + SPECIES_SNEASEL_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sUnownFormSpeciesIdTable[] = { SPECIES_UNOWN, SPECIES_UNOWN_B, @@ -579,12 +621,30 @@ static const u16 sRotomFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sDialgaFormSpeciesIdTable[] = { + SPECIES_DIALGA, + SPECIES_DIALGA_ORIGIN, + FORM_SPECIES_END, +}; + +static const u16 sPalkiaFormSpeciesIdTable[] = { + SPECIES_PALKIA, + SPECIES_PALKIA_ORIGIN, + FORM_SPECIES_END, +}; + static const u16 sGiratinaFormSpeciesIdTable[] = { SPECIES_GIRATINA, SPECIES_GIRATINA_ORIGIN, FORM_SPECIES_END, }; +static const u16 sSamurottFormSpeciesIdTable[] = { + SPECIES_SAMUROTT, + SPECIES_SAMUROTT_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sShayminFormSpeciesIdTable[] = { SPECIES_SHAYMIN, SPECIES_SHAYMIN_SKY, @@ -622,6 +682,13 @@ static const u16 sAudinoFormSpeciesIdTable[] = { static const u16 sBasculinFormSpeciesIdTable[] = { SPECIES_BASCULIN, SPECIES_BASCULIN_BLUE_STRIPED, + SPECIES_BASCULIN_WHITE_STRIPED, + FORM_SPECIES_END, +}; + +static const u16 sLilligantFormSpeciesIdTable[] = { + SPECIES_LILLIGANT, + SPECIES_LILLIGANT_HISUIAN, FORM_SPECIES_END, }; @@ -645,6 +712,18 @@ static const u16 sYamaskFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sZoruaFormSpeciesIdTable[] = { + SPECIES_ZORUA, + SPECIES_ZORUA_HISUIAN, + FORM_SPECIES_END, +}; + +static const u16 sZoroarkFormSpeciesIdTable[] = { + SPECIES_ZOROARK, + SPECIES_ZOROARK_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sDeerlingFormSpeciesIdTable[] = { SPECIES_DEERLING, SPECIES_DEERLING_SUMMER, @@ -667,6 +746,12 @@ static const u16 sStunfiskFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sBraviaryFormSpeciesIdTable[] = { + SPECIES_BRAVIARY, + SPECIES_BRAVIARY_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sTornadusFormSpeciesIdTable[] = { SPECIES_TORNADUS, SPECIES_TORNADUS_THERIAN, @@ -685,6 +770,12 @@ static const u16 sLandorusFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sEnamorusFormSpeciesIdTable[] = { + SPECIES_ENAMORUS, + SPECIES_ENAMORUS_THERIAN, + FORM_SPECIES_END, +}; + static const u16 sKyuremFormSpeciesIdTable[] = { SPECIES_KYUREM, SPECIES_KYUREM_WHITE, @@ -798,6 +889,18 @@ static const u16 sAegislashFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sSliggooFormSpeciesIdTable[] = { + SPECIES_SLIGGOO, + SPECIES_SLIGGOO_HISUIAN, + FORM_SPECIES_END, +}; + +static const u16 sGoodraFormSpeciesIdTable[] = { + SPECIES_GOODRA, + SPECIES_GOODRA_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sPumpkabooFormSpeciesIdTable[] = { SPECIES_PUMPKABOO, SPECIES_PUMPKABOO_SMALL, @@ -814,6 +917,12 @@ static const u16 sGourgeistFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sAvaluggFormSpeciesIdTable[] = { + SPECIES_AVALUGG, + SPECIES_AVALUGG_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sXerneasFormSpeciesIdTable[] = { SPECIES_XERNEAS, SPECIES_XERNEAS_ACTIVE, @@ -841,6 +950,12 @@ static const u16 sHoopaFormSpeciesIdTable[] = { FORM_SPECIES_END, }; +static const u16 sDecidueyeFormSpeciesIdTable[] = { + SPECIES_DECIDUEYE, + SPECIES_DECIDUEYE_HISUIAN, + FORM_SPECIES_END, +}; + static const u16 sOricorioFormSpeciesIdTable[] = { SPECIES_ORICORIO, SPECIES_ORICORIO_POM_POM, diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index fe8834eeef..9a1a662b14 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -4506,8 +4506,8 @@ const struct MonCoords gMonBackPicCoords[] = }, [SPECIES_KLEAVOR] = { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, + .size = MON_COORDS_SIZE(64, 56), + .y_offset = 4, }, [SPECIES_URSALUNA] = { diff --git a/src/data/pokemon_graphics/back_pic_table.h b/src/data/pokemon_graphics/back_pic_table.h index 4f4c7504cc..d2d02b5400 100644 --- a/src/data/pokemon_graphics/back_pic_table.h +++ b/src/data/pokemon_graphics/back_pic_table.h @@ -900,7 +900,7 @@ const struct CompressedSpriteSheet gMonBackPicTable[] = SPECIES_SPRITE(SPECTRIER, gMonBackPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonBackPic_Calyrex), SPECIES_SPRITE(WYRDEER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Wyrdeer), - SPECIES_SPRITE(KLEAVOR, gMonBackPic_CircledQuestionMark), //gMonBackPic_Kleavor), + SPECIES_SPRITE(KLEAVOR, gMonBackPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonBackPic_Ursaluna), SPECIES_SPRITE(BASCULEGION, gMonBackPic_CircledQuestionMark), //gMonBackPic_Basculegion), SPECIES_SPRITE(SNEASLER, gMonBackPic_CircledQuestionMark), //gMonBackPic_Sneasler), diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index a54260b43b..d2cfdbedfd 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -4507,7 +4507,7 @@ const struct MonCoords gMonFrontPicCoords[] = [SPECIES_KLEAVOR] = { .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, + .y_offset = 2, }, [SPECIES_URSALUNA] = { diff --git a/src/data/pokemon_graphics/front_pic_table.h b/src/data/pokemon_graphics/front_pic_table.h index 98651a249d..0ec83bb29c 100644 --- a/src/data/pokemon_graphics/front_pic_table.h +++ b/src/data/pokemon_graphics/front_pic_table.h @@ -900,7 +900,7 @@ const struct CompressedSpriteSheet gMonFrontPicTable[] = SPECIES_SPRITE(SPECTRIER, gMonFrontPic_Spectrier), SPECIES_SPRITE(CALYREX, gMonFrontPic_Calyrex), SPECIES_SPRITE(WYRDEER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Wyrdeer), - SPECIES_SPRITE(KLEAVOR, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Kleavor), + SPECIES_SPRITE(KLEAVOR, gMonFrontPic_Kleavor), SPECIES_SPRITE(URSALUNA, gMonFrontPic_Ursaluna), SPECIES_SPRITE(BASCULEGION, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Basculegion), SPECIES_SPRITE(SNEASLER, gMonFrontPic_CircledQuestionMark), //gMonFrontPic_Sneasler), diff --git a/src/data/pokemon_graphics/palette_table.h b/src/data/pokemon_graphics/palette_table.h index 28289402dc..16ba152cb9 100644 --- a/src/data/pokemon_graphics/palette_table.h +++ b/src/data/pokemon_graphics/palette_table.h @@ -900,7 +900,7 @@ const struct CompressedSpritePalette gMonPaletteTable[] = SPECIES_PAL(SPECTRIER, gMonPalette_Spectrier), SPECIES_PAL(CALYREX, gMonPalette_Calyrex), SPECIES_PAL(WYRDEER, gMonPalette_CircledQuestionMark), // gMonPalette_Wyrdeer), - SPECIES_PAL(KLEAVOR, gMonPalette_CircledQuestionMark), // gMonPalette_Kleavor), + SPECIES_PAL(KLEAVOR, gMonPalette_Kleavor), SPECIES_PAL(URSALUNA, gMonPalette_Ursaluna), SPECIES_PAL(BASCULEGION, gMonPalette_CircledQuestionMark), // gMonPalette_Basculegion), SPECIES_PAL(SNEASLER, gMonPalette_CircledQuestionMark), // gMonPalette_Sneasler), diff --git a/src/data/pokemon_graphics/shiny_palette_table.h b/src/data/pokemon_graphics/shiny_palette_table.h index 20728eaf77..6b4baa8c79 100644 --- a/src/data/pokemon_graphics/shiny_palette_table.h +++ b/src/data/pokemon_graphics/shiny_palette_table.h @@ -900,7 +900,7 @@ const struct CompressedSpritePalette gMonShinyPaletteTable[] = SPECIES_SHINY_PAL(SPECTRIER, gMonShinyPalette_Spectrier), SPECIES_SHINY_PAL(CALYREX, gMonShinyPalette_Calyrex), SPECIES_SHINY_PAL(WYRDEER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Wyrdeer), - SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Kleavor), + SPECIES_SHINY_PAL(KLEAVOR, gMonShinyPalette_Kleavor), SPECIES_SHINY_PAL(URSALUNA, gMonShinyPalette_Ursaluna), SPECIES_SHINY_PAL(BASCULEGION, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Basculegion), SPECIES_SHINY_PAL(SNEASLER, gMonShinyPalette_CircledQuestionMark), // gMonShinyPalette_Sneasler), From 346f3b7f4c3bbd51038becb75498be7fe8f6e306 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 19 Aug 2022 18:01:28 +0700 Subject: [PATCH 072/271] Fix PLA's base_stats.h (rename .item2 to .itemRare) --- src/data/pokemon/base_stats.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index d8c6c608ff..2e56cab4b4 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -25333,7 +25333,7 @@ const struct BaseStats gBaseStats[] = .catchRate = 45, .expYield = 88, .evYield_Attack = 1, - .item2 = ITEM_POISON_BARB, + .itemRare = ITEM_POISON_BARB, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, @@ -25359,7 +25359,7 @@ const struct BaseStats gBaseStats[] = .catchRate = 60, .expYield = 86, .evYield_Speed = 1, - .item2 = ITEM_QUICK_CLAW, + .itemRare = ITEM_QUICK_CLAW, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, @@ -25411,7 +25411,7 @@ const struct BaseStats gBaseStats[] = .expYield = 168, .evYield_Attack = 2, #ifdef ITEM_EXPANSION - .item2 = ITEM_ABSORB_BULB, + .itemRare = ITEM_ABSORB_BULB, #endif .genderRatio = MON_FEMALE, .eggCycles = 20, @@ -25514,7 +25514,7 @@ const struct BaseStats gBaseStats[] = .expYield = 158, .evYield_SpDefense = 2, #ifdef ITEM_EXPANSION - .item2 = ITEM_SHED_SHELL, + .itemRare = ITEM_SHED_SHELL, #endif .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, @@ -25949,7 +25949,7 @@ const struct BaseStats gBaseStats[] = .catchRate = 25, .expYield = 161, .evYield_Speed = 2, - .item2 = ITEM_DEEP_SEA_SCALE, + .itemRare = ITEM_DEEP_SEA_SCALE, .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, From 2b512a8e0361a0235fa5be6005a35a19ca385089 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 19 Aug 2022 18:14:11 +0700 Subject: [PATCH 073/271] Fix Voltorb and Exeggutor' form species table --- src/data/pokemon/form_species_table_pointers.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 0895fe59ea..f516d4e7b3 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -31,9 +31,9 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_GRIMER] = sGrimerFormSpeciesIdTable, [SPECIES_MUK] = sMukFormSpeciesIdTable, [SPECIES_GENGAR] = sGengarFormSpeciesIdTable, - [SPECIES_VOLTORB] = sExeggutorFormSpeciesIdTable, - [SPECIES_ELECTRODE] = sVoltorbFormSpeciesIdTable, - [SPECIES_EXEGGUTOR] = sElectrodeFormSpeciesIdTable, + [SPECIES_VOLTORB] = sVoltorbFormSpeciesIdTable, + [SPECIES_ELECTRODE] = sElectrodeFormSpeciesIdTable, + [SPECIES_EXEGGUTOR] = sExeggutorFormSpeciesIdTable, [SPECIES_MAROWAK] = sMarowakFormSpeciesIdTable, [SPECIES_WEEZING] = sWeezingFormSpeciesIdTable, [SPECIES_KANGASKHAN] = sKangaskhanFormSpeciesIdTable, From c2d5dd2a1fd85b48c3dec49e89f5a26ed3bc4a44 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 11:44:20 -0400 Subject: [PATCH 074/271] Additional battle anim sync --- data/battle_anim_scripts.s | 20 +++++++++--------- include/battle_anim.h | 2 +- include/battle_interface.h | 11 ++++++---- src/battle_anim_effects_1.c | 6 +++--- src/battle_anim_effects_2.c | 7 ++----- src/battle_anim_effects_3.c | 14 ++++++------- src/battle_anim_electric.c | 2 +- src/battle_anim_fight.c | 4 ++-- src/battle_anim_fire.c | 4 ++-- src/battle_anim_flying.c | 8 +++---- src/battle_anim_ice.c | 32 +++++++++++++++------------- src/battle_anim_mon_movement.c | 37 ++++++++++++--------------------- src/battle_anim_mons.c | 30 +++++++++++++------------- src/battle_anim_psychic.c | 6 ++---- src/battle_anim_sound_tasks.c | 4 ++-- src/battle_anim_throw.c | 14 ++++++------- src/battle_anim_utility_funcs.c | 2 +- 17 files changed, 97 insertions(+), 106 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index eff53de845..8eaff7c07f 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -798,14 +798,14 @@ Move_DOUBLE_EDGE: createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 @@ -2441,7 +2441,7 @@ Move_HORN_ATTACK: Move_FURY_ATTACK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2 choosetwoturnanim FuryAttackRight, FuryAttackLeft FuryAttackContinue: createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 @@ -2590,7 +2590,7 @@ Move_LOW_KICK: createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0 delay 4 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, 1, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 @@ -2835,7 +2835,7 @@ SkullBashSetUpHeadDown: createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0 playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2 waitforvisualfinish createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1 waitforvisualfinish @@ -3958,7 +3958,7 @@ Move_MIST_BALL: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_LoadMistTiles, 5 + createvisualtask AnimTask_MistBallFog, 5 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE delay 8 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 @@ -8570,14 +8570,14 @@ Move_ARM_THRUST: loadspritegfx ANIM_TAG_IMPACT splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0 delay 6 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3 delay 4 playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 1 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET choosetwoturnanim ArmThrustRight, ArmThrustLeft ArmThrustContinue: diff --git a/include/battle_anim.h b/include/battle_anim.h index 5ac512346a..0fe0d18980 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -120,7 +120,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2); u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight); -u8 AnimDummyReturnArg(u8 battler); +u8 GetSpritePalIdxByBattler(u8 battler); s16 CloneBattlerSpriteWithBlend(u8); void DestroySpriteWithActiveSheet(struct Sprite *); u8 CreateInvisibleSpriteCopy(int, u8, int); diff --git a/include/battle_interface.h b/include/battle_interface.h index c4816e8da5..ed71b88454 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -34,16 +34,19 @@ enum #define TAG_HEALTHBAR_PLAYER2_TILE 0xD706 #define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707 +#define TAG_HEALTHBOX_PALS_1 0xD709 +#define TAG_HEALTHBOX_PALS_2 0xD70A #define TAG_HEALTHBOX_SAFARI_TILE 0xD70B - #define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C -#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 -#define TAG_HEALTHBOX_PAL 0xD6FF -#define TAG_HEALTHBAR_PAL 0xD704 #define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 #define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 +#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714 + +#define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE +#define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE + enum { HEALTHBOX_ALL, diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 0ae945c0c7..757576efa1 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -84,7 +84,7 @@ static void AnimMilkBottle(struct Sprite *); static void AnimMilkBottle_Step1(struct Sprite *); static void AnimMilkBottle_Step2(struct Sprite *, int, int); static void AnimGrantingStars(struct Sprite *); -static void AnimSparkingStars(struct Sprite *); +static void AnimSparklingStars(struct Sprite *); static void AnimBubbleBurst(struct Sprite *); static void AnimBubbleBurst_Step(struct Sprite *); static void AnimSleepLetterZ(struct Sprite *); @@ -1416,7 +1416,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate = .anims = gGrantingStarsAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSparkingStars, + .callback = AnimSparklingStars, }; static const union AnimCmd sAnim_BubbleBurst[] = @@ -4137,7 +4137,7 @@ static void AnimGrantingStars(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearFixedPoint; } -static void AnimSparkingStars(struct Sprite *sprite) +static void AnimSparklingStars(struct Sprite *sprite) { u8 battler; if (!gBattleAnimArgs[2]) diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 82f3b77d5a..5bd28acea1 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -3043,9 +3043,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId) static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) { - u8 tile; - tile = (b & 1); - tile = ((-tile | tile) >> 31) & 32; + u8 tile = (b & 1) ? 32 : 0; sprite->oam.tileNum += tile + (a << 2); sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMusicNotePaletteTagsTable[b >> 1]); } @@ -3792,8 +3790,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite) if (sprite->data[4] > 3) { - int var1 = sprite->data[2]; - sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1); + sprite->invisible = sprite->data[2] % 2; DestroyAnimSprite(sprite); } diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index f613ff5979..c0f400a555 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -2107,7 +2107,7 @@ static void AnimWishStar(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x = -16; else - sprite->x = 256; + sprite->x = DISPLAY_WIDTH + 16; sprite->y = 0; sprite->callback = AnimWishStar_Step; @@ -2136,7 +2136,7 @@ static void AnimWishStar_Step(struct Sprite *sprite) } newX = sprite->x + sprite->x2 + 32; - if (newX > 304) + if (newX > DISPLAY_WIDTH + 64) DestroyAnimSprite(sprite); } @@ -3183,7 +3183,7 @@ static void AnimReversalOrb_Step(struct Sprite *sprite) // Copies the target mon's sprite, and makes a white silhouette that shrinks away. void AnimTask_RolePlaySilhouette(u8 taskId) { - u8 isBackPic; + bool8 isBackPic; u32 personality; u32 otId; u16 species; @@ -3206,7 +3206,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - isBackPic = 0; + isBackPic = FALSE; personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) @@ -3226,7 +3226,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) } else { - isBackPic = 1; + isBackPic = TRUE; personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) @@ -5097,7 +5097,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) gTasks[taskId].data[1] &= 0xFF; x = gSprites[spriteId].x + gSprites[spriteId].x2; - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -5180,7 +5180,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index 6a92fd607d..b6a82b8d9a 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -583,7 +583,7 @@ static void AnimZapCannonSpark(struct Sprite *sprite) sprite->data[7] = gBattleAnimArgs[4]; sprite->oam.tileNum += gBattleAnimArgs[6] * 4; sprite->callback = AnimZapCannonSpark_Step; - AnimZapCannonSpark_Step(sprite); + sprite->callback(sprite); } static void AnimZapCannonSpark_Step(struct Sprite *sprite) diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index dc668e6ff6..0d7b977e9d 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -500,7 +500,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[1]; sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1); - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); gSprites[sprite->data[7]].callback = SpriteCallbackDummy; @@ -513,7 +513,7 @@ static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite) { if (sprite->data[0] == 0) { - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); DestroySprite(&gSprites[sprite->data[7]]); diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index cbfe21c609..72d802f19a 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -1227,8 +1227,8 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[12] = !GetBattlerSide(gBattleAnimAttacker) ? 1 : -1; - task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ 2) + 1; + task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; + task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1; task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 59474eae3a..8609a8e172 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -528,8 +528,8 @@ static void AnimFlyBallAttack_Step(struct Sprite *sprite) } if (sprite->x + sprite->x2 < -32 - || sprite->x + sprite->x2 > DISPLAY_WIDTH + 32 - || sprite->y + sprite->y2 > DISPLAY_HEIGHT) + || sprite->x + sprite->x2 > DISPLAY_WIDTH + 32 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT) { gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE; DestroyAnimSprite(sprite); @@ -1215,8 +1215,8 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite) sprite->x = sprite->data[4] >> 4; sprite->y = sprite->data[5] >> 4; - if (sprite->x > 285 || sprite->x < -45 - || sprite->y > 157 || sprite->y < -45) + if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45 + || sprite->y > 157 || sprite->y < -45) DestroySpriteAndMatrix(sprite); } diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 6a0ff1154a..433a7daf08 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -45,7 +45,7 @@ static void AnimThrowIceBall(struct Sprite *); static void InitIceBallParticle(struct Sprite *); static void AnimIceBallParticle(struct Sprite *); static void AnimTask_HazeScrollingFog_Step(u8); -static void AnimTask_LoadMistTiles_Step(u8); +static void AnimTask_MistBallFog_Step(u8); static void AnimTask_Hail2(u8); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); @@ -353,7 +353,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate = .callback = AnimThrowMistBall, }; -static const u8 wMistBlendAmounts[] = +static const u8 sMistBlendAmounts[] = { 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, }; @@ -696,7 +696,8 @@ static void AnimSwirlingSnowball(struct Sprite *sprite) sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; @@ -762,7 +763,8 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite) sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32 + if (sprite->x + sprite->x2 > 256 + || sprite->x + sprite->x2 < -16 || sprite->y + sprite->y2 > 256 || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); @@ -816,7 +818,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) { sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; @@ -846,7 +849,8 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite) sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; if (sprite->data[0] == 1) { - if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); @@ -1086,7 +1090,7 @@ static void AnimThrowMistBall(struct Sprite *sprite) } // Displays misty background in Mist Ball. -void AnimTask_LoadMistTiles(u8 taskId) +void AnimTask_MistBallFog(u8 taskId) { struct BattleAnimBgData animBg; @@ -1109,10 +1113,10 @@ void AnimTask_LoadMistTiles(u8 taskId) LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); gTasks[taskId].data[15] = -1; - gTasks[taskId].func = AnimTask_LoadMistTiles_Step; + gTasks[taskId].func = AnimTask_MistBallFog_Step; } -static void AnimTask_LoadMistTiles_Step(u8 taskId) +static void AnimTask_MistBallFog_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -1123,7 +1127,7 @@ static void AnimTask_LoadMistTiles_Step(u8 taskId) { case 0: gTasks[taskId].data[9] += 1; - gTasks[taskId].data[11] = wMistBlendAmounts[gTasks[taskId].data[9]]; + gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11])); if (gTasks[taskId].data[11] == 5) { @@ -1410,14 +1414,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, } else { - battlerX = (sHailCoordData[hailStructId].x); - battlerY = (sHailCoordData[hailStructId].y); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } } else { - battlerX = (sHailCoordData[hailStructId].x); - battlerY = (sHailCoordData[hailStructId].y); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } spriteX = battlerX - ((battlerY + 8) / 2); id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18); diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 77e50c9a45..09393a2a7b 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -5,7 +5,6 @@ #include "task.h" #include "trig.h" -// This file's functions. static void AnimTask_ShakeMon_Step(u8 taskId); static void AnimTask_ShakeMon2_Step(u8 taskId); static void AnimTask_ShakeMonInPlace_Step(u8 taskId); @@ -108,7 +107,7 @@ void AnimTask_ShakeMon(u8 taskId) gTasks[taskId].data[4] = gBattleAnimArgs[1]; gTasks[taskId].data[5] = gBattleAnimArgs[2]; gTasks[taskId].func = AnimTask_ShakeMon_Step; - AnimTask_ShakeMon_Step(taskId); + gTasks[taskId].func(taskId); } static void AnimTask_ShakeMon_Step(u8 taskId) @@ -156,17 +155,14 @@ static void AnimTask_ShakeMon_Step(u8 taskId) void AnimTask_ShakeMon2(u8 taskId) { u8 spriteId; - bool8 destroy = FALSE; + bool8 abort = FALSE; u8 battlerId; if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT) { spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (spriteId == SPRITE_NONE) - { - DestroyAnimVisualTask(taskId); - return; - } + abort = TRUE; } else if (gBattleAnimArgs[0] != 8) { @@ -188,7 +184,7 @@ void AnimTask_ShakeMon2(u8 taskId) } if (IsBattlerSpriteVisible(battlerId) == FALSE) - destroy = TRUE; + abort = TRUE; spriteId = gBattlerSpriteIds[battlerId]; } @@ -197,7 +193,7 @@ void AnimTask_ShakeMon2(u8 taskId) spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; } - if (destroy) + if (abort) { DestroyAnimVisualTask(taskId); return; @@ -332,10 +328,8 @@ void AnimTask_ShakeAndSinkMon(u8 taskId) static void AnimTask_ShakeAndSinkMon_Step(u8 taskId) { - s16 x; - u8 spriteId; - spriteId = gTasks[taskId].data[0]; - x = gTasks[taskId].data[1]; + u8 spriteId = gTasks[taskId].data[0]; + s16 x = gTasks[taskId].data[1]; if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++) { gTasks[taskId].data[8] = 0; @@ -365,11 +359,8 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId) void AnimTask_TranslateMonElliptical(u8 taskId) { u8 i; - u8 spriteId; - u8 wavePeriod; - - wavePeriod = 1; - spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + u8 wavePeriod = 1; + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); if (gBattleAnimArgs[4] > 5) gBattleAnimArgs[4] = 5; @@ -742,7 +733,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].x2 += gTasks[taskId].data[1]; - if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u) + if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32) { DestroyAnimVisualTask(taskId); return; @@ -831,8 +822,7 @@ static void AnimTask_SwayMonStep(u8 taskId) // arg 4: sprite object mode void AnimTask_ScaleMonAndRestore(u8 taskId) { - u8 spriteId; - spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]); PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]); gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; @@ -893,7 +883,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) } else { - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) { gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimAttacker); } @@ -916,8 +906,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) // Rotates mon to side and back to original position. For Peck and when a held item activates void AnimTask_RotateMonToSideAndRestore(u8 taskId) { - u8 spriteId; - spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); + u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 05b0daf3f4..4ce33251ac 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -81,7 +81,7 @@ static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] = #define TAG_MOVE_EFFECT_MON_1 55125 #define TAG_MOVE_EFFECT_MON_2 55126 -static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] = +static const struct SpriteTemplate sSpriteTemplates_MoveEffectMons[] = { { .tileTag = TAG_MOVE_EFFECT_MON_1, @@ -103,7 +103,7 @@ static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] = } }; -static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] = +static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] = { { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1, }, { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, }, @@ -440,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite) #define sAmplitudeX sAmplitude #define sAmplitudeY data[4] -// TranslateSpriteInWavePattern +// TranslateSpriteInLissajousCurve #define sCirclePosX sCirclePos #define sCircleSpeedX sCircleSpeed #define sCirclePosY data[4] @@ -487,7 +487,7 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite) // Unused // Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc. -static void TranslateSpriteInWavePattern(struct Sprite *sprite) +static void TranslateSpriteInLissajousCurve(struct Sprite *sprite) { if (sprite->sDuration) { @@ -1508,13 +1508,13 @@ u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLef return selectedPalettes; } -// Presumably something commented here, just returns arg -u8 AnimDummyReturnArg(u8 battler) +u8 GetSpritePalIdxByBattler(u8 battler) { return battler; } -static u8 GetBattlerAtPosition_(u8 position) +// Unused +static u8 GetSpritePalIdxByPosition(u8 position) { return GetBattlerAtPosition(position); } @@ -1552,20 +1552,20 @@ void AnimSpriteOnMonPos(struct Sprite *sprite) // arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) { - bool8 v1; + bool8 respectMonPicOffsets; u8 coordType; if (!(gBattleAnimArgs[5] & 0xff00)) - v1 = TRUE; + respectMonPicOffsets = TRUE; else - v1 = FALSE; + respectMonPicOffsets = FALSE; if (!(gBattleAnimArgs[5] & 0xff)) coordType = BATTLER_COORD_Y_PIC_OFFSET; else coordType = BATTLER_COORD_Y; - InitSpritePosToAnimAttacker(sprite, v1); + InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; @@ -2097,8 +2097,8 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm) { u8 spriteId; - u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]); - u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag); + u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]); + u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[id].paletteTag); if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL) gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); @@ -2139,9 +2139,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); if (!isBackpic) - spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority); else - spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority); if (IsContest()) { diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index c68ec5d8a5..976682821f 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -818,7 +818,7 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId) { for (i = 8; i < 13; i++) { - if (task->data[i] != 64) + if (task->data[i] != MAX_SPRITES) DestroySprite(&gSprites[task->data[i]]); } @@ -997,12 +997,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId) scanlineParams.dmaDest = ®_BG2HOFS; } - i = task->data[14]; - while (i <= task->data[14] + 64) + for (i = task->data[14]; i <= task->data[14] + 64; i++) { gScanlineEffectRegBuffers[0][i] = task->data[10]; gScanlineEffectRegBuffers[1][i] = task->data[10]; - i++; } scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index f329ea2107..1fde3a9823 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -100,7 +100,7 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId) gTasks[taskId].data[12] = r9; gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step; - SoundTask_LoopSEAdjustPanning_Step(taskId); + gTasks[taskId].func(taskId); } static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId) @@ -385,7 +385,7 @@ void SoundTask_AdjustPanningVar(u8 taskId) gTasks[taskId].data[11] = sourcePan; gTasks[taskId].func = SoundTask_AdjustPanningVar_Step; - SoundTask_AdjustPanningVar_Step(taskId); + gTasks[taskId].func(taskId); } static void SoundTask_AdjustPanningVar_Step(u8 taskId) diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index b029951426..d81b532c58 100755 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -550,8 +550,8 @@ static void LoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battl healthBoxSpriteId = gHealthboxSpriteIds[battler]; spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; spriteId2 = gSprites[healthBoxSpriteId].data[5]; - *paletteId1 = AllocSpritePalette(0xD709); - *paletteId2 = AllocSpritePalette(0xD70A); + *paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1); + *paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2); offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100; @@ -580,10 +580,10 @@ static void FreeHealthboxPalsForLevelUp(u8 battler) spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; spriteId2 = gSprites[healthBoxSpriteId].data[5]; - FreeSpritePaletteByTag(0xD709); - FreeSpritePaletteByTag(0xD70A); - paletteId1 = IndexOfSpritePaletteTag(0xD6FF); - paletteId2 = IndexOfSpritePaletteTag(0xD704); + FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1); + FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2); + paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL); + paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL); gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; gSprites[spriteId1].oam.paletteNum = paletteId1; gSprites[spriteId2].oam.paletteNum = paletteId2; @@ -611,7 +611,7 @@ static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId) if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) { gTasks[taskId].data[0] = 0; - paletteNum = IndexOfSpritePaletteTag(0xD709); + paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1); colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; switch (gTasks[taskId].data[1]) { diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 4071ce9b98..403939f883 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -97,7 +97,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId) for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) { if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler)) - selectedPalettes |= 0x10000 << AnimDummyReturnArg(battler); + selectedPalettes |= 0x10000 << GetSpritePalIdxByBattler(battler); } StartBlendAnimSpriteColor(taskId, selectedPalettes); From 11b4958f230bafa46611c7b4f04142d32d54451d Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 19 Aug 2022 19:45:15 -0400 Subject: [PATCH 075/271] Incorporate commented bug fixes in contest AI scripts --- data/contest_ai_scripts.s | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/data/contest_ai_scripts.s b/data/contest_ai_scripts.s index ef4feb25ff..ecd3103ae2 100644 --- a/data/contest_ai_scripts.s +++ b/data/contest_ai_scripts.s @@ -435,11 +435,15 @@ AI_CGM_BetterWhenAudienceExcited: AI_CGM_BetterWhenAudienceExcited_1stUp: @ BUG: Should be if_appeal_num_eq 0 @ 1st up on 1st appeal excitement will always be 0 - if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_Not1stAppeal +.ifdef BUGFIX + if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal +.else + if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal +.endif if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax end -AI_CGM_BetterWhenAudienceExcited_Not1stAppeal: +AI_CGM_BetterWhenAudienceExcited_1stAppeal: if_random_less_than 125, AI_CGM_End score -15 end @@ -542,7 +546,11 @@ AI_CGM_TargetMonWithJudgesAttention: end AI_CGM_TargetMonWithJudgesAttention_CheckMon1: if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 +.ifdef BUGFIX + if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 +.else if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 +.endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 score +2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 @@ -551,7 +559,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon2: if_user_order_eq MON_2, AI_CGM_End if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 +.ifdef BUGFIX + if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 +.else if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 +.endif if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 score +2 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 @@ -560,7 +572,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon3: if_user_order_eq MON_3, AI_CGM_End if_cannot_participate MON_3, AI_CGM_End +.ifdef BUGFIX + if_not_used_combo_starter MON_3, AI_CGM_End +.else if_used_combo_starter MON_3, AI_CGM_End +.endif if_random_less_than 125, AI_CGM_End score +2 if_not_completed_combo MON_3, AI_CGM_End From 261b0ff118bc24e7d6353180d1bdac3f3942ef48 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 20 Aug 2022 22:58:46 -0400 Subject: [PATCH 076/271] Standardize judgement vs judgment spelling --- ...symbols.png => arena_judgment_symbols.png} | Bin include/battle_message.h | 2 +- include/constants/battle.h | 4 +- include/graphics.h | 4 +- src/battle_arena.c | 66 +++++++++--------- src/battle_bg.c | 4 +- src/battle_message.c | 10 +-- src/battle_script_commands.c | 6 +- src/graphics.c | 4 +- 9 files changed, 50 insertions(+), 50 deletions(-) rename graphics/battle_frontier/{arena_judgement_symbols.png => arena_judgment_symbols.png} (100%) diff --git a/graphics/battle_frontier/arena_judgement_symbols.png b/graphics/battle_frontier/arena_judgment_symbols.png similarity index 100% rename from graphics/battle_frontier/arena_judgement_symbols.png rename to graphics/battle_frontier/arena_judgment_symbols.png diff --git a/include/battle_message.h b/include/battle_message.h index cc18a13d22..1ced84f50a 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -283,7 +283,7 @@ extern const u8 gText_OpponentMon1Name[]; extern const u8 gText_Mind[]; extern const u8 gText_Skill[]; extern const u8 gText_Body[]; -extern const u8 gText_Judgement[]; +extern const u8 gText_Judgment[]; extern const u8 gText_EmptyString3[]; extern const u8 gText_RecordBattleToPass[]; extern const u8 gText_BattleRecordedOnPass[]; diff --git a/include/constants/battle.h b/include/constants/battle.h index 41bdb7a883..3eec42f15c 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -357,8 +357,8 @@ #define ARENA_WIN_MIND 18 #define ARENA_WIN_SKILL 19 #define ARENA_WIN_BODY 20 -#define ARENA_WIN_JUDGEMENT_TITLE 21 -#define ARENA_WIN_JUDGEMENT_TEXT 22 +#define ARENA_WIN_JUDGMENT_TITLE 21 +#define ARENA_WIN_JUDGMENT_TEXT 22 // Flag for BattlePutTextOnWindow. Never set #define B_WIN_COPYTOVRAM (1 << 7) diff --git a/include/graphics.h b/include/graphics.h index 08a2a1c421..8bdc85dc4a 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4138,8 +4138,8 @@ extern const u16 gTilesetAnims_BattleDomePals0_1[]; extern const u16 gTilesetAnims_BattleDomePals0_2[]; extern const u16 gTilesetAnims_BattleDomePals0_3[]; -extern const u32 gBattleArenaJudgementSymbolsGfx[]; -extern const u32 gBattleArenaJudgementSymbolsPalette[]; +extern const u32 gBattleArenaJudgmentSymbolsGfx[]; +extern const u32 gBattleArenaJudgmentSymbolsPalette[]; extern const u32 gBattleWindowTextPalette[]; diff --git a/src/battle_arena.c b/src/battle_arena.c index 79d7d50297..cdd1843d70 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -38,9 +38,9 @@ static void BufferArenaOpponentName(void); static void SpriteCB_JudgmentIcon(struct Sprite *sprite); static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler); -#define JUDGEMENT_STATE_FINISHED 8 +#define JUDGMENT_STATE_FINISHED 8 -#define TAG_JUDGEMENT_ICON 1000 +#define TAG_JUDGMENT_ICON 1000 enum { ANIM_ICON_X, // Player lost @@ -275,7 +275,7 @@ static const s8 sMindRatings[MOVES_COUNT] = [MOVE_PSYCHO_BOOST] = 1, }; -static const struct OamData sOam_JudgementIcon = +static const struct OamData sOam_JudgmentIcon = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -292,52 +292,52 @@ static const struct OamData sOam_JudgementIcon = .affineParam = 0 }; -static const union AnimCmd sAnim_JudgementIcon_X[] = +static const union AnimCmd sAnim_JudgmentIcon_X[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -static const union AnimCmd sAnim_JudgementIcon_Triangle[] = +static const union AnimCmd sAnim_JudgmentIcon_Triangle[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END }; -static const union AnimCmd sAnim_JudgementIcon_Circle[] = +static const union AnimCmd sAnim_JudgmentIcon_Circle[] = { ANIMCMD_FRAME(8, 1), ANIMCMD_END }; -static const union AnimCmd sAnim_JudgementIcon_Line[] = +static const union AnimCmd sAnim_JudgmentIcon_Line[] = { ANIMCMD_FRAME(12, 1), ANIMCMD_END }; -static const union AnimCmd *const sAnims_JudgementIcon[] = +static const union AnimCmd *const sAnims_JudgmentIcon[] = { - [ANIM_ICON_X] = sAnim_JudgementIcon_X, - [ANIM_ICON_TRIANGLE] = sAnim_JudgementIcon_Triangle, - [ANIM_ICON_CIRCLE] = sAnim_JudgementIcon_Circle, - [ANIM_ICON_LINE] = sAnim_JudgementIcon_Line, + [ANIM_ICON_X] = sAnim_JudgmentIcon_X, + [ANIM_ICON_TRIANGLE] = sAnim_JudgmentIcon_Triangle, + [ANIM_ICON_CIRCLE] = sAnim_JudgmentIcon_Circle, + [ANIM_ICON_LINE] = sAnim_JudgmentIcon_Line, }; static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon = { - .tileTag = TAG_JUDGEMENT_ICON, + .tileTag = TAG_JUDGMENT_ICON, .paletteTag = TAG_NONE, - .oam = &sOam_JudgementIcon, - .anims = sAnims_JudgementIcon, + .oam = &sOam_JudgmentIcon, + .anims = sAnims_JudgmentIcon, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_JudgmentIcon, }; -static const struct CompressedSpriteSheet sBattleArenaJudgementSymbolsSpriteSheet[] = +static const struct CompressedSpriteSheet sBattleArenaJudgmentSymbolsSpriteSheet[] = { - {gBattleArenaJudgementSymbolsGfx, 0x200, TAG_JUDGEMENT_ICON}, + {gBattleArenaJudgmentSymbolsGfx, 0x200, TAG_JUDGMENT_ICON}, {0} }; @@ -389,8 +389,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) case 0: BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK); SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL); - LoadCompressedSpriteSheet(sBattleArenaJudgementSymbolsSpriteSheet); - LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20); + LoadCompressedSpriteSheet(sBattleArenaJudgmentSymbolsSpriteSheet); + LoadCompressedPalette(gBattleArenaJudgmentSymbolsPalette, 0x1F0, 0x20); gBattle_WIN0H = 0xFF; gBattle_WIN0V = 0x70; (*state)++; @@ -417,8 +417,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) BattlePutTextOnWindow(gText_Mind, ARENA_WIN_MIND); BattlePutTextOnWindow(gText_Skill, ARENA_WIN_SKILL); BattlePutTextOnWindow(gText_Body, ARENA_WIN_BODY); - BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); - BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); + BattleStringExpandPlaceholdersToDisplayedString(gText_Judgment); + BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGMENT_TITLE); (*state)++; } break; @@ -441,8 +441,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT); - BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); - BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); + BattleStringExpandPlaceholdersToDisplayedString(gText_Judgment); + BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGMENT_TITLE); (*state)++; result = ARENA_RESULT_STEP_DONE; break; @@ -450,8 +450,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT); - BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); - BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); + BattleStringExpandPlaceholdersToDisplayedString(gText_Judgment); + BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGMENT_TITLE); (*state)++; result = ARENA_RESULT_STEP_DONE; break; @@ -459,8 +459,8 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT); - BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); - BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); + BattleStringExpandPlaceholdersToDisplayedString(gText_Judgment); + BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGMENT_TITLE); (*state)++; result = ARENA_RESULT_STEP_DONE; break; @@ -482,11 +482,11 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) } (*state)++; break; - case JUDGEMENT_STATE_FINISHED: - // Finishing this state is the indicator to SpriteCB_JudgmentIcon that its safe to destroy the judgement icon sprites + case JUDGMENT_STATE_FINISHED: + // Finishing this state is the indicator to SpriteCB_JudgmentIcon that its safe to destroy the judgment icon sprites (*state)++; break; - case JUDGEMENT_STATE_FINISHED + 1: + case JUDGMENT_STATE_FINISHED + 1: SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL); HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR); CopyBgTilemapBufferToVram(0); @@ -494,11 +494,11 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK); (*state)++; break; - case JUDGEMENT_STATE_FINISHED + 2: + case JUDGMENT_STATE_FINISHED + 2: if (!gPaletteFade.active) { SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL); - FreeSpriteTilesByTag(TAG_JUDGEMENT_ICON); + FreeSpriteTilesByTag(TAG_JUDGMENT_ICON); result = ARENA_RESULT_STEP_DONE; (*state)++; } @@ -562,7 +562,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler) static void SpriteCB_JudgmentIcon(struct Sprite *sprite) { - if (gBattleCommunication[0] > JUDGEMENT_STATE_FINISHED) + if (gBattleCommunication[0] > JUDGMENT_STATE_FINISHED) DestroySprite(sprite); } diff --git a/src/battle_bg.c b/src/battle_bg.c index ace4ea24fa..8bbe18ab28 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -571,7 +571,7 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] = .paletteNum = 5, .baseBlock = 0x013c, }, - [ARENA_WIN_JUDGEMENT_TITLE] = { + [ARENA_WIN_JUDGMENT_TITLE] = { .bg = 0, .tilemapLeft = 8, .tilemapTop = 11, @@ -580,7 +580,7 @@ static const struct WindowTemplate sBattleArenaWindowTemplates[] = .paletteNum = 5, .baseBlock = 0x0148, }, - [ARENA_WIN_JUDGEMENT_TEXT] = { + [ARENA_WIN_JUDGMENT_TEXT] = { .bg = 0, .tilemapLeft = 2, .tilemapTop = 15, diff --git a/src/battle_message.c b/src/battle_message.c index 677bb2fe38..fa2fedd85b 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1371,7 +1371,7 @@ const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}"); const u8 gText_Mind[] = _("Mind"); const u8 gText_Skill[] = _("Skill"); const u8 gText_Body[] = _("Body"); -const u8 gText_Judgement[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}"); +const u8 gText_Judgment[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}"); static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!"); static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!"); static const u8 sText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p"); @@ -2020,7 +2020,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .bgColor = TEXT_DYNAMIC_COLOR_5, .shadowColor = TEXT_DYNAMIC_COLOR_6, }, - [ARENA_WIN_JUDGEMENT_TITLE] = { + [ARENA_WIN_JUDGMENT_TITLE] = { .fillValue = PIXEL_FILL(0xE), .fontId = FONT_NORMAL, .x = -1, @@ -2032,7 +2032,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .bgColor = TEXT_DYNAMIC_COLOR_5, .shadowColor = TEXT_DYNAMIC_COLOR_6, }, - [ARENA_WIN_JUDGEMENT_TEXT] = { + [ARENA_WIN_JUDGMENT_TEXT] = { .fillValue = PIXEL_FILL(0x1), .fontId = FONT_NORMAL, .x = 0, @@ -3081,7 +3081,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) printerTemplate.x = printerTemplate.currentX = alignX; } - if (windowId == ARENA_WIN_JUDGEMENT_TEXT) + if (windowId == ARENA_WIN_JUDGMENT_TEXT) gTextFlags.useAlternateDownArrow = FALSE; else gTextFlags.useAlternateDownArrow = TRUE; @@ -3091,7 +3091,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) else gTextFlags.autoScroll = FALSE; - if (windowId == B_WIN_MSG || windowId == ARENA_WIN_JUDGEMENT_TEXT) + if (windowId == B_WIN_MSG || windowId == ARENA_WIN_JUDGMENT_TEXT) { if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) speed = 1; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7c009e0775..e4c22000d6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5226,7 +5226,7 @@ static void Cmd_switchineffects(void) else { // There is a hack here to ensure the truant counter will be 0 when the battler's next turn starts. - // The truant counter is not updated in the case where a mon switches in after a lost judgement in the battle arena. + // The truant counter is not updated in the case where a mon switches in after a lost judgment in the battle arena. if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBattler].truantSwitchInHack) gDisableStructs[gActiveBattler].truantCounter = 1; @@ -6412,10 +6412,10 @@ static void Cmd_various(void) break; case VARIOUS_ARENA_JUDGMENT_STRING: BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]); - BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TEXT); + BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGMENT_TEXT); break; case VARIOUS_ARENA_WAIT_STRING: - if (IsTextPrinterActive(ARENA_WIN_JUDGEMENT_TEXT)) + if (IsTextPrinterActive(ARENA_WIN_JUDGMENT_TEXT)) return; break; case VARIOUS_WAIT_CRY: diff --git a/src/graphics.c b/src/graphics.c index eb798433df..06007d759b 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -963,8 +963,8 @@ const u32 gDomeTourneyTree_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney. const u32 gDomeTourneyTreeButtons_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.gbapal.lz"); const u32 gDomeTourneyMatchCardBg_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_match_card_bg.gbapal.lz"); -const u32 gBattleArenaJudgementSymbolsGfx[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.4bpp.lz"); -const u32 gBattleArenaJudgementSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.gbapal.lz"); +const u32 gBattleArenaJudgmentSymbolsGfx[] = INCBIN_U32("graphics/battle_frontier/arena_judgment_symbols.4bpp.lz"); +const u32 gBattleArenaJudgmentSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgment_symbols.gbapal.lz"); const u32 gBattleWindowTextPalette[] = INCBIN_U32("graphics/battle_interface/text.gbapal.lz"); const u16 gPPTextPalette[] = INCBIN_U16("graphics/battle_interface/text_pp.gbapal"); From 3771abbe087df2a18963fd4a4e0f8a117c1b059a Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 23 Aug 2022 12:39:24 -0400 Subject: [PATCH 077/271] Fix names and constant usage for union room classes --- include/constants/pokemon.h | 3 --- include/constants/union_room.h | 4 ++++ include/pokemon.h | 2 +- include/trainer_card.h | 2 +- src/pokemon.c | 19 +++++++++++-------- src/trainer_card.c | 11 ++++++----- src/union_room_player_avatar.c | 5 +++-- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 40af999fde..f93df1fca9 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -247,9 +247,6 @@ #define EVO_MODE_ITEM_USE 2 #define EVO_MODE_ITEM_CHECK 3 // If an Everstone is being held, still want to show that the stone *could* be used on that Pokémon to evolve -#define NUM_MALE_LINK_FACILITY_CLASSES 8 -#define NUM_FEMALE_LINK_FACILITY_CLASSES 8 - #define MON_PIC_WIDTH 64 #define MON_PIC_HEIGHT 64 #define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2) diff --git a/include/constants/union_room.h b/include/constants/union_room.h index f47a8723ff..5c0c57a606 100644 --- a/include/constants/union_room.h +++ b/include/constants/union_room.h @@ -13,6 +13,10 @@ #define UNION_ROOM_MAX_LEVEL 30 +// The number of possible trainer classes for a trainer of a given gender in the Union Room. +// This value is necessarily a power of 2 because of the way it's treated in GetUnionRoomTrainerPic / GetUnionRoomTrainerClass +#define NUM_UNION_ROOM_CLASSES (1 << 3) // 8 + #define ACTIVITY_NONE 0 #define ACTIVITY_BATTLE_SINGLE 1 #define ACTIVITY_BATTLE_DOUBLE 2 diff --git a/include/pokemon.h b/include/pokemon.h index 79b662bf1d..63c5c74eb7 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -382,7 +382,7 @@ extern const u8 gPPUpGetMask[]; extern const u8 gPPUpClearMask[]; extern const u8 gPPUpAddValues[]; extern const u8 gStatStageRatios[MAX_STAT_STAGE + 1][2]; -extern const u16 gLinkPlayerFacilityClasses[]; +extern const u16 gUnionRoomFacilityClasses[]; extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const s8 gNatureStatTable[][5]; diff --git a/include/trainer_card.h b/include/trainer_card.h index f14335ae89..7c37a84a6c 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -54,7 +54,7 @@ struct TrainerCard /*0x4C*/ bool8 shouldDrawStickers; // FRLG only /*0x4D*/ u8 unused; /*0x4E*/ u8 monIconTint; // FRLG only - /*0x4F*/ u8 facilityClass; + /*0x4F*/ u8 unionRoomClass; /*0x50*/ u8 stickers[TRAINER_CARD_STICKER_TYPES]; // FRLG only /*0x54*/ u16 monSpecies[PARTY_SIZE]; // FRLG only // Note: Link players use linkHasAllFrontierSymbols, not the field below, diff --git a/src/pokemon.c b/src/pokemon.c index 8786405c8b..244717c79a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -46,6 +46,7 @@ #include "constants/moves.h" #include "constants/songs.h" #include "constants/trainers.h" +#include "constants/union_room.h" struct SpeciesItem { @@ -1884,7 +1885,9 @@ static const u16 sDeoxysBaseStats[] = [STAT_SPDEF] = 90, }; -const u16 gLinkPlayerFacilityClasses[NUM_MALE_LINK_FACILITY_CLASSES + NUM_FEMALE_LINK_FACILITY_CLASSES] = +// The classes used by other players in the Union Room. +// These should correspond with the overworld graphics in sUnionRoomObjGfxIds +const u16 gUnionRoomFacilityClasses[NUM_UNION_ROOM_CLASSES * GENDER_COUNT] = { // Male classes FACILITY_CLASS_COOLTRAINER_M, @@ -1895,7 +1898,7 @@ const u16 gLinkPlayerFacilityClasses[NUM_MALE_LINK_FACILITY_CLASSES + NUM_FEMALE FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_PKMN_BREEDER_M, FACILITY_CLASS_GUITARIST, - // Female Classes + // Female classes FACILITY_CLASS_COOLTRAINER_F, FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER, @@ -2740,9 +2743,9 @@ u16 GetUnionRoomTrainerPic(void) else linkId = GetMultiplayerId() ^ 1; - arrId = gLinkPlayers[linkId].trainerId & 7; - arrId |= gLinkPlayers[linkId].gender << 3; - return FacilityClassToPicIndex(gLinkPlayerFacilityClasses[arrId]); + arrId = gLinkPlayers[linkId].trainerId % NUM_UNION_ROOM_CLASSES; + arrId |= gLinkPlayers[linkId].gender * NUM_UNION_ROOM_CLASSES; + return FacilityClassToPicIndex(gUnionRoomFacilityClasses[arrId]); } u16 GetUnionRoomTrainerClass(void) @@ -2755,9 +2758,9 @@ u16 GetUnionRoomTrainerClass(void) else linkId = GetMultiplayerId() ^ 1; - arrId = gLinkPlayers[linkId].trainerId & 7; - arrId |= gLinkPlayers[linkId].gender << 3; - return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]]; + arrId = gLinkPlayers[linkId].trainerId % NUM_UNION_ROOM_CLASSES; + arrId |= gLinkPlayers[linkId].gender * NUM_UNION_ROOM_CLASSES; + return gFacilityClassToTrainerClass[gUnionRoomFacilityClasses[arrId]]; } void CreateEventLegalEnemyMon(void) diff --git a/src/trainer_card.c b/src/trainer_card.c index ab7b3c9131..04b8f686ab 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -31,6 +31,7 @@ #include "constants/battle_frontier.h" #include "constants/rgb.h" #include "constants/trainers.h" +#include "constants/union_room.h" struct TrainerCardData { @@ -761,9 +762,9 @@ static void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard) trainerCard->stars++; if (trainerCard->gender == FEMALE) - trainerCard->facilityClass = gLinkPlayerFacilityClasses[(trainerCard->trainerId % NUM_FEMALE_LINK_FACILITY_CLASSES) + NUM_MALE_LINK_FACILITY_CLASSES]; + trainerCard->unionRoomClass = gUnionRoomFacilityClasses[(trainerCard->trainerId % NUM_UNION_ROOM_CLASSES) + NUM_UNION_ROOM_CLASSES]; else - trainerCard->facilityClass = gLinkPlayerFacilityClasses[trainerCard->trainerId % NUM_MALE_LINK_FACILITY_CLASSES]; + trainerCard->unionRoomClass = gUnionRoomFacilityClasses[trainerCard->trainerId % NUM_UNION_ROOM_CLASSES]; } void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard) @@ -777,9 +778,9 @@ void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard) trainerCard->stars++; if (trainerCard->gender == FEMALE) - trainerCard->facilityClass = gLinkPlayerFacilityClasses[(trainerCard->trainerId % NUM_FEMALE_LINK_FACILITY_CLASSES) + NUM_MALE_LINK_FACILITY_CLASSES]; + trainerCard->unionRoomClass = gUnionRoomFacilityClasses[(trainerCard->trainerId % NUM_UNION_ROOM_CLASSES) + NUM_UNION_ROOM_CLASSES]; else - trainerCard->facilityClass = gLinkPlayerFacilityClasses[trainerCard->trainerId % NUM_MALE_LINK_FACILITY_CLASSES]; + trainerCard->unionRoomClass = gUnionRoomFacilityClasses[trainerCard->trainerId % NUM_UNION_ROOM_CLASSES]; } void CopyTrainerCardData(struct TrainerCard *dst, struct TrainerCard *src, u8 gameVersion) @@ -1876,7 +1877,7 @@ static void CreateTrainerCardTrainerPic(void) { if (InUnionRoom() == TRUE && gReceivedRemoteLinkPlayers == 1) { - CreateTrainerCardTrainerPicSprite(FacilityClassToPicIndex(sData->trainerCard.facilityClass), + CreateTrainerCardTrainerPicSprite(FacilityClassToPicIndex(sData->trainerCard.unionRoomClass), TRUE, sTrainerPicOffset[sData->isHoenn][sData->trainerCard.gender][0], sTrainerPicOffset[sData->isHoenn][sData->trainerCard.gender][1], diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c index b60c263ae3..beff4440d0 100644 --- a/src/union_room_player_avatar.c +++ b/src/union_room_player_avatar.c @@ -24,7 +24,8 @@ static u32 IsUnionRoomPlayerInvisible(u32, u32); static void SetUnionRoomObjectFacingDirection(s32, s32, u8); // + 2 is just to match, those elements are empty and never read -static const u8 sUnionRoomObjGfxIds[GENDER_COUNT][MAX_UNION_ROOM_LEADERS + 2] = { +// Graphics ids should correspond with the classes in gUnionRoomFacilityClasses +static const u8 sUnionRoomObjGfxIds[GENDER_COUNT][NUM_UNION_ROOM_CLASSES + 2] = { [MALE] = { OBJ_EVENT_GFX_MAN_3, OBJ_EVENT_GFX_BLACK_BELT, @@ -132,7 +133,7 @@ static bool32 IsPlayerStandingStill(void) // Gender and trainer id are used to determine which sprite a player appears as static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id) { - return sUnionRoomObjGfxIds[gender][id % MAX_UNION_ROOM_LEADERS]; + return sUnionRoomObjGfxIds[gender][id % NUM_UNION_ROOM_CLASSES]; } static void GetUnionRoomPlayerCoords(u32 leaderId, u32 memberId, s32 * x, s32 * y) From 1f5adf93c7ffbd2ecd61b9315b5d796581d994d7 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 23 Aug 2022 21:00:08 -0400 Subject: [PATCH 078/271] Cleaned up use of configs be almost exclusively preproc functions --- data/battle_anim_scripts.s | 13 +- include/constants/battle_config.h | 5 +- src/battle_ai_main.c | 45 ++- src/battle_ai_util.c | 89 +++-- src/battle_anim.c | 4 +- src/battle_bg.c | 10 +- src/battle_controller_opponent.c | 4 +- src/battle_controller_player.c | 41 +-- src/battle_interface.c | 8 +- src/battle_main.c | 54 ++- src/battle_pike.c | 6 +- src/battle_script_commands.c | 536 ++++++++++++++++-------------- src/battle_util.c | 443 +++++++++++++----------- src/battle_z_move.c | 11 +- src/data/battle_anim.h | 174 +++++----- src/data/items.h | 128 +------ src/data/text/move_descriptions.h | 67 ++-- src/daycare.c | 12 +- src/evolution_scene.c | 9 +- src/item_use.c | 4 +- src/overworld.c | 6 +- src/pokemon.c | 132 ++++---- src/pokemon_summary_screen.c | 5 +- src/wild_encounter.c | 13 +- 24 files changed, 921 insertions(+), 898 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index dcafffe50c..91173105bf 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -23548,26 +23548,25 @@ Move_SECRET_POWER: jumpargeq 0, BATTLE_TERRAIN_PUDDLE, Move_MUD_SHOT jumpargeq 0, BATTLE_TERRAIN_MARSH, Move_MUD_SHOT jumpargeq 0, BATTLE_TERRAIN_SWAMP, Move_MUD_SHOT -.if B_SECRET_POWER_ANIMATION >= GEN_7 - jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_ICE_SHARD -.else - jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_AVALANCHE -.endif jumpargeq 0, BATTLE_TERRAIN_ICE, Move_ICE_SHARD jumpargeq 0, BATTLE_TERRAIN_VOLCANO, Move_INCINERATE jumpargeq 0, BATTLE_TERRAIN_DISTORTION_WORLD, Move_POUND jumpargeq 0, BATTLE_TERRAIN_SPACE, Move_SWIFT jumpargeq 0, BATTLE_TERRAIN_ULTRA_SPACE, Move_PSYWAVE .if B_SECRET_POWER_ANIMATION >= GEN_7 + jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_ICE_SHARD jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_SPIT_UP goto Move_SPIT_UP -.elseif B_SECRET_POWER_ANIMATION == GEN_6 +.elseif B_SECRET_POWER_ANIMATION >= GEN_6 + jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_AVALANCHE jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_BODY_SLAM goto Move_BODY_SLAM -.elseif B_SECRET_POWER_ANIMATION == GEN_5 || B_SECRET_POWER_ANIMATION == GEN_4 +.elseif B_SECRET_POWER_ANIMATION >= GEN_4 + jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_AVALANCHE jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_BODY_SLAM goto Move_MUD_SLAP .else + jumpargeq 0, BATTLE_TERRAIN_SNOW, Move_AVALANCHE jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_STRENGTH goto Move_SLAM .endif diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 5e9984c550..6faff81228 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -77,7 +77,7 @@ // Move stat change settings #define B_FELL_STINGER_STAT_RAISE GEN_7 // In Gen7+, it raises Atk by 3 stages instead of 2 if it causes the target to faint. -#define B_KINGS_SHIELD_LOWER_ATK GEN_7 // In Gen7+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. +#define B_KINGS_SHIELD_LOWER_ATK GEN_7 // In Gen8+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. #define B_SPEED_BUFFING_RAPID_SPIN GEN_8 // In Gen8, Rapid Spin raises the user's Speed by 1 stage. #define B_CHARGE_SPDEF_RAISE GEN_7 // In Gen5+, Charge raises the user's Special Defense by 1 stage. #define B_MINIMIZE_EVASION GEN_7 // In Gen5+, Minimize raises evasion by 2 stages instead of 1. @@ -117,9 +117,8 @@ #define B_HP_BERRIES GEN_7 // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. #define B_BERRIES_INSTANT GEN_7 // In Gen4+, most berries activate on battle start/switch-in if applicable. In Gen3, they only activate either at the move end or turn end. #define B_CONFUSE_BERRIES_HEAL GEN_8 // Before Gen7, Figy and similar berries restore 1/8th of HP and trigger at half HP. In Gen7 they restore half HP, triggering at 25% HP. In Gen8 they heal 1/3rd of HP. - // Requires using Item Expansion or manually editing the holdEffectParam of Figy, Wiki, Mago, Aguav and Iapapa berries. #define B_X_ITEMS_BUFF GEN_7 // In Gen7+, the X Items raise a stat by 2 stages instead of 1. -#define B_MENTAL_HERB GEN_5 // In Gen5+, the Mental Herb cures Infatuation, Taunt, Encore, Torment, Heal Block, and Disable +#define B_MENTAL_HERB GEN_5 // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. #define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. #define B_SOUL_DEW_BOOST GEN_7 // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. #define B_NET_BALL_MODIFIER GEN_7 // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 732dea7807..dc5fd413d1 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -141,9 +141,11 @@ static u32 GetWildAiFlags(void) flags |= AI_FLAG_PREFER_STRONGEST_MOVE; if (avgLevel >= 80) flags |= AI_FLAG_HP_AWARE; - - if (B_VAR_WILD_AI_FLAGS != 0 && VarGet(B_VAR_WILD_AI_FLAGS) != 0) + +#if B_VAR_WILD_AI_FLAGS != 0 + if (VarGet(B_VAR_WILD_AI_FLAGS) != 0) flags |= VarGet(B_VAR_WILD_AI_FLAGS); +#endif return flags; } @@ -1273,10 +1275,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break; case EFFECT_OHKO: - if (B_SHEER_COLD_IMMUNITY >= GEN_7 - && move == MOVE_SHEER_COLD - && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) + #if B_SHEER_COLD_IMMUNITY >= GEN_7 + if (move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) return 0; + #endif if (!ShouldTryOHKO(battlerAtk, battlerDef, AI_DATA->abilities[battlerAtk], AI_DATA->abilities[battlerDef], move)) score -= 10; break; @@ -1304,8 +1306,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 8; else if (AI_DATA->hpPercents[battlerAtk] <= 25) score -= 10; - else if (B_SOUND_SUBSTITUTE >= GEN_6 && TestMoveFlagsInMoveset(battlerDef, FLAG_SOUND)) + #if B_SOUND_SUBSTITUTE >= GEN_6 + else if (TestMoveFlagsInMoveset(battlerDef, FLAG_SOUND)) score -= 8; + #endif break; case EFFECT_LEECH_SEED: if (gStatuses3[battlerDef] & STATUS3_LEECHSEED @@ -1317,8 +1321,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_DISABLE: if (gDisableStructs[battlerDef].disableTimer == 0 - && (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) - && !PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) + #if B_MENTAL_HERB >= GEN_5 + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB + #endif + && !PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first { @@ -1337,8 +1343,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_ENCORE: if (gDisableStructs[battlerDef].encoreTimer == 0 - && (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB) - && !DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, AI_DATA->partnerMove)) + #if B_MENTAL_HERB >= GEN_5 + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB + #endif + && !DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, AI_DATA->partnerMove)) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // Attacker should go first { @@ -1570,9 +1578,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break; } - - if (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) + #if B_MENTAL_HERB >= GEN_5 + if (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) score -= 6; + #endif break; case EFFECT_WILL_O_WISP: if (!AI_CanBurn(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) @@ -3543,7 +3552,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_DISABLE: if (gDisableStructs[battlerDef].disableTimer == 0 - && (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB)) // mental herb + #if B_MENTAL_HERB >= GEN_5 + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB // mental herb + #endif + ) { if (AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) // AI goes first { @@ -3565,7 +3577,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_ENCORE: if (gDisableStructs[battlerDef].encoreTimer == 0 - && (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB)) // mental herb + #if B_MENTAL_HERB >= GEN_5 + && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB // mental herb + #endif + ) { if (IsEncoreEncouragedEffect(gBattleMoves[gLastMoves[battlerDef]].effect)) score += 3; @@ -3614,7 +3629,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { bool32 canSteal = FALSE; - #if defined B_TRAINERS_KNOCK_OFF_ITEMS && B_TRAINERS_KNOCK_OFF_ITEMS == TRUE + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE canSteal = TRUE; #endif if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 25c7f3b9d5..2ebd6a8a2d 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -600,21 +600,25 @@ bool32 AtMaxHp(u8 battlerId) bool32 IsBattlerTrapped(u8 battler, bool8 checkSwitch) { u8 holdEffect = AI_DATA->holdEffects[battler]; - if ((B_GHOSTS_ESCAPE >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) - || (checkSwitch && holdEffect == HOLD_EFFECT_SHED_SHELL) - || (!checkSwitch && GetBattlerAbility(battler) == ABILITY_RUN_AWAY) - || (!checkSwitch && holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)) - { + +#if B_GHOSTS_ESCAPE >= GEN_6 + if (IS_BATTLER_OF_TYPE(battler, TYPE_GHOST)) return FALSE; - } - else - { - if (gBattleMons[battler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED) - || IsAbilityPreventingEscape(battler) - || gStatuses3[battler] & (STATUS3_ROOTED | STATUS3_SKY_DROPPED) - || (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK)) - return TRUE; - } +#endif + if (checkSwitch && holdEffect == HOLD_EFFECT_SHED_SHELL) + return FALSE; + else if (!checkSwitch && GetBattlerAbility(battler) == ABILITY_RUN_AWAY) + return FALSE; + else if (!checkSwitch && holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) + return FALSE; + else if (gBattleMons[battler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) + return TRUE; + else if (gStatuses3[battler] & (STATUS3_ROOTED | STATUS3_SKY_DROPPED)) + return TRUE; + else if (gFieldStatuses & STATUS_FIELD_FAIRY_LOCK) + return TRUE; + else if (IsAbilityPreventingEscape(battler)) + return TRUE; return FALSE; } @@ -647,9 +651,11 @@ bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) // move checks bool32 IsAffectedByPowder(u8 battler, u16 ability, u16 holdEffect) { - if ((B_POWDER_GRASS >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GRASS)) - || ability == ABILITY_OVERCOAT - || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES) + if (ability == ABILITY_OVERCOAT + #if B_POWDER_GRASS >= GEN_6 + || IS_BATTLER_OF_TYPE(battler, TYPE_GRASS) + #endif + || holdEffect == HOLD_EFFECT_SAFETY_GOGGLES) return FALSE; return TRUE; } @@ -1415,8 +1421,10 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move) if (AI_DATA->abilities[battlerDef] == ABILITY_NO_GUARD || AI_DATA->abilities[battlerAtk] == ABILITY_NO_GUARD) return TRUE; - if (B_TOXIC_NEVER_MISS >= GEN_6 && gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) +#if B_TOXIC_NEVER_MISS >= GEN_6 + if (gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON)) return TRUE; +#endif // discouraged from hitting if (AI_WeatherHasEffect() && (gBattleWeather & B_WEATHER_SUN) @@ -1426,10 +1434,12 @@ bool32 IsMoveEncouragedToHit(u8 battlerAtk, u8 battlerDef, u16 move) // increased accuracy but don't always hit if ((AI_WeatherHasEffect() && (((gBattleWeather & B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE)) - || (((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD)))) - || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) - || (gBattleMoves[move].accuracy == 0) - || ((B_MINIMIZE_DMG_ACC >= GEN_6) && (gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE))) + || (((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD)))) + || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) + #if B_MINIMIZE_DMG_ACC >= GEN_6 + || ((gStatuses3[battlerDef] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE)) + #endif + || (gBattleMoves[move].accuracy == 0)) { return TRUE; } @@ -1461,10 +1471,10 @@ bool32 ShouldTryOHKO(u8 battlerAtk, u8 battlerDef, u16 atkAbility, u16 defAbilit else // test the odds { u16 odds = accuracy + (gBattleMons[battlerAtk].level - gBattleMons[battlerDef].level); - #if B_SHEER_COLD_ACC >= GEN_7 - if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) - odds -= 10; - #endif + #if B_SHEER_COLD_ACC >= GEN_7 + if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) + odds -= 10; + #endif if (Random() % 100 + 1 < odds && gBattleMons[battlerAtk].level >= gBattleMons[battlerDef].level) return TRUE; } @@ -2240,10 +2250,15 @@ static u32 GetTrapDamage(u8 battlerId) if (gBattleMons[battlerId].status2 & STATUS2_WRAPPED) { if (holdEffect == HOLD_EFFECT_BINDING_BAND) - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6) ? 6 : 8; + #if B_BINDING_DAMAGE >= GEN_6 + damage = gBattleMons[battlerId].maxHP / 6; else - damage = gBattleMons[battlerId].maxHP / (B_BINDING_DAMAGE >= GEN_6) ? 8 : 16; - + damage = gBattleMons[battlerId].maxHP / 8; + #else + damage = gBattleMons[battlerId].maxHP / 8; + else + damage = gBattleMons[battlerId].maxHP / 16; + #endif if (damage == 0) damage = 1; } @@ -2462,14 +2477,22 @@ bool32 ShouldPivot(u8 battlerAtk, u8 battlerDef, u16 defAbility, u16 move, u8 mo return PIVOT; // Won't get the two turns, pivot if (!IS_MOVE_STATUS(move) && (shouldSwitch - || (AtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH - || (defAbility == ABILITY_STURDY && B_STURDY >= GEN_5) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD)))) + || (AtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH + #if B_STURDY >= GEN_5 + || defAbility == ABILITY_STURDY + #endif + || defAbility == ABILITY_MULTISCALE + || defAbility == ABILITY_SHADOW_SHIELD)))) return PIVOT; // pivot to break sash/sturdy/multiscale } else if (!hasStatBoost) { if (!IS_MOVE_STATUS(move) && (AtMaxHp(battlerDef) && (AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH - || (defAbility == ABILITY_STURDY && B_STURDY >= GEN_5) || defAbility == ABILITY_MULTISCALE || defAbility == ABILITY_SHADOW_SHIELD))) + #if B_STURDY >= GEN_5 + || (defAbility == ABILITY_STURDY) + #endif + || defAbility == ABILITY_MULTISCALE + || defAbility == ABILITY_SHADOW_SHIELD))) return PIVOT; // pivot to break sash/sturdy/multiscale if (shouldSwitch) @@ -2608,7 +2631,7 @@ bool32 CanKnockOffItem(u8 battler, u16 item) | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE - #if defined B_TRAINERS_KNOCK_OFF_ITEMS + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE | BATTLE_TYPE_TRAINER #endif )) && GetBattlerSide(battler) == B_SIDE_PLAYER) diff --git a/src/battle_anim.c b/src/battle_anim.c index e3885ec4eb..c4198dc9e2 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1266,10 +1266,10 @@ static void LoadDefaultBg(void) { if (IsContest()) LoadContestBgAfterMoveAnim(); - #if B_TERRAIN_BG_CHANGE == TRUE +#if B_TERRAIN_BG_CHANGE == TRUE else if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY) DrawTerrainTypeBattleBackground(); - #endif +#endif else DrawMainBattleBackground(); } diff --git a/src/battle_bg.c b/src/battle_bg.c index 3965be2eab..faaae248ad 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -870,11 +870,11 @@ void LoadBattleTextboxAndBackground(void) CopyBgTilemapBufferToVram(0); LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40); LoadBattleMenuWindowGfx(); - #if B_TERRAIN_BG_CHANGE == TRUE - DrawTerrainTypeBattleBackground(); - #else - DrawMainBattleBackground(); - #endif +#if B_TERRAIN_BG_CHANGE == TRUE + DrawTerrainTypeBattleBackground(); +#else + DrawMainBattleBackground(); +#endif } static void DrawLinkBattleParticipantPokeballs(u8 taskId, u8 multiplayerId, u8 bgId, u8 destX, u8 destY) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index a503c1c7aa..6a33953547 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1618,7 +1618,7 @@ static void OpponentHandleChooseMove(void) target = GetBattlerAtPosition(Random() & 2); } while (!CanTargetBattler(gActiveBattler, target, move)); - #if B_WILD_NATURAL_ENEMIES == TRUE + #if B_WILD_NATURAL_ENEMIES == TRUE // Don't bother to loop through table if the move can't attack ally if (!(gBattleMoves[move].target & MOVE_TARGET_BOTH)) { @@ -1650,7 +1650,7 @@ static void OpponentHandleChooseMove(void) BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (target << 8)); } else - #endif + #endif BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (target << 8)); } else diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 8195414955..4dad0c4329 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -330,12 +330,14 @@ static void HandleInputChooseAction(void) { SwapHpBarsWithHpText(); } - else if (B_ENABLE_DEBUG && gMain.newKeys & SELECT_BUTTON) +#if B_ENABLE_DEBUG == TRUE + else if (gMain.newKeys & SELECT_BUTTON) { BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_DEBUG, 0); PlayerBufferExecCompleted(); } - #if B_LAST_USED_BALL == TRUE +#endif +#if B_LAST_USED_BALL == TRUE else if (JOY_NEW(B_LAST_USED_BALL_BUTTON) && CanThrowLastUsedBall()) { PlaySE(SE_SELECT); @@ -343,7 +345,7 @@ static void HandleInputChooseAction(void) BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_THROW_BALL, 0); PlayerBufferExecCompleted(); } - #endif +#endif } static void UnusedEndBounceEffect(void) @@ -652,26 +654,25 @@ static void HandleInputChooseMove(void) canSelectTarget = 0; } + #if B_SHOW_TARGETS == TRUE // Show all available targets for multi-target moves - if (B_SHOW_TARGETS) + if ((moveTarget & MOVE_TARGET_ALL_BATTLERS) == MOVE_TARGET_ALL_BATTLERS) { - if ((moveTarget & MOVE_TARGET_ALL_BATTLERS) == MOVE_TARGET_ALL_BATTLERS) - { - u32 i = 0; - for (i = 0; i < gBattlersCount; i++) - TryShowAsTarget(i); - - canSelectTarget = 3; - } - else if (moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) - { - TryShowAsTarget(gMultiUsePlayerCursor); - TryShowAsTarget(BATTLE_PARTNER(gMultiUsePlayerCursor)); - if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) - TryShowAsTarget(BATTLE_PARTNER(gActiveBattler)); - canSelectTarget = 2; - } + u32 i = 0; + for (i = 0; i < gBattlersCount; i++) + TryShowAsTarget(i); + + canSelectTarget = 3; } + else if (moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) + { + TryShowAsTarget(gMultiUsePlayerCursor); + TryShowAsTarget(BATTLE_PARTNER(gMultiUsePlayerCursor)); + if (moveTarget & MOVE_TARGET_FOES_AND_ALLY) + TryShowAsTarget(BATTLE_PARTNER(gActiveBattler)); + canSelectTarget = 2; + } + #endif } switch (canSelectTarget) diff --git a/src/battle_interface.c b/src/battle_interface.c index a504cf1c0e..bdd4b3cd40 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1024,10 +1024,10 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHPBoxes) if (indicatorSpriteId != 0xFF) gSprites[indicatorSpriteId].oam.priority = priority; - #if B_HIDE_HEALTHBOX_IN_ANIMS + #if B_HIDE_HEALTHBOX_IN_ANIMS if (hideHPBoxes && IsBattlerAlive(i)) TryToggleHealboxVisibility(priority, healthboxLeftSpriteId, healthboxRightSpriteId, healthbarSpriteId, indicatorSpriteId); - #endif + #endif } } @@ -3119,10 +3119,11 @@ static void RestoreOverwrittenPixels(u8 *tiles) void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) { +#if B_ABILITY_POP_UP == TRUE const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; - if (!B_ABILITY_POP_UP) + return; if (gBattleScripting.abilityPopupOverwrite != 0) @@ -3189,6 +3190,7 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) PrintBattlerOnAbilityPopUp(battlerId, spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); +#endif } void UpdateAbilityPopup(u8 battlerId) diff --git a/src/battle_main.c b/src/battle_main.c index e64dab4b10..2056838ccd 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3361,10 +3361,11 @@ static void DoBattleIntro(void) } else // Skip party summary since it is a wild battle. { - if (B_FAST_INTRO) - *state = 7; // Don't wait for sprite, print message at the same time. - else - *state = 6; // Wait for sprite to load. + #if B_FAST_INTRO == TRUE + *state = 7; // Don't wait for sprite, print message at the same time. + #else + *state = 6; // Wait for sprite to load. + #endif } break; case 5: // draw party summary in trainer battles @@ -3433,10 +3434,11 @@ static void DoBattleIntro(void) } else { - if (B_FAST_INTRO) - *state = 15; // Wait for text to be printed. - else - *state = 14; // Wait for text and sprite. + #if B_FAST_INTRO == TRUE + *state = 15; // Wait for text to be printed. + #else + *state = 14; // Wait for text and sprite. + #endif } } break; @@ -3474,9 +3476,11 @@ static void DoBattleIntro(void) BtlController_EmitIntroTrainerBallThrow(BUFFER_A); MarkBattlerForControllerExec(gActiveBattler); } - if (B_FAST_INTRO && !(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK))) + #if B_FAST_INTRO == TRUE + if (!(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK))) *state = 15; // Print at the same time as trainer sends out second mon. else + #endif (*state)++; break; case 14: // wait for opponent 2 send out @@ -3496,13 +3500,14 @@ static void DoBattleIntro(void) gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); // A hack that makes fast intro work in trainer battles too. - if (B_FAST_INTRO - && gBattleTypeFlags & BATTLE_TYPE_TRAINER + #if B_FAST_INTRO == TRUE + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_RECORDED_IS_MASTER | BATTLE_TYPE_LINK)) && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_SIDE]].callback == SpriteCallbackDummy) { return; } + #endif PrepareStringBattle(STRINGID_INTROSENDOUT, gActiveBattler); } @@ -4456,7 +4461,11 @@ u32 GetBattlerTotalSpeedStat(u8 battlerId) // paralysis drop if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS && ability != ABILITY_QUICK_FEET) - speed /= (B_PARALYSIS_SPEED >= GEN_7 ? 2 : 4); + #if B_PARALYSIS_SPEED >= GEN_7 + speed /= 2; + #else + speed /= 4; + #endif return speed; } @@ -4481,8 +4490,10 @@ s8 GetMovePriority(u32 battlerId, u16 move) priority = gBattleMoves[move].priority; if (ability == ABILITY_GALE_WINGS - && gBattleMoves[move].type == TYPE_FLYING - && (B_GALE_WINGS <= GEN_6 || BATTLER_MAX_HP(battlerId))) + #if B_GALE_WINGS >= GEN_7 + && BATTLER_MAX_HP(battlerId) + #endif + && gBattleMoves[move].type == TYPE_FLYING) { priority++; } @@ -5125,10 +5136,10 @@ static void HandleEndTurn_FinishBattle(void) RecordedBattle_SetPlaybackFinished(); BeginFastPaletteFade(3); FadeOutMapMusic(5); - #if B_TRAINERS_KNOCK_OFF_ITEMS + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) TryRestoreStolenItems(); - #endif + #endif for (i = 0; i < PARTY_SIZE; i++) { UndoMegaEvolution(i); @@ -5170,7 +5181,10 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void) | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_WALLY_TUTORIAL)) - && (B_EVOLUTION_AFTER_WHITEOUT >= GEN_6 || gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT)) + #if B_EVOLUTION_AFTER_WHITEOUT <= GEN_5 + && (gBattleOutcome == B_OUTCOME_WON || gBattleOutcome == B_OUTCOME_CAUGHT) + #endif + ) { gBattleMainFunc = TrySpecialEvolution; } @@ -5455,5 +5469,9 @@ void SetTotemBoost(void) bool32 IsWildMonSmart(void) { - return (B_SMART_WILD_AI_FLAG != 0 && FlagGet(B_SMART_WILD_AI_FLAG)); +#if B_SMART_WILD_AI_FLAG != 0 + return (FlagGet(B_SMART_WILD_AI_FLAG)); +#else + return FALSE; +#endif } diff --git a/src/battle_pike.c b/src/battle_pike.c index 229f6211ba..9a0af69cce 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -856,8 +856,10 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) break; case STATUS1_PARALYSIS: if (gBaseStats[species].type1 == TYPE_GROUND || gBaseStats[species].type2 == TYPE_GROUND - || (B_PARALYZE_ELECTRIC >= GEN_6 && - (gBaseStats[species].type1 == TYPE_ELECTRIC || gBaseStats[species].type2 == TYPE_ELECTRIC))) + #if B_PARALYZE_ELECTRIC >= GEN_6 + || gBaseStats[species].type1 == TYPE_ELECTRIC || gBaseStats[species].type2 == TYPE_ELECTRIC + #endif + ) ret = TRUE; break; case STATUS1_BURN: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 420d5790ce..ee8b213ec1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1395,10 +1395,10 @@ static void Cmd_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_MoveEnd; return; } - #if (B_STANCE_CHANGE_FAIL <= GEN_6) +#if B_STANCE_CHANGE_FAIL <= GEN_6 if (TryAegiFormChange()) return; - #endif +#endif if (AtkCanceller_UnableToUseMove()) return; @@ -1430,10 +1430,10 @@ static void Cmd_attackcanceler(void) gMoveResultFlags |= MOVE_RESULT_MISSED; return; } - #if (B_STANCE_CHANGE_FAIL >= GEN_7) +#if B_STANCE_CHANGE_FAIL >= GEN_7 if (TryAegiFormChange()) return; - #endif +#endif gHitMarker &= ~HITMARKER_ALLOW_NO_PP; @@ -1601,13 +1601,13 @@ static bool32 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } - else if (B_TOXIC_NEVER_MISS >= GEN_6 - && gBattleMoves[move].effect == EFFECT_TOXIC - && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) +#if B_TOXIC_NEVER_MISS >= GEN_6 + else if (gBattleMoves[move].effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON)) { JumpIfMoveFailed(7, move); return TRUE; } +#endif // If the attacker has the ability No Guard and they aren't targeting a Pokemon involved in a Sky Drop with the move Sky Drop, move hits. else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) { @@ -1639,14 +1639,40 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } - if ((WEATHER_HAS_EFFECT && - ((IsBattlerWeatherAffected(gBattlerTarget, B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE)) - || ((B_BLIZZARD_HAIL >= GEN_4 && (gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD)))) - || (gBattleMoves[move].effect == EFFECT_VITAL_THROW) - || (gBattleMoves[move].accuracy == 0) - || ((B_MINIMIZE_DMG_ACC >= GEN_6) && (gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE))) + if (WEATHER_HAS_EFFECT) + { + if ((IsBattlerWeatherAffected(gBattlerTarget, B_WEATHER_RAIN) && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE))) + { + // thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella + JumpIfMoveFailed(7, move); + return TRUE; + } + #if B_BLIZZARD_HAIL >= GEN_4 + else if ((gBattleWeather & B_WEATHER_HAIL) && move == MOVE_BLIZZARD) + { + // thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella + JumpIfMoveFailed(7, move); + return TRUE; + } + #endif + } + + if (gBattleMoves[move].effect == EFFECT_VITAL_THROW) + { + JumpIfMoveFailed(7, move); + return TRUE; + } + +#if B_MINIMIZE_DMG_ACC >= GEN_6 + if ((gStatuses3[gBattlerTarget] & STATUS3_MINIMIZED) && (gBattleMoves[move].flags & FLAG_DMG_MINIMIZE)) + { + JumpIfMoveFailed(7, move); + return TRUE; + } +#endif + + if (gBattleMoves[move].accuracy == 0) { - // thunder/hurricane ignore acc checks in rain unless target is holding utility umbrella JumpIfMoveFailed(7, move); return TRUE; } @@ -2885,7 +2911,11 @@ void SetMoveEffect(bool32 primary, u32 certain) BattleScriptPush(gBattlescriptCurrInstr + 1); if (sStatusFlagsForMoveEffects[gBattleScripting.moveEffect] == STATUS1_SLEEP) - gBattleMons[gEffectBattler].status1 |= (B_SLEEP_TURNS >= GEN_5) ? ((Random() % 3) + 2) : ((Random() % 4) + 3); + #if B_SLEEP_TURNS >= GEN_5 + gBattleMons[gEffectBattler].status1 |= ((Random() % 3) + 2); + #else + gBattleMons[gEffectBattler].status1 |= ((Random() % 4) + 3); + #endif else gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleScripting.moveEffect]; @@ -2987,7 +3017,11 @@ void SetMoveEffect(bool32 primary, u32 certain) { gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gEffectBattler] = gCurrentMove; - gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN(B_UPROAR_TURNS >= GEN_5 ? 3 : ((Random() & 3) + 2)); + #if B_UPROAR_TURNS >= GEN_5 + gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN(3); + #else + gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN((Random() & 3) + 2); + #endif BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; @@ -3042,9 +3076,15 @@ void SetMoveEffect(bool32 primary, u32 certain) { gBattleMons[gEffectBattler].status2 |= STATUS2_WRAPPED; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_GRIP_CLAW) - gDisableStructs[gEffectBattler].wrapTurns = (B_BINDING_TURNS >= GEN_5) ? 7 : 5; + #if B_BINDING_TURNS >= GEN_5 + gDisableStructs[gEffectBattler].wrapTurns = 7; else - gDisableStructs[gEffectBattler].wrapTurns = (B_BINDING_TURNS >= GEN_5) ? ((Random() % 2) + 4) : ((Random() % 4) + 2); + gDisableStructs[gEffectBattler].wrapTurns = (Random() % 2) + 4; + #else + gDisableStructs[gEffectBattler].wrapTurns = 5; + else + gDisableStructs[gEffectBattler].wrapTurns = (Random() % 4) + 2; + #endif gBattleStruct->wrappedMove[gEffectBattler] = gCurrentMove; gBattleStruct->wrappedBy[gEffectBattler] = gBattlerAttacker; @@ -3459,8 +3499,11 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattlescriptCurrInstr++; break; case MOVE_EFFECT_INCINERATE: - if ((B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler, FALSE) == HOLD_EFFECT_GEMS) - || (gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX)) + if ((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX) + #if B_INCINERATE_GEMS >= GEN_6 + || (GetBattlerHoldEffect(gEffectBattler, FALSE) == HOLD_EFFECT_GEMS) + #endif + ) { gLastUsedItem = gBattleMons[gEffectBattler].item; gBattleMons[gEffectBattler].item = 0; @@ -4004,13 +4047,20 @@ static void Cmd_getexp(void) gBattleMoveDamage = 0; // only give exp share bonus in later gens if the mon wasn't sent out - if ((holdEffect == HOLD_EFFECT_EXP_SHARE) && ((gBattleMoveDamage == 0) || (B_SPLIT_EXP < GEN_6))) + #if B_SPLIT_EXP < GEN_6 + if (holdEffect == HOLD_EFFECT_EXP_SHARE) gBattleMoveDamage += gExpShareExp; + #else + if (holdEffect == HOLD_EFFECT_EXP_SHARE && gBattleMoveDamage == 0) + gBattleMoveDamage += gExpShareExp; + #endif if (holdEffect == HOLD_EFFECT_LUCKY_EGG) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && B_TRAINER_EXP_MULTIPLIER <= GEN_7) + #if B_TRAINER_EXP_MULTIPLIER <= GEN_7 + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - #if (B_SCALED_EXP >= GEN_5) && (B_SCALED_EXP != GEN_6) + #endif + #if (B_SCALED_EXP >= GEN_5) && (B_SCALED_EXP != GEN_6) { // Note: There is an edge case where if a pokemon receives a large amount of exp, it wouldn't be properly calculated // because of multiplying by scaling factor(the value would simply be larger than an u32 can hold). Hence u64 is needed. @@ -4019,7 +4069,7 @@ static void Cmd_getexp(void) value /= sExperienceScalingFactors[gBattleMons[gBattlerFainted].level + GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) + 10]; gBattleMoveDamage = value + 1; } - #endif + #endif if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId])) { @@ -4720,14 +4770,14 @@ static void Cmd_playanimation(void) gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3); - #if B_TERRAIN_BG_CHANGE == FALSE +#if B_TERRAIN_BG_CHANGE == FALSE if (animId == B_ANIM_RESTORE_BG) { // workaround for .if not working gBattlescriptCurrInstr += 7; return; } - #endif +#endif if (animId == B_ANIM_STATS_CHANGE || animId == B_ANIM_SNATCH_MOVE @@ -5035,7 +5085,11 @@ static void Cmd_moveend(void) i = gBattlerAttacker; gBattlerAttacker = gBattlerTarget; gBattlerTarget = i; // gBattlerTarget and gBattlerAttacker are swapped in order to activate Defiant, if applicable - gBattleScripting.moveEffect = (B_KINGS_SHIELD_LOWER_ATK >= GEN_8) ? MOVE_EFFECT_ATK_MINUS_1 : MOVE_EFFECT_ATK_MINUS_2; + #if B_KINGS_SHIELD_LOWER_ATK >= GEN_8 + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1; + #else + gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_2; + #endif BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; effect = 1; @@ -5605,17 +5659,19 @@ static void Cmd_moveend(void) BattleScriptPushCursor(); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER || GetBattlerSide(i) == B_SIDE_PLAYER) { - if (B_ABILITY_POP_UP) - gBattlescriptCurrInstr = BattleScript_EmergencyExit; - else - gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp; + #if B_ABILITY_POP_UP == TRUE + gBattlescriptCurrInstr = BattleScript_EmergencyExit; + #else + gBattlescriptCurrInstr = BattleScript_EmergencyExitNoPopUp; + #endif } else { - if (B_ABILITY_POP_UP) - gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; - else - gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp; + #if B_ABILITY_POP_UP == TRUE + gBattlescriptCurrInstr = BattleScript_EmergencyExitWild; + #else + gBattlescriptCurrInstr = BattleScript_EmergencyExitWildNoPopUp; + #endif } return; } @@ -5628,12 +5684,12 @@ static void Cmd_moveend(void) if (gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget) *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].dancerOriginalTarget & 0x3; - #if B_RAMPAGE_CANCELLING >= GEN_5 + #if B_RAMPAGE_CANCELLING >= GEN_5 if (gBattleMoves[gCurrentMove].effect == EFFECT_RAMPAGE // If we're rampaging && (gMoveResultFlags & MOVE_RESULT_NO_EFFECT) // And it is unusable && (gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE) != STATUS2_LOCK_CONFUSE_TURN(1)) // And won't end this turn CancelMultiTurnMoves(gBattlerAttacker); // Cancel it - #endif + #endif gProtectStructs[gBattlerAttacker].usesBouncedMove = FALSE; gProtectStructs[gBattlerAttacker].targetAffected = FALSE; @@ -8361,11 +8417,11 @@ static void Cmd_various(void) && !NoAliveMonsForEitherParty() && CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { - if (B_FELL_STINGER_STAT_RAISE >= GEN_7) - SET_STATCHANGER(STAT_ATK, 3, FALSE); - else - SET_STATCHANGER(STAT_ATK, 2, FALSE); - + #if B_FELL_STINGER_STAT_RAISE >= GEN_7 + SET_STATCHANGER(STAT_ATK, 3, FALSE); + #else + SET_STATCHANGER(STAT_ATK, 2, FALSE); + #endif PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); BattleScriptPush(gBattlescriptCurrInstr + 3); gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat; @@ -9944,13 +10000,16 @@ static void Cmd_manipulatedamage(void) gBattleMoveDamage *= -1; break; case DMG_RECOIL_FROM_MISS: + #if B_RECOIL_IF_MISS_DMG >= GEN_5 + gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; + #elif B_RECOIL_IF_MISS_DMG == GEN_4 + if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage) + gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; + #else gBattleMoveDamage /= 2; + #endif if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if (B_RECOIL_IF_MISS_DMG >= GEN_5) - gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2; - if ((B_RECOIL_IF_MISS_DMG <= GEN_4) && ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage)) - gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2; break; case DMG_DOUBLED: gBattleMoveDamage *= 2; @@ -10569,8 +10628,9 @@ static void Cmd_setmultihitcounter(void) { gMultiHitCounter = 5; } - else if (B_MULTI_HIT_CHANCE >= GEN_5) + else { + #if B_MULTI_HIT_CHANCE >= GEN_5 // 2 and 3 hits: 33.3% // 4 and 5 hits: 16.7% gMultiHitCounter = Random() % 4; @@ -10584,9 +10644,7 @@ static void Cmd_setmultihitcounter(void) } else gMultiHitCounter += 3; - } - else - { + #else // 2 and 3 hits: 37.5% // 4 and 5 hits: 12.5% gMultiHitCounter = Random() % 4; @@ -10594,6 +10652,7 @@ static void Cmd_setmultihitcounter(void) gMultiHitCounter = (Random() % 4) + 2; else gMultiHitCounter += 2; + #endif } } @@ -10987,10 +11046,10 @@ static void Cmd_tryKO(void) else { u16 odds = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level); - #if B_SHEER_COLD_ACC >= GEN_7 - if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) - odds -= 10; - #endif + #if B_SHEER_COLD_ACC >= GEN_7 + if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE)) + odds -= 10; + #endif if (Random() % 100 + 1 < odds && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level) lands = TRUE; } @@ -11354,10 +11413,11 @@ static void Cmd_dmgtolevel(void) static void Cmd_psywavedamageeffect(void) { s32 randDamage; - if (B_PSYWAVE_DMG >= GEN_6) - randDamage = (Random() % 101); - else - randDamage = (Random() % 11) * 10; +#if B_PSYWAVE_DMG >= GEN_6 + randDamage = (Random() % 101); +#else + randDamage = (Random() % 11) * 10; +#endif gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100; gBattlescriptCurrInstr++; } @@ -11428,12 +11488,13 @@ static void Cmd_disablelastusedattack(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].moves[i]) gDisableStructs[gBattlerTarget].disabledMove = gBattleMons[gBattlerTarget].moves[i]; - if (B_DISABLE_TURNS == GEN_3) - gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 2; - else if (B_DISABLE_TURNS == GEN_4) - gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 4; - else - gDisableStructs[gBattlerTarget].disableTimer = 4; + #if B_DISABLE_TURNS == GEN_3 + gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 2; + #elif B_DISABLE_TURNS == GEN_4 + gDisableStructs[gBattlerTarget].disableTimer = (Random() & 3) + 4; + #else + gDisableStructs[gBattlerTarget].disableTimer = 4; + #endif gDisableStructs[gBattlerTarget].disableTimerStartValue = gDisableStructs[gBattlerTarget].disableTimer; // used to save the random amount of turns? gBattlescriptCurrInstr += 5; } @@ -11711,7 +11772,11 @@ static void Cmd_settailwind(void) { gSideStatuses[side] |= SIDE_STATUS_TAILWIND; gSideTimers[side].tailwindBattlerId = gBattlerAttacker; - gSideTimers[side].tailwindTimer = (B_TAILWIND_TURNS >= GEN_5) ? 4 : 3; + #if B_TAILWIND_TURNS >= GEN_5 + gSideTimers[side].tailwindTimer = 4; + #else + gSideTimers[side].tailwindTimer = 3; + #endif gBattlescriptCurrInstr += 5; } else @@ -12634,7 +12699,7 @@ static void Cmd_tryswapitems(void) | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_SECRET_BASE | BATTLE_TYPE_RECORDED_LINK - #if B_TRAINERS_KNOCK_OFF_ITEMS + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE | BATTLE_TYPE_TRAINER #endif )))) @@ -12773,14 +12838,14 @@ static void Cmd_trywish(void) break; case 1: // heal effect PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishPartyId[gBattlerTarget]) - #if B_WISH_HP_SOURCE >= GEN_5 - if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) - gBattleMoveDamage = max(1, GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); - else - gBattleMoveDamage = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); - #else - gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); - #endif + #if B_WISH_HP_SOURCE >= GEN_5 + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) + gBattleMoveDamage = max(1, GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); + else + gBattleMoveDamage = max(1, GetMonData(&gEnemyParty[gWishFutureKnock.wishPartyId[gBattlerTarget]], MON_DATA_MAX_HP) / 2); + #else + gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); + #endif gBattleMoveDamage *= -1; if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) @@ -13180,45 +13245,40 @@ u16 GetSecretPowerMoveEffect(void) { switch (gBattleTerrain) { - case BATTLE_TERRAIN_GRASS: - #if B_SECRET_POWER_EFFECT >= GEN_4 - moveEffect = MOVE_EFFECT_SLEEP; - #else - moveEffect = MOVE_EFFECT_POISON; - #endif - break; + #if B_SECRET_POWER_EFFECT >= GEN_6 + case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; + case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; + case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; + case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; + case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; + #elif B_SECRET_POWER_EFFECT >= GEN_5 + case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; + case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; + case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; + case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; + case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; + #elif B_SECRET_POWER_EFFECT >= GEN_4 + case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; + case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; + case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; + case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_FLINCH; break; + case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; + #else + case BATTLE_TERRAIN_GRASS: moveEffect = MOVE_EFFECT_POISON; break; + case BATTLE_TERRAIN_UNDERWATER: moveEffect = MOVE_EFFECT_DEF_MINUS_1; break; + case BATTLE_TERRAIN_POND: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; + case BATTLE_TERRAIN_MOUNTAIN: moveEffect = MOVE_EFFECT_CONFUSION; break; + case BATTLE_TERRAIN_PUDDLE: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; + #endif case BATTLE_TERRAIN_LONG_GRASS: moveEffect = MOVE_EFFECT_SLEEP; break; case BATTLE_TERRAIN_SAND: moveEffect = MOVE_EFFECT_ACC_MINUS_1; break; - case BATTLE_TERRAIN_UNDERWATER: - #if B_SECRET_POWER_EFFECT >= GEN_6 - moveEffect = MOVE_EFFECT_ATK_MINUS_1; - #else - moveEffect = MOVE_EFFECT_DEF_MINUS_1; - #endif - break; case BATTLE_TERRAIN_WATER: moveEffect = MOVE_EFFECT_ATK_MINUS_1; break; - case BATTLE_TERRAIN_POND: - #if B_SECRET_POWER_EFFECT >= GEN_4 - moveEffect = MOVE_EFFECT_ATK_MINUS_1; - #else - moveEffect = MOVE_EFFECT_SPD_MINUS_1; - #endif - break; - case BATTLE_TERRAIN_MOUNTAIN: - #if B_SECRET_POWER_EFFECT >= GEN_5 - moveEffect = MOVE_EFFECT_ACC_MINUS_1; - #elif B_SECRET_POWER_EFFECT == GEN_4 - moveEffect = MOVE_EFFECT_FLINCH; - #else - moveEffect = MOVE_EFFECT_CONFUSION; - #endif - break; case BATTLE_TERRAIN_CAVE: case BATTLE_TERRAIN_BURIAL_GROUND: case BATTLE_TERRAIN_SPACE: @@ -13230,13 +13290,6 @@ u16 GetSecretPowerMoveEffect(void) case BATTLE_TERRAIN_SWAMP: moveEffect = MOVE_EFFECT_SPD_MINUS_1; break; - case BATTLE_TERRAIN_PUDDLE: - #if B_SECRET_POWER_EFFECT >= GEN_5 - moveEffect = MOVE_EFFECT_SPD_MINUS_1; - #else - moveEffect = MOVE_EFFECT_ACC_MINUS_1; - #endif - break; case BATTLE_TERRAIN_SNOW: case BATTLE_TERRAIN_ICE: moveEffect = MOVE_EFFECT_FREEZE; @@ -13439,12 +13492,14 @@ bool32 DoesSubstituteBlockMove(u8 battlerAtk, u8 battlerDef, u32 move) { if (!(gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE)) return FALSE; - else if (gBattleMoves[move].flags & FLAG_SOUND && B_SOUND_SUBSTITUTE >= GEN_6) +#if B_SOUND_SUBSTITUTE >= GEN_6 + else if (gBattleMoves[move].flags & FLAG_SOUND) + return FALSE; +#endif + else if (gBattleMoves[move].flags & FLAG_HIT_IN_SUBSTITUTE) return FALSE; else if (GetBattlerAbility(battlerAtk) == ABILITY_INFILTRATOR) return FALSE; - else if (gBattleMoves[move].flags & FLAG_HIT_IN_SUBSTITUTE) - return FALSE; else return TRUE; } @@ -13576,18 +13631,18 @@ static void Cmd_removelightscreenreflect(void) u8 side; bool32 failed; - #if B_BRICK_BREAK >= GEN_4 - // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally - side = GetBattlerSide(gBattlerTarget); - #else - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; - #endif +#if B_BRICK_BREAK >= GEN_4 +// From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally + side = GetBattlerSide(gBattlerTarget); +#else + side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; +#endif - #if B_BRICK_BREAK >= GEN_5 - failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); - #else - failed = FALSE; - #endif +#if B_BRICK_BREAK >= GEN_5 + failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); +#else + failed = FALSE; +#endif if (!failed && (gSideTimers[side].reflectTimer @@ -13673,73 +13728,72 @@ static void Cmd_handleballthrow(void) ballMultiplier = 15; case ITEM_NET_BALL: if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) - #if B_NET_BALL_MODIFIER >= GEN_7 - ballMultiplier = 50; - #else - ballMultiplier = 30; - #endif + #if B_NET_BALL_MODIFIER >= GEN_7 + ballMultiplier = 50; + #else + ballMultiplier = 30; + #endif break; case ITEM_DIVE_BALL: + if (GetCurrentMapType() == MAP_TYPE_UNDERWATER #if B_DIVE_BALL_MODIFIER >= GEN_4 - if (GetCurrentMapType() == MAP_TYPE_UNDERWATER || gIsFishingEncounter || gIsSurfingEncounter) - ballMultiplier = 35; - #else - if (GetCurrentMapType() == MAP_TYPE_UNDERWATER) - ballMultiplier = 35; + || gIsFishingEncounter || gIsSurfingEncounter #endif + ) + ballMultiplier = 35; break; case ITEM_NEST_BALL: - #if B_NEST_BALL_MODIFIER >= GEN_6 - //((41 - Pokémon's level) ÷ 10)× if Pokémon's level is between 1 and 29, 1× otherwise. - if (gBattleMons[gBattlerTarget].level < 30) - ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; - #elif B_NEST_BALL_MODIFIER == GEN_5 - //((41 - Pokémon's level) ÷ 10)×, minimum 1× - if (gBattleMons[gBattlerTarget].level < 31) - ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; - #else - //((40 - Pokémon's level) ÷ 10)×, minimum 1× - if (gBattleMons[gBattlerTarget].level < 40) - { - ballMultiplier = 40 - gBattleMons[gBattlerTarget].level; - if (ballMultiplier <= 9) - ballMultiplier = 10; - } - #endif + #if B_NEST_BALL_MODIFIER >= GEN_6 + //((41 - Pokémon's level) ÷ 10)× if Pokémon's level is between 1 and 29, 1× otherwise. + if (gBattleMons[gBattlerTarget].level < 30) + ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; + #elif B_NEST_BALL_MODIFIER == GEN_5 + //((41 - Pokémon's level) ÷ 10)×, minimum 1× + if (gBattleMons[gBattlerTarget].level < 31) + ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; + #else + //((40 - Pokémon's level) ÷ 10)×, minimum 1× + if (gBattleMons[gBattlerTarget].level < 40) + { + ballMultiplier = 40 - gBattleMons[gBattlerTarget].level; + if (ballMultiplier <= 9) + ballMultiplier = 10; + } + #endif break; case ITEM_REPEAT_BALL: - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) - #if B_REPEAT_BALL_MODIFIER >= GEN_7 - ballMultiplier = 35; - #else - ballMultiplier = 30; - #endif - break; - case ITEM_TIMER_BALL: - #if B_TIMER_BALL_MODIFIER >= GEN_5 - ballMultiplier = (gBattleResults.battleTurnCounter * 3) + 10; + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) + #if B_REPEAT_BALL_MODIFIER >= GEN_7 + ballMultiplier = 35; #else - ballMultiplier = gBattleResults.battleTurnCounter + 10; + ballMultiplier = 30; #endif + break; + case ITEM_TIMER_BALL: + #if B_TIMER_BALL_MODIFIER >= GEN_5 + ballMultiplier = (gBattleResults.battleTurnCounter * 3) + 10; + #else + ballMultiplier = gBattleResults.battleTurnCounter + 10; + #endif if (ballMultiplier > 40) ballMultiplier = 40; break; case ITEM_DUSK_BALL: RtcCalcLocalTime(); if ((gLocalTime.hours >= 20 && gLocalTime.hours <= 3) || gMapHeader.cave || gMapHeader.mapType == MAP_TYPE_UNDERGROUND) - #if B_DUSK_BALL_MODIFIER >= GEN_7 - ballMultiplier = 30; - #else - ballMultiplier = 35; - #endif + #if B_DUSK_BALL_MODIFIER >= GEN_7 + ballMultiplier = 30; + #else + ballMultiplier = 35; + #endif break; case ITEM_QUICK_BALL: if (gBattleResults.battleTurnCounter == 0) - #if B_QUICK_BALL_MODIFIER >= GEN_5 - ballMultiplier = 50; - #else - ballMultiplier = 40; - #endif + #if B_QUICK_BALL_MODIFIER >= GEN_5 + ballMultiplier = 50; + #else + ballMultiplier = 40; + #endif break; case ITEM_LEVEL_BALL: if (gBattleMons[gBattlerAttacker].level >= 4 * gBattleMons[gBattlerTarget].level) @@ -13751,11 +13805,11 @@ static void Cmd_handleballthrow(void) break; case ITEM_LURE_BALL: if (gIsFishingEncounter) - #if B_LURE_BALL_MODIFIER >= GEN_7 - ballMultiplier = 50; - #else - ballMultiplier = 30; - #endif + #if B_LURE_BALL_MODIFIER >= GEN_7 + ballMultiplier = 50; + #else + ballMultiplier = 30; + #endif break; case ITEM_MOON_BALL: for (i = 0; i < EVOS_PER_MON; i++) @@ -13781,44 +13835,44 @@ static void Cmd_handleballthrow(void) break; case ITEM_HEAVY_BALL: i = GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), 1); - #if B_HEAVY_BALL_MODIFIER >= GEN_7 - if (i < 1000) - ballAddition = -20; - else if (i < 2000) - ballAddition = 0; - else if (i < 3000) - ballAddition = 20; - else - ballAddition = 30; - #elif B_HEAVY_BALL_MODIFIER >= GEN_4 - if (i < 2048) - ballAddition = -20; - else if (i < 3072) - ballAddition = 20; - else if (i < 4096) - ballAddition = 30; - else - ballAddition = 40; - #else - if (i < 1024) - ballAddition = -20; - else if (i < 2048) - ballAddition = 0; - else if (i < 3072) - ballAddition = 20; - else if (i < 4096) - ballAddition = 30; - else - ballAddition = 40; - #endif + #if B_HEAVY_BALL_MODIFIER >= GEN_7 + if (i < 1000) + ballAddition = -20; + else if (i < 2000) + ballAddition = 0; + else if (i < 3000) + ballAddition = 20; + else + ballAddition = 30; + #elif B_HEAVY_BALL_MODIFIER >= GEN_4 + if (i < 2048) + ballAddition = -20; + else if (i < 3072) + ballAddition = 20; + else if (i < 4096) + ballAddition = 30; + else + ballAddition = 40; + #else + if (i < 1024) + ballAddition = -20; + else if (i < 2048) + ballAddition = 0; + else if (i < 3072) + ballAddition = 20; + else if (i < 4096) + ballAddition = 30; + else + ballAddition = 40; + #endif break; case ITEM_DREAM_BALL: - #if B_DREAM_BALL_MODIFIER >= GEN_8 - if (gBattleMons[gBattlerTarget].status1 & STATUS1_SLEEP || GetBattlerAbility(gBattlerTarget) == ABILITY_COMATOSE) - ballMultiplier = 40; - #else - ballMultiplier = 10; - #endif + #if B_DREAM_BALL_MODIFIER >= GEN_8 + if (gBattleMons[gBattlerTarget].status1 & STATUS1_SLEEP || GetBattlerAbility(gBattlerTarget) == ABILITY_COMATOSE) + ballMultiplier = 40; + #else + ballMultiplier = 10; + #endif break; case ITEM_BEAST_BALL: ballMultiplier = 1; @@ -14210,13 +14264,11 @@ static const u16 sTelekinesisBanList[] = { SPECIES_DIGLETT, SPECIES_DUGTRIO, -// #ifdef NEW_POKEMON SPECIES_DIGLETT_ALOLAN, SPECIES_DUGTRIO_ALOLAN, SPECIES_SANDYGAST, SPECIES_PALOSSAND, SPECIES_GENGAR_MEGA, -// #endif }; bool32 IsTelekinesisBannedSpecies(u16 species) @@ -14354,33 +14406,33 @@ static void Cmd_metalburstdamagecalculator(void) static bool32 CriticalCapture(u32 odds) { - #if B_CRITICAL_CAPTURE == TRUE - u32 numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); +#if B_CRITICAL_CAPTURE == TRUE + u32 numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT); - if (numCaught <= (NATIONAL_DEX_COUNT * 30) / 650) - odds = 0; - else if (numCaught <= (NATIONAL_DEX_COUNT * 150) / 650) - odds /= 2; - else if (numCaught <= (NATIONAL_DEX_COUNT * 300) / 650) - ; // odds = (odds * 100) / 100; - else if (numCaught <= (NATIONAL_DEX_COUNT * 450) / 650) - odds = (odds * 150) / 100; - else if (numCaught <= (NATIONAL_DEX_COUNT * 600) / 650) - odds *= 2; - else - odds = (odds * 250) / 100; + if (numCaught <= (NATIONAL_DEX_COUNT * 30) / 650) + odds = 0; + else if (numCaught <= (NATIONAL_DEX_COUNT * 150) / 650) + odds /= 2; + else if (numCaught <= (NATIONAL_DEX_COUNT * 300) / 650) + ; // odds = (odds * 100) / 100; + else if (numCaught <= (NATIONAL_DEX_COUNT * 450) / 650) + odds = (odds * 150) / 100; + else if (numCaught <= (NATIONAL_DEX_COUNT * 600) / 650) + odds *= 2; + else + odds = (odds * 250) / 100; - #ifdef ITEM_CATCHING_CHARM - if (CheckBagHasItem(ITEM_CATCHING_CHARM, 1)) - odds = (odds * (100 + B_CATCHING_CHARM_BOOST)) / 100; - #endif - - odds /= 6; - if ((Random() % 255) < odds) - return TRUE; - - return FALSE; - #else - return FALSE; + #ifdef ITEM_CATCHING_CHARM + if (CheckBagHasItem(ITEM_CATCHING_CHARM, 1)) + odds = (odds * (100 + B_CATCHING_CHARM_BOOST)) / 100; #endif + + odds /= 6; + if ((Random() % 255) < odds) + return TRUE; + + return FALSE; +#else + return FALSE; +#endif } diff --git a/src/battle_util.c b/src/battle_util.c index fd9b699b8e..34999c4edd 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -57,6 +57,7 @@ functions instead of at the top of the file with the other declarations. static bool32 TryRemoveScreens(u8 battler); static bool32 IsUnnerveAbilityOnOpposingSide(u8 battlerId); +static u8 GetFlingPowerFromItemId(u16 itemId); extern const u8 *const gBattleScriptsForMoveEffects[]; extern const u8 *const gBattlescriptsForRunningByItem[]; @@ -2770,8 +2771,11 @@ u8 DoBattlerEndTurnEffects(void) && gBattleMons[gActiveBattler].hp != 0) { MAGIC_GUARD_CHECK; - - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (B_BURN_DAMAGE >= GEN_7 ? 16 : 8); + #if B_BURN_DAMAGE >= GEN_7 + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + #else + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + #endif if (ability == ABILITY_HEATPROOF) { if (gBattleMoveDamage > (gBattleMoveDamage / 2) + 1) // Record ability if the burn takes less damage than it normally would. @@ -2832,9 +2836,15 @@ u8 DoBattlerEndTurnEffects(void) PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleStruct->wrappedMove[gActiveBattler]); gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; if (GetBattlerHoldEffect(gBattleStruct->wrappedBy[gActiveBattler], TRUE) == HOLD_EFFECT_BINDING_BAND) - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / ((B_BINDING_DAMAGE >= GEN_6) ? 6 : 8); + #if B_BINDING_DAMAGE >= GEN_6 + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 6; else - gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / ((B_BINDING_DAMAGE >= GEN_6) ? 8 : 16); + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + #else + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8; + else + gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; + #endif if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -3025,7 +3035,11 @@ u8 DoBattlerEndTurnEffects(void) } else { - gBattleMons[gActiveBattler].status1 |= (B_SLEEP_TURNS >= GEN_5) ? ((Random() % 3) + 2) : ((Random() % 4) + 3); + #if B_SLEEP_TURNS >= GEN_5 + gBattleMons[gActiveBattler].status1 |= ((Random() % 3) + 2); + #else + gBattleMons[gActiveBattler].status1 |= ((Random() % 4) + 3); + #endif BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); BattleScriptExecute(BattleScript_YawnMakesAsleep); @@ -3290,7 +3304,7 @@ bool8 HandleFaintedMonActions(void) gBattleStruct->faintedActionsState = 3; else gBattleStruct->faintedActionsState = 1; - #if B_FAINT_SWITCH_IN >= GEN_4 + #if B_FAINT_SWITCH_IN >= GEN_4 // Don't switch mons until all pokemon performed their actions or the battle's over. if (gBattleOutcome == 0 && !NoAliveMonsForEitherParty() @@ -3299,10 +3313,10 @@ bool8 HandleFaintedMonActions(void) gAbsentBattlerFlags |= gBitTable[gBattlerFainted]; return FALSE; } - #endif + #endif break; case 3: - #if B_FAINT_SWITCH_IN >= GEN_4 + #if B_FAINT_SWITCH_IN >= GEN_4 // Don't switch mons until all pokemon performed their actions or the battle's over. if (gBattleOutcome == 0 && !NoAliveMonsForEitherParty() @@ -3310,7 +3324,7 @@ bool8 HandleFaintedMonActions(void) { return FALSE; } - #endif + #endif gBattleStruct->faintedActionsBattlerId = 0; gBattleStruct->faintedActionsState++; // fall through @@ -3572,7 +3586,12 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleMons[gBattlerAttacker].status2 -= STATUS2_CONFUSION_TURN(1); if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { - if (Random() % ((B_CONFUSION_SELF_DMG_CHANCE >= GEN_7) ? 3 : 2) == 0) // confusion dmg + // confusion dmg + #if B_CONFUSION_SELF_DMG_CHANCE >= GEN_7 + if (Random() % 3 == 0) + #else + if (Random() % 2 == 0) + #endif { gBattleCommunication[MULTISTRING_CHOOSER] = TRUE; gBattlerTarget = gBattlerAttacker; @@ -3675,8 +3694,11 @@ u8 AtkCanceller_UnableToUseMove(void) case CANCELLER_POWDER_MOVE: if ((gBattleMoves[gCurrentMove].flags & FLAG_POWDER) && (gBattlerAttacker != gBattlerTarget)) { - if ((B_POWDER_GRASS >= GEN_6 && IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS)) - || GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) + #if B_POWDER_GRASS >= GEN_6 + if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) || GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) + #else + if (GetBattlerAbility(gBattlerTarget) == ABILITY_OVERCOAT) + #endif { gBattlerAbility = gBattlerTarget; effect = 1; @@ -4003,19 +4025,20 @@ bool32 TryChangeBattleWeather(u8 battler, u32 weatherEnumId, bool32 viaAbility) { u16 battlerAbility = GetBattlerAbility(battler); - if (viaAbility && B_ABILITY_WEATHER <= GEN_5 - && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1])) + if (gBattleWeather & B_WEATHER_PRIMAL_ANY + && battlerAbility != ABILITY_DESOLATE_LAND + && battlerAbility != ABILITY_PRIMORDIAL_SEA + && battlerAbility != ABILITY_DELTA_STREAM) + { + return FALSE; + } +#if B_ABILITY_WEATHER <= GEN_5 + else if (viaAbility && !(gBattleWeather & sWeatherFlagsInfo[weatherEnumId][1])) { gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]); return TRUE; } - else if (gBattleWeather & B_WEATHER_PRIMAL_ANY - && battlerAbility != ABILITY_DESOLATE_LAND - && battlerAbility != ABILITY_PRIMORDIAL_SEA - && battlerAbility != ABILITY_DELTA_STREAM) - { - return FALSE; - } +#endif else if (!(gBattleWeather & (sWeatherFlagsInfo[weatherEnumId][0] | sWeatherFlagsInfo[weatherEnumId][1]))) { gBattleWeather = (sWeatherFlagsInfo[weatherEnumId][0]); @@ -4214,7 +4237,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - #if B_THUNDERSTORM_TERRAIN == TRUE + #if B_THUNDERSTORM_TERRAIN == TRUE else if (GetCurrentWeather() == WEATHER_RAIN_THUNDERSTORM && !(gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)) { // overworld weather started rain, so just do electric terrain anim @@ -4223,7 +4246,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move BattleScriptPushCursorAndCallback(BattleScript_OverworldTerrain); effect++; } - #endif + #endif break; case ABILITYEFFECT_SWITCH_IN_WEATHER: if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED)) @@ -4745,7 +4768,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (gDisableStructs[battler].isFirstTurn != 2) { u32 validToRaise = 0, validToLower = 0; - u32 statsNum = (B_MOODY_ACC_EVASION != GEN_8) ? NUM_BATTLE_STATS : NUM_STATS; + #if B_MOODY_ACC_EVASION < GEN_8 + u32 statsNum = NUM_BATTLE_STATS; + #else + u32 statsNum = NUM_STATS; + #endif for (i = STAT_ATK; i < statsNum; i++) { @@ -4932,7 +4959,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move effect = 2, statId = STAT_ATK; break; case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE && !((gBattleMons[battler].status1 & STATUS1_FREEZE) && B_FLASH_FIRE_FROZEN <= GEN_4)) + if (moveType == TYPE_FIRE + #if B_FLASH_FIRE_FROZEN <= GEN_4 + && !(gBattleMons[battler].status1 & STATUS1_FREEZE) + #endif + ) { if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) { @@ -5958,15 +5989,15 @@ u32 IsAbilityOnFieldExcept(u32 battlerId, u32 ability) u32 IsAbilityPreventingEscape(u32 battlerId) { u32 id; - #if B_GHOSTS_ESCAPE >= GEN_6 - if (IS_BATTLER_OF_TYPE(battlerId, TYPE_GHOST)) - return 0; - #endif - #if B_SHADOW_TAG_ESCAPE >= GEN_4 - if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) && GetBattlerAbility(battlerId) != ABILITY_SHADOW_TAG) - #else - if (id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) - #endif +#if B_GHOSTS_ESCAPE >= GEN_6 + if (IS_BATTLER_OF_TYPE(battlerId, TYPE_GHOST)) + return 0; +#endif +#if B_SHADOW_TAG_ESCAPE >= GEN_4 + if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) && GetBattlerAbility(battlerId) != ABILITY_SHADOW_TAG) +#else + if (id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) +#endif return id; if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_ARENA_TRAP)) && IsBattlerGrounded(battlerId)) return id; @@ -5980,7 +6011,11 @@ bool32 CanBattlerEscape(u32 battlerId) // no ability check { if (GetBattlerHoldEffect(battlerId, TRUE) == HOLD_EFFECT_SHED_SHELL) return TRUE; - else if ((B_GHOSTS_ESCAPE >= GEN_6 && !IS_BATTLER_OF_TYPE(battlerId, TYPE_GHOST)) && gBattleMons[battlerId].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) +#if B_GHOSTS_ESCAPE >= GEN_6 + else if (IS_BATTLER_OF_TYPE(battlerId, TYPE_GHOST)) + return TRUE; +#endif + else if (gBattleMons[battlerId].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) return FALSE; else if (gStatuses3[battlerId] & STATUS3_ROOTED) return FALSE; @@ -6078,13 +6113,16 @@ bool32 CanBeBurned(u8 battlerId) bool32 CanBeParalyzed(u8 battlerId) { u16 ability = GetBattlerAbility(battlerId); - if ((B_PARALYZE_ELECTRIC >= GEN_6 && IS_BATTLER_OF_TYPE(battlerId, TYPE_ELECTRIC)) - || gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_SAFEGUARD - || ability == ABILITY_LIMBER - || ability == ABILITY_COMATOSE - || gBattleMons[battlerId].status1 & STATUS1_ANY - || IsAbilityStatusProtected(battlerId) - || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN)) + if ( + #if B_PARALYZE_ELECTRIC >= GEN_6 + IS_BATTLER_OF_TYPE(battlerId, TYPE_ELECTRIC) || + #endif + gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_SAFEGUARD + || ability == ABILITY_LIMBER + || ability == ABILITY_COMATOSE + || gBattleMons[battlerId].status1 & STATUS1_ANY + || IsAbilityStatusProtected(battlerId) + || IsBattlerTerrainAffected(battlerId, STATUS_FIELD_MISTY_TERRAIN)) return FALSE; return TRUE; } @@ -6146,11 +6184,11 @@ bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId) static u8 HealConfuseBerry(u32 battlerId, u32 itemId, u8 flavorId, bool32 end2) { + if (HasEnoughHpToEatBerry(battlerId, CONFUSE_BERRY_HP_FRACTION, itemId) #if B_HEAL_BLOCKING >= GEN_5 - if (HasEnoughHpToEatBerry(battlerId, CONFUSE_BERRY_HP_FRACTION, itemId) && !(gStatuses3[battlerId] & STATUS3_HEAL_BLOCK)) -#else - if (HasEnoughHpToEatBerry(battlerId, CONFUSE_BERRY_HP_FRACTION, itemId)) + && !(gStatuses3[battlerId] & STATUS3_HEAL_BLOCK) #endif + ) { PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavorId); @@ -6338,12 +6376,11 @@ u8 TryHandleSeed(u8 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 exec static u8 ItemHealHp(u32 battlerId, u32 itemId, bool32 end2, bool32 percentHeal) { -#if B_HEAL_BLOCKING >= GEN_5 - if (HasEnoughHpToEatBerry(battlerId, 2, itemId) && !(gStatuses3[battlerId] & STATUS3_HEAL_BLOCK) -#else - if (HasEnoughHpToEatBerry(battlerId, 2, itemId) -#endif - && !(gBattleScripting.overrideBerryRequirements && gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP)) + if (!(gBattleScripting.overrideBerryRequirements && gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP) + #if B_HEAL_BLOCKING >= GEN_5 + && !(gStatuses3[battlerId] & STATUS3_HEAL_BLOCK) + #endif + && HasEnoughHpToEatBerry(battlerId, 2, itemId)) { if (percentHeal) gBattleMoveDamage = (gBattleMons[battlerId].maxHP * GetBattlerHoldEffectParam(battlerId) / 100) * -1; @@ -6388,46 +6425,46 @@ static bool32 GetMentalHerbEffect(u8 battlerId) StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); ret = TRUE; } - #if B_MENTAL_HERB >= GEN_5 - // Check taunt - if (gDisableStructs[battlerId].tauntTimer != 0) - { - gDisableStructs[battlerId].tauntTimer = gDisableStructs[battlerId].tauntTimer2 = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TAUNT; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); - ret = TRUE; - } - // Check encore - if (gDisableStructs[battlerId].encoreTimer != 0) - { - gDisableStructs[battlerId].encoredMove = 0; - gDisableStructs[battlerId].encoreTimerStartValue = gDisableStructs[battlerId].encoreTimer = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_ENCORE; // STRINGID_PKMNENCOREENDED - ret = TRUE; - } - // Check torment - if (gBattleMons[battlerId].status2 & STATUS2_TORMENT) - { - gBattleMons[battlerId].status2 &= ~STATUS2_TORMENT; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TORMENT; - ret = TRUE; - } - // Check heal block - if (gStatuses3[battlerId] & STATUS3_HEAL_BLOCK) - { - gStatuses3[battlerId] &= ~STATUS3_HEAL_BLOCK; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_HEALBLOCK; - ret = TRUE; - } - // Check disable - if (gDisableStructs[battlerId].disableTimer != 0) - { - gDisableStructs[battlerId].disableTimer = gDisableStructs[battlerId].disableTimerStartValue = 0; - gDisableStructs[battlerId].disabledMove = 0; - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_DISABLE; - ret = TRUE; - } - #endif +#if B_MENTAL_HERB >= GEN_5 + // Check taunt + if (gDisableStructs[battlerId].tauntTimer != 0) + { + gDisableStructs[battlerId].tauntTimer = gDisableStructs[battlerId].tauntTimer2 = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TAUNT; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_TAUNT); + ret = TRUE; + } + // Check encore + if (gDisableStructs[battlerId].encoreTimer != 0) + { + gDisableStructs[battlerId].encoredMove = 0; + gDisableStructs[battlerId].encoreTimerStartValue = gDisableStructs[battlerId].encoreTimer = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_ENCORE; // STRINGID_PKMNENCOREENDED + ret = TRUE; + } + // Check torment + if (gBattleMons[battlerId].status2 & STATUS2_TORMENT) + { + gBattleMons[battlerId].status2 &= ~STATUS2_TORMENT; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_TORMENT; + ret = TRUE; + } + // Check heal block + if (gStatuses3[battlerId] & STATUS3_HEAL_BLOCK) + { + gStatuses3[battlerId] &= ~STATUS3_HEAL_BLOCK; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_HEALBLOCK; + ret = TRUE; + } + // Check disable + if (gDisableStructs[battlerId].disableTimer != 0) + { + gDisableStructs[battlerId].disableTimer = gDisableStructs[battlerId].disableTimerStartValue = 0; + gDisableStructs[battlerId].disabledMove = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MENTALHERBCURE_DISABLE; + ret = TRUE; + } +#endif return ret; } @@ -6478,48 +6515,39 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) BattleScriptExecute(BattleScript_WhiteHerbEnd2); } break; + #if B_BERRIES_INSTANT >= GEN_4 case HOLD_EFFECT_CONFUSE_SPICY: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SPICY, TRUE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SPICY, TRUE); break; case HOLD_EFFECT_CONFUSE_DRY: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_DRY, TRUE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_DRY, TRUE); break; case HOLD_EFFECT_CONFUSE_SWEET: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SWEET, TRUE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SWEET, TRUE); break; case HOLD_EFFECT_CONFUSE_BITTER: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_BITTER, TRUE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_BITTER, TRUE); break; case HOLD_EFFECT_CONFUSE_SOUR: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SOUR, TRUE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SOUR, TRUE); break; case HOLD_EFFECT_ATTACK_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_ATK, TRUE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_ATK, TRUE); break; case HOLD_EFFECT_DEFENSE_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_DEF, TRUE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_DEF, TRUE); break; case HOLD_EFFECT_SPEED_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPEED, TRUE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPEED, TRUE); break; case HOLD_EFFECT_SP_ATTACK_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPATK, TRUE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPATK, TRUE); break; case HOLD_EFFECT_SP_DEFENSE_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPDEF, TRUE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPDEF, TRUE); break; case HOLD_EFFECT_CRITICAL_UP: - if (B_BERRIES_INSTANT >= GEN_4 && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY) && HasEnoughHpToEatBerry(battlerId, GetBattlerHoldEffectParam(battlerId), gLastUsedItem)) + if (!(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY) && HasEnoughHpToEatBerry(battlerId, GetBattlerHoldEffectParam(battlerId), gLastUsedItem)) { gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY; BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2); @@ -6527,11 +6555,10 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_RANDOM_STAT_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = RandomStatRaiseBerry(battlerId, gLastUsedItem, TRUE); + effect = RandomStatRaiseBerry(battlerId, gLastUsedItem, TRUE); break; case HOLD_EFFECT_CURE_PAR: - if (B_BERRIES_INSTANT >= GEN_4 && gBattleMons[battlerId].status1 & STATUS1_PARALYSIS && !UnnerveOn(battlerId, gLastUsedItem)) + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS && !UnnerveOn(battlerId, gLastUsedItem)) { gBattleMons[battlerId].status1 &= ~STATUS1_PARALYSIS; BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); @@ -6539,7 +6566,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_PSN: - if (B_BERRIES_INSTANT >= GEN_4 && gBattleMons[battlerId].status1 & STATUS1_PSN_ANY && !UnnerveOn(battlerId, gLastUsedItem)) + if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY && !UnnerveOn(battlerId, gLastUsedItem)) { gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER); BattleScriptExecute(BattleScript_BerryCurePsnEnd2); @@ -6547,7 +6574,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_BRN: - if (B_BERRIES_INSTANT >= GEN_4 && gBattleMons[battlerId].status1 & STATUS1_BURN && !UnnerveOn(battlerId, gLastUsedItem)) + if (gBattleMons[battlerId].status1 & STATUS1_BURN && !UnnerveOn(battlerId, gLastUsedItem)) { gBattleMons[battlerId].status1 &= ~STATUS1_BURN; BattleScriptExecute(BattleScript_BerryCureBrnEnd2); @@ -6555,7 +6582,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_FRZ: - if (B_BERRIES_INSTANT >= GEN_4 && gBattleMons[battlerId].status1 & STATUS1_FREEZE && !UnnerveOn(battlerId, gLastUsedItem)) + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE && !UnnerveOn(battlerId, gLastUsedItem)) { gBattleMons[battlerId].status1 &= ~STATUS1_FREEZE; BattleScriptExecute(BattleScript_BerryCureFrzEnd2); @@ -6563,7 +6590,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_SLP: - if (B_BERRIES_INSTANT >= GEN_4 && gBattleMons[battlerId].status1 & STATUS1_SLEEP && !UnnerveOn(battlerId, gLastUsedItem)) + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP && !UnnerveOn(battlerId, gLastUsedItem)) { gBattleMons[battlerId].status1 &= ~STATUS1_SLEEP; gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; @@ -6572,7 +6599,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CURE_STATUS: - if (B_BERRIES_INSTANT >= GEN_4 && (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION) && !UnnerveOn(battlerId, gLastUsedItem)) + if ((gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION) && !UnnerveOn(battlerId, gLastUsedItem)) { i = 0; if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) @@ -6617,13 +6644,12 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_RESTORE_HP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = ItemHealHp(battlerId, gLastUsedItem, TRUE, FALSE); + effect = ItemHealHp(battlerId, gLastUsedItem, TRUE, FALSE); break; case HOLD_EFFECT_RESTORE_PCT_HP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = ItemHealHp(battlerId, gLastUsedItem, TRUE, TRUE); + effect = ItemHealHp(battlerId, gLastUsedItem, TRUE, TRUE); break; + #endif case HOLD_EFFECT_AIR_BALLOON: effect = ITEM_EFFECT_OTHER; gBattleScripting.battler = battlerId; @@ -6984,62 +7010,52 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) DO_ITEMEFFECT_MOVE_END: switch (battlerHoldEffect) { + #if B_HP_BERRIES >= GEN_4 case HOLD_EFFECT_MICLE_BERRY: - if (B_HP_BERRIES >= GEN_4) - effect = TrySetMicleBerry(battlerId, gLastUsedItem, FALSE); + effect = TrySetMicleBerry(battlerId, gLastUsedItem, FALSE); break; case HOLD_EFFECT_RESTORE_HP: - if (B_HP_BERRIES >= GEN_4) - effect = ItemHealHp(battlerId, gLastUsedItem, FALSE, FALSE); + effect = ItemHealHp(battlerId, gLastUsedItem, FALSE, FALSE); break; + #endif + #if B_BERRIES_INSTANT >= GEN_4 case HOLD_EFFECT_RESTORE_PCT_HP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = ItemHealHp(battlerId, gLastUsedItem, FALSE, TRUE); + effect = ItemHealHp(battlerId, gLastUsedItem, FALSE, TRUE); break; case HOLD_EFFECT_CONFUSE_SPICY: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SPICY, FALSE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SPICY, FALSE); break; case HOLD_EFFECT_CONFUSE_DRY: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_DRY, FALSE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_DRY, FALSE); break; case HOLD_EFFECT_CONFUSE_SWEET: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SWEET, FALSE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SWEET, FALSE); break; case HOLD_EFFECT_CONFUSE_BITTER: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_BITTER, FALSE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_BITTER, FALSE); break; case HOLD_EFFECT_CONFUSE_SOUR: - if (B_BERRIES_INSTANT >= GEN_4) - effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SOUR, FALSE); + effect = HealConfuseBerry(battlerId, gLastUsedItem, FLAVOR_SOUR, FALSE); break; case HOLD_EFFECT_ATTACK_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_ATK, FALSE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_ATK, FALSE); break; case HOLD_EFFECT_DEFENSE_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_DEF, FALSE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_DEF, FALSE); break; case HOLD_EFFECT_SPEED_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPEED, FALSE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPEED, FALSE); break; case HOLD_EFFECT_SP_ATTACK_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPATK, FALSE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPATK, FALSE); break; case HOLD_EFFECT_SP_DEFENSE_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPDEF, FALSE); + effect = StatRaiseBerry(battlerId, gLastUsedItem, STAT_SPDEF, FALSE); break; case HOLD_EFFECT_RANDOM_STAT_UP: - if (B_BERRIES_INSTANT >= GEN_4) - effect = RandomStatRaiseBerry(battlerId, gLastUsedItem, FALSE); + effect = RandomStatRaiseBerry(battlerId, gLastUsedItem, FALSE); break; + #endif case HOLD_EFFECT_CURE_PAR: if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS && !UnnerveOn(battlerId, gLastUsedItem)) { @@ -7173,10 +7189,10 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) switch (atkHoldEffect) { case HOLD_EFFECT_FLINCH: - #if B_SERENE_GRACE_BOOST >= GEN_5 - if (GetBattlerAbility(gBattlerAttacker) == ABILITY_SERENE_GRACE) - atkHoldEffectParam *= 2; - #endif + #if B_SERENE_GRACE_BOOST >= GEN_5 + if (GetBattlerAbility(gBattlerAttacker) == ABILITY_SERENE_GRACE) + atkHoldEffectParam *= 2; + #endif if (gBattleMoveDamage != 0 // Need to have done damage && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED @@ -7722,9 +7738,12 @@ u32 GetBattlerHoldEffect(u8 battlerId, bool32 checkNegating) gPotentialItemEffectBattler = battlerId; - if (B_ENABLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId] != 0 && gBattleMons[battlerId].item) +#if B_ENABLE_DEBUG == TRUE + if (gBattleStruct->debugHoldEffects[battlerId] != 0 && gBattleMons[battlerId].item) return gBattleStruct->debugHoldEffects[battlerId]; - else if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) + else +#endif + if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) return gEnigmaBerries[battlerId].holdEffect; else return ItemId_GetHoldEffect(gBattleMons[battlerId].item); @@ -8058,7 +8077,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) // todo break; case EFFECT_FLING: - basePower = ItemId_GetFlingPower(gBattleMons[battlerAtk].item); + basePower = GetFlingPowerFromItemId(gBattleMons[battlerAtk].item); break; case EFFECT_ERUPTION: basePower = gBattleMons[battlerAtk].hp * basePower / gBattleMons[battlerAtk].maxHP; @@ -8202,7 +8221,10 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) break; case EFFECT_PAYBACK: if (GetBattlerTurnOrderNum(battlerAtk) > GetBattlerTurnOrderNum(battlerDef) - && (gDisableStructs[battlerDef].isFirstTurn != 2 || B_PAYBACK_SWITCH_BOOST < GEN_5)) + #if B_PAYBACK_SWITCH_BOOST >= GEN_5 + && (gDisableStructs[battlerDef].isFirstTurn != 2) + #endif + ) basePower *= 2; break; case EFFECT_BOLT_BEAK: @@ -8488,11 +8510,11 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_SOUL_DEW: - #if B_SOUL_DEW_BOOST >= GEN_7 + #if B_SOUL_DEW_BOOST >= GEN_7 if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && (moveType == TYPE_PSYCHIC || moveType == TYPE_DRAGON)) - #else + #else if ((gBattleMons[battlerAtk].species == SPECIES_LATIAS || gBattleMons[battlerAtk].species == SPECIES_LATIOS) && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && IS_MOVE_SPECIAL(move)) - #endif + #endif MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_GEMS: @@ -8575,6 +8597,12 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe break; } +#if B_TERRAIN_TYPE_BOOST >= GEN_8 + #define TERRAIN_TYPE_BOOST UQ_4_12(1.3) +#else + #define TERRAIN_TYPE_BOOST UQ_4_12(1.5) +#endif + // various effecs if (gProtectStructs[battlerAtk].helpingHand) MulModifier(&modifier, UQ_4_12(1.5)); @@ -8583,24 +8611,28 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe if (gStatuses3[battlerAtk] & STATUS3_ME_FIRST) MulModifier(&modifier, UQ_4_12(1.5)); if (gFieldStatuses & STATUS_FIELD_GRASSY_TERRAIN && moveType == TYPE_GRASS && IsBattlerGrounded(battlerAtk) && !(gStatuses3[battlerAtk] & STATUS3_SEMI_INVULNERABLE)) - MulModifier(&modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8) ? UQ_4_12(1.3) : UQ_4_12(1.5)); + MulModifier(&modifier, TERRAIN_TYPE_BOOST); if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN && moveType == TYPE_DRAGON && IsBattlerGrounded(battlerDef) && !(gStatuses3[battlerDef] & STATUS3_SEMI_INVULNERABLE)) MulModifier(&modifier, UQ_4_12(0.5)); if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN && moveType == TYPE_ELECTRIC && IsBattlerGrounded(battlerAtk) && !(gStatuses3[battlerAtk] & STATUS3_SEMI_INVULNERABLE)) - MulModifier(&modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8) ? UQ_4_12(1.3) : UQ_4_12(1.5)); + MulModifier(&modifier, TERRAIN_TYPE_BOOST); if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN && moveType == TYPE_PSYCHIC && IsBattlerGrounded(battlerAtk) && !(gStatuses3[battlerAtk] & STATUS3_SEMI_INVULNERABLE)) - MulModifier(&modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8) ? UQ_4_12(1.3) : UQ_4_12(1.5)); + MulModifier(&modifier, TERRAIN_TYPE_BOOST); #if B_SPORT_TURNS >= GEN_6 - if ((gFieldStatuses & STATUS_FIELD_MUDSPORT && moveType == TYPE_ELECTRIC) - || (gFieldStatuses & STATUS_FIELD_WATERSPORT && moveType == TYPE_FIRE)) - MulModifier(&modifier, (B_SPORT_DMG_REDUCTION >= GEN_5) ? UQ_4_12(0.23) : UQ_4_12(0.5)); + if ((moveType == TYPE_ELECTRIC && gFieldStatuses & STATUS_FIELD_MUDSPORT) + || (moveType == TYPE_FIRE && gFieldStatuses & STATUS_FIELD_WATERSPORT)) #else if ((moveType == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_MUD_SPORT, 0)) - || (moveType == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_WATER_SPORT, 0))) - MulModifier(&modifier, (B_SPORT_DMG_REDUCTION >= GEN_5) ? UQ_4_12(0.23) : UQ_4_12(0.5)); + || (moveType == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, ABILITYEFFECT_WATER_SPORT, 0))) + #endif + #if B_SPORT_DMG_REDUCTION >= GEN_5 + MulModifier(&modifier, UQ_4_12(0.23)); + #else + MulModifier(&modifier, UQ_4_12(0.5)); #endif return ApplyModifier(modifier, basePower); } +#undef TERRAIN_TYPE_BOOST static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, bool32 isCrit, bool32 updateFlags) { @@ -8976,11 +9008,17 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move // check crit if (isCrit) - dmg = ApplyModifier((B_CRIT_MULTIPLIER >= GEN_6 ? UQ_4_12(1.5) : UQ_4_12(2.0)), dmg); + #if B_CRIT_MULTIPLIER >= GEN_6 + dmg = ApplyModifier(UQ_4_12(1.5), dmg); + #else + dmg = ApplyModifier(UQ_4_12(2.0), dmg); + #endif // check burn if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && IS_MOVE_PHYSICAL(move) - && (gBattleMoves[move].effect != EFFECT_FACADE || B_BURN_FACADE_DMG < GEN_6) + #if B_BURN_FACADE_DMG >= GEN_6 + && gBattleMoves[move].effect != EFFECT_FACADE + #endif && abilityAtk != ABILITY_GUTS) dmg = ApplyModifier(UQ_4_12(0.5), dmg); @@ -9254,14 +9292,18 @@ static u16 CalcTypeEffectivenessMultiplierInternal(u16 move, u8 moveType, u8 bat RecordAbilityBattle(battlerDef, ABILITY_LEVITATE); } } - else if (B_SHEER_COLD_IMMUNITY >= GEN_7 && move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) +#if B_SHEER_COLD_IMMUNITY >= GEN_7 + else if (move == MOVE_SHEER_COLD && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE)) { modifier = UQ_4_12(0.0); } - else if (B_GLARE_GHOST >= GEN_4 && move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) +#endif +#if B_GLARE_GHOST >= GEN_4 + else if (move == MOVE_GLARE && IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST)) { modifier = UQ_4_12(1.0); } +#endif // Thousand Arrows ignores type modifiers for flying mons if (!IsBattlerGrounded(battlerDef) && (gBattleMoves[move].flags & FLAG_DMG_UNGROUNDED_IGNORE_TYPE_IF_FLYING) @@ -9327,10 +9369,11 @@ u16 CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilit u16 GetTypeModifier(u8 atkType, u8 defType) { - if (B_FLAG_INVERSE_BATTLE != 0 && FlagGet(B_FLAG_INVERSE_BATTLE)) +#if B_FLAG_INVERSE_BATTLE != 0 + if (FlagGet(B_FLAG_INVERSE_BATTLE)) return sInverseTypeEffectivenessTable[atkType][defType]; - else - return sTypeEffectivenessTable[atkType][defType]; +#endif + return sTypeEffectivenessTable[atkType][defType]; } s32 GetStealthHazardDamage(u8 hazardType, u8 battlerId) @@ -9476,9 +9519,12 @@ bool32 CanMegaEvolve(u8 battlerId) // Check if there is an entry in the evolution table for regular Mega Evolution. if (GetMegaEvolutionSpecies(species, itemId) != SPECIES_NONE) { + #if B_ENABLE_DEBUG == TRUE if (B_ENABLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId]) holdEffect = gBattleStruct->debugHoldEffects[battlerId]; - else if (itemId == ITEM_ENIGMA_BERRY_E_READER) + else + #endif + if (itemId == ITEM_ENIGMA_BERRY_E_READER) holdEffect = gEnigmaBerries[battlerId].holdEffect; else holdEffect = ItemId_GetHoldEffect(itemId); @@ -9679,9 +9725,8 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battlerId) bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId) { - if (B_BADGE_BOOST != GEN_3) - return FALSE; - else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) +#if B_BADGE_BOOST != GEN_3 + if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER)) return FALSE; else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) return FALSE; @@ -9689,8 +9734,8 @@ bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId) return FALSE; else if (FlagGet(badgeFlag)) return TRUE; - else - return FALSE; +#endif + return FALSE; } u8 GetBattleMoveSplit(u32 moveId) @@ -9699,12 +9744,17 @@ u8 GetBattleMoveSplit(u32 moveId) return gBattleStruct->zmove.activeSplit; if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky return SPLIT_PHYSICAL; - else if (IS_MOVE_STATUS(moveId) || B_PHYSICAL_SPECIAL_SPLIT >= GEN_4) - return gBattleMoves[moveId].split; + +#if B_PHYSICAL_SPECIAL_SPLIT >= GEN_4 + return gBattleMoves[moveId].split; +#else + if (IS_MOVE_STATUS(moveId)) + return SPLIT_STATUS; else if (gBattleMoves[moveId].type < TYPE_MYSTERY) return SPLIT_PHYSICAL; else return SPLIT_SPECIAL; +#endif } static bool32 TryRemoveScreens(u8 battler) @@ -9781,6 +9831,19 @@ struct Pokemon *GetBattlerPartyData(u8 battlerId) return mon; } +static u8 GetFlingPowerFromItemId(u16 itemId) +{ + if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08) + { + u8 power = gBattleMoves[ItemIdToBattleMoveId(itemId)].power; + if (power > 1) + return power; + return 10; // Status moves and moves with variable power always return 10 power. + } + else + return ItemId_GetFlingPower(itemId); +} + // Make sure the input bank is any bank on the specific mon's side bool32 CanFling(u8 battlerId) { @@ -9793,7 +9856,7 @@ bool32 CanFling(u8 battlerId) #endif || gFieldStatuses & STATUS_FIELD_MAGIC_ROOM || gDisableStructs[battlerId].embargoTimer != 0 - || ItemId_GetFlingPower(item) != 0 + || GetFlingPowerFromItemId(item) != 0 || !CanBattlerGetOrLoseItem(battlerId, item)) return FALSE; @@ -9949,7 +10012,7 @@ bool32 CanStealItem(u8 battlerStealing, u8 battlerItem, u16 item) | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_SECRET_BASE - #if B_TRAINERS_KNOCK_OFF_ITEMS + #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE | BATTLE_TYPE_TRAINER #endif ))) @@ -9978,14 +10041,14 @@ void TrySaveExchangedItem(u8 battlerId, u16 stolenItem) { // Because BtlController_EmitSetMonData does SetMonData, we need to save the stolen item only if it matches the battler's original // So, if the player steals an item during battle and has it stolen from it, it will not end the battle with it (naturally) - #if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE +#if B_TRAINERS_KNOCK_OFF_ITEMS == TRUE // If regular trainer battle and mon's original item matches what is being stolen, save it to be restored at end of battle if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_FRONTIER) && GetBattlerSide(battlerId) == B_SIDE_PLAYER && stolenItem == gBattleStruct->itemStolen[gBattlerPartyIndexes[battlerId]].originalItem) gBattleStruct->itemStolen[gBattlerPartyIndexes[battlerId]].stolen = TRUE; - #endif +#endif } bool32 IsBattlerAffectedByHazards(u8 battlerId, bool32 toxicSpikes) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index efa1e6e18c..d41e28ac23 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -58,7 +58,6 @@ static u8 GetZMoveScore(u8 battlerAtk, u8 battlerDef, u16 baseMove, u16 zMove); // Const Data static const struct SignatureZMove sSignatureZMoves[] = { -// #ifdef NEW_POKEMON {SPECIES_PIKACHU_COSPLAY, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, {SPECIES_PIKACHU_ROCK_STAR, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, {SPECIES_PIKACHU_BELLE, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, @@ -95,7 +94,6 @@ static const struct SignatureZMove sSignatureZMoves[] = {SPECIES_TAPU_LELE, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, {SPECIES_TAPU_FINI, ITEM_TAPUNIUM_Z, MOVE_NATURES_MADNESS, MOVE_GUARDIAN_OF_ALOLA}, {SPECIES_NECROZMA_ULTRA, ITEM_ULTRANECROZIUM_Z, MOVE_PHOTON_GEYSER, MOVE_LIGHT_THAT_BURNS_THE_SKY}, -// #endif {SPECIES_MEW, ITEM_MEWNIUM_Z, MOVE_PSYCHIC, MOVE_GENESIS_SUPERNOVA}, {SPECIES_PIKACHU, ITEM_PIKANIUM_Z, MOVE_VOLT_TACKLE, MOVE_CATASTROPIKA}, {SPECIES_EEVEE, ITEM_EEVIUM_Z, MOVE_LAST_RESORT, MOVE_EXTREME_EVOBOOST}, @@ -189,10 +187,13 @@ bool32 IsViableZMove(u8 battlerId, u16 move) if (IsPartnerMonFromSameTrainer(battlerId) && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battlerId)]))) return FALSE; // Partner has mega evolved or is about to mega evolve } - - if (B_ENABLE_DEBUG && gBattleStruct->debugHoldEffects[battlerId]) + +#if B_ENABLE_DEBUG == TRUE + if (gBattleStruct->debugHoldEffects[battlerId]) holdEffect = gBattleStruct->debugHoldEffects[battlerId]; - else if (item == ITEM_ENIGMA_BERRY) + else +#endif + if (item == ITEM_ENIGMA_BERRY) return FALSE; // HoldEffect = gEnigmaBerries[battlerId].holdEffect; else holdEffect = ItemId_GetHoldEffect(item); diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 62f3802a5c..b8fb8c0378 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1014,16 +1014,16 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, - #if B_NEW_SWORD_PARTICLE +#if B_NEW_SWORD_PARTICLE {gBattleAnimSpriteGfx_NewSword, 0x0400, ANIM_TAG_SWORD}, - #else +#else {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, - #endif - #if B_NEW_LEECH_SEED_PARTICLE +#endif +#if B_NEW_LEECH_SEED_PARTICLE {gBattleAnimSpriteGfx_NewLeechSeed, 0x0180, ANIM_TAG_SEED}, - #else +#else {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, - #endif +#endif {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, @@ -1046,11 +1046,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, - #if B_NEW_EMBER_PARTICLES +#if B_NEW_EMBER_PARTICLES {gBattleAnimSpriteGfx_NewEmbers, 0x0A00, ANIM_TAG_SMALL_EMBER}, - #else +#else {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, - #endif +#endif {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, @@ -1079,20 +1079,20 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, - #if NEW_ROCKS_PARTICLE +#if NEW_ROCKS_PARTICLE {gBattleAnimSpriteGfx_NewRocks, 0x0C00, ANIM_TAG_ROCKS}, - #else +#else {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, - #endif +#endif {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, - #if B_NEW_LEAF_PARTICLE +#if B_NEW_LEAF_PARTICLE {gBattleAnimSpriteGfx_NewLeaf, 0x0480, ANIM_TAG_LEAF}, - #else +#else {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, - #endif +#endif {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, @@ -1156,11 +1156,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, - #if NEW_SUBSTITUTE_PARTICLE +#if NEW_SUBSTITUTE_PARTICLE {gBattleAnimSpriteGfx_NewSubstituteFront, 0x0200, ANIM_TAG_MONSTER_DOLL}, - #else +#else {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, - #endif +#endif {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, @@ -1172,19 +1172,19 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, - #if B_NEW_TEETH_PARTICLE +#if B_NEW_TEETH_PARTICLE {gBattleAnimSpriteGfx_NewTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, - #else +#else {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, - #endif +#endif {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, - #if B_NEW_HANDS_FEET_PARTICLE +#if B_NEW_HANDS_FEET_PARTICLE {gBattleAnimSpriteGfx_NewHandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, - #else +#else {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, - #endif +#endif {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, @@ -1193,19 +1193,19 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, - #if B_NEW_SPIKES_PARTICLE +#if B_NEW_SPIKES_PARTICLE {gBattleAnimSpriteGfx_NewSpikes, 0x0080, ANIM_TAG_SPIKES}, - #else +#else {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, - #endif +#endif {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, - #if B_NEW_FLY_BUBBLE_PARTICLE +#if B_NEW_FLY_BUBBLE_PARTICLE {gBattleAnimSpriteGfx_NewFly, 0x0800, ANIM_TAG_ROUND_SHADOW}, - #else +#else {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, - #endif +#endif {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, @@ -1236,11 +1236,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, - #if B_NEW_MEAN_LOOK_PARTICLE +#if B_NEW_MEAN_LOOK_PARTICLE {gBattleAnimSpriteGfx_NewEye, 0x0800, ANIM_TAG_EYE}, - #else +#else {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, - #endif +#endif {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, @@ -1252,11 +1252,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, - #if B_NEW_CURSE_NAIL_PARTICLE +#if B_NEW_CURSE_NAIL_PARTICLE {gBattleAnimSpriteGfx_NewNail, 0x0400, ANIM_TAG_NAIL}, - #else +#else {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, - #endif +#endif {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, @@ -1283,11 +1283,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, - #if B_NEW_BATON_PASS_BALL_PARTICLE +#if B_NEW_BATON_PASS_BALL_PARTICLE {gBattleAnimSpriteGfx_NewPokeball, 0x0080, ANIM_TAG_POKEBALL}, - #else +#else {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, - #endif +#endif {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, @@ -1302,11 +1302,11 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, - #if B_NEW_MORNING_SUN_STAR_PARTICLE +#if B_NEW_MORNING_SUN_STAR_PARTICLE {gBattleAnimSpriteGfx_NewGreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, - #else +#else {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, - #endif +#endif {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, @@ -1461,16 +1461,16 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, - #if B_NEW_SWORD_PARTICLE +#if B_NEW_SWORD_PARTICLE {gBattleAnimSpritePal_NewSword, ANIM_TAG_SWORD}, - #else +#else {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, - #endif - #if B_NEW_LEECH_SEED_PARTICLE +#endif +#if B_NEW_LEECH_SEED_PARTICLE {gBattleAnimSpritePal_NewLeechSeed, ANIM_TAG_SEED}, - #else +#else {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, - #endif +#endif {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, @@ -1484,11 +1484,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, - #if B_NEW_HORN_ATTACK_PARTICLE +#if B_NEW_HORN_ATTACK_PARTICLE {gBattleAnimSpritePal_NewHornHit, ANIM_TAG_HORN_HIT}, - #else +#else {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, - #endif +#endif {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, @@ -1497,11 +1497,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, - #if B_NEW_EMBER_PARTICLES +#if B_NEW_EMBER_PARTICLES {gBattleAnimSpritePal_NewEmbers, ANIM_TAG_SMALL_EMBER}, - #else +#else {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, - #endif +#endif {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, @@ -1530,20 +1530,20 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, - #if NEW_ROCKS_PARTICLE +#if NEW_ROCKS_PARTICLE {gBattleAnimSpritePal_NewRocks, ANIM_TAG_ROCKS}, - #else +#else {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, - #endif +#endif {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, - #if B_NEW_LEAF_PARTICLE +#if B_NEW_LEAF_PARTICLE {gBattleAnimSpritePal_NewLeaf, ANIM_TAG_LEAF}, - #else +#else {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, - #endif +#endif {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, @@ -1607,11 +1607,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, - #if NEW_SUBSTITUTE_PARTICLE +#if NEW_SUBSTITUTE_PARTICLE {gBattleAnimSpritePal_NewSubstituteFront, ANIM_TAG_MONSTER_DOLL}, - #else +#else {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, - #endif +#endif {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, @@ -1619,27 +1619,27 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, - #if B_NEW_IMPACT_PALETTE +#if B_NEW_IMPACT_PALETTE {gBattleAnimSpritePal_NewImpact, ANIM_TAG_IMPACT}, - #else +#else {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, - #endif +#endif {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, - #if B_NEW_TEETH_PARTICLE +#if B_NEW_TEETH_PARTICLE {gBattleAnimSpritePal_NewTeeth, ANIM_TAG_SHARP_TEETH}, - #else +#else {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, - #endif +#endif {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, - #if B_NEW_HANDS_FEET_PARTICLE +#if B_NEW_HANDS_FEET_PARTICLE {gBattleAnimSpritePal_NewHandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, - #else +#else {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, - #endif +#endif {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, @@ -1648,19 +1648,19 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, - #if B_NEW_SPIKES_PARTICLE +#if B_NEW_SPIKES_PARTICLE {gBattleAnimSpritePal_NewSpikes, ANIM_TAG_SPIKES}, - #else +#else {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, - #endif +#endif {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, - #if B_NEW_FLY_BUBBLE_PARTICLE +#if B_NEW_FLY_BUBBLE_PARTICLE {gBattleAnimSpritePal_NewFly, ANIM_TAG_ROUND_SHADOW}, - #else +#else {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, - #endif +#endif {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, @@ -1691,11 +1691,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, - #if B_NEW_MEAN_LOOK_PARTICLE +#if B_NEW_MEAN_LOOK_PARTICLE {gBattleAnimSpritePal_NewEye, ANIM_TAG_EYE}, - #else +#else {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, - #endif +#endif {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, @@ -1734,11 +1734,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, - #if B_NEW_BATON_PASS_BALL_PARTICLE +#if B_NEW_BATON_PASS_BALL_PARTICLE {gBattleAnimSpritePal_NewPokeball, ANIM_TAG_POKEBALL}, - #else +#else {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, - #endif +#endif {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, @@ -1753,11 +1753,11 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, - #if B_NEW_MORNING_SUN_STAR_PARTICLE +#if B_NEW_MORNING_SUN_STAR_PARTICLE {gBattleAnimSpritePal_NewGreenStar, ANIM_TAG_GREEN_STAR}, - #else +#else {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, - #endif +#endif {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, diff --git a/src/data/items.h b/src/data/items.h index bcb12e6956..3a3980a6bf 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -7794,7 +7794,7 @@ const struct Item gItems[] = .flingPower = 10, }, -// TMs/HMs +// TMs/HMs. They don't have a set flingPower, as that's handled by GetFlingPowerFromItemId. [ITEM_TM01_FOCUS_PUNCH] = { @@ -7805,7 +7805,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 150, }, [ITEM_TM02_DRAGON_CLAW] = @@ -7817,7 +7816,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 80, }, [ITEM_TM03_WATER_PULSE] = @@ -7829,7 +7827,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 60, }, [ITEM_TM04_CALM_MIND] = @@ -7841,7 +7838,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM05_ROAR] = @@ -7853,7 +7849,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM06_TOXIC] = @@ -7865,7 +7860,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM07_HAIL] = @@ -7877,7 +7871,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM08_BULK_UP] = @@ -7889,7 +7882,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM09_BULLET_SEED] = @@ -7901,11 +7893,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flingPower = 25, - #else - .flingPower = 10, - #endif }, [ITEM_TM10_HIDDEN_POWER] = @@ -7917,11 +7904,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 60, - #else - .flingPower = 10, - #endif }, [ITEM_TM11_SUNNY_DAY] = @@ -7933,7 +7915,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM12_TAUNT] = @@ -7945,7 +7926,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM13_ICE_BEAM] = @@ -7957,11 +7937,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 90, - #else - .flingPower = 95, - #endif }, [ITEM_TM14_BLIZZARD] = @@ -7973,11 +7948,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 110, - #else - .flingPower = 120, - #endif }, [ITEM_TM15_HYPER_BEAM] = @@ -7989,7 +7959,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 150, }, [ITEM_TM16_LIGHT_SCREEN] = @@ -8001,7 +7970,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM17_PROTECT] = @@ -8013,7 +7981,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM18_RAIN_DANCE] = @@ -8025,7 +7992,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM19_GIGA_DRAIN] = @@ -8037,11 +8003,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_5 - .flingPower = 75, - #else - .flingPower = 60, - #endif }, [ITEM_TM20_SAFEGUARD] = @@ -8053,7 +8014,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM21_FRUSTRATION] = @@ -8065,7 +8025,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM22_SOLAR_BEAM] = @@ -8077,7 +8036,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 120, }, [ITEM_TM23_IRON_TAIL] = @@ -8089,7 +8047,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 100, }, [ITEM_TM24_THUNDERBOLT] = @@ -8101,11 +8058,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 90, - #else - .flingPower = 95, - #endif }, [ITEM_TM25_THUNDER] = @@ -8117,11 +8069,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 110, - #else - .flingPower = 120, - #endif }, [ITEM_TM26_EARTHQUAKE] = @@ -8133,7 +8080,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 100, }, [ITEM_TM27_RETURN] = @@ -8145,7 +8091,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM28_DIG] = @@ -8157,11 +8102,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flingPower = 80, - #else - .flingPower = 60, - #endif }, [ITEM_TM29_PSYCHIC] = @@ -8173,7 +8113,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 90, }, [ITEM_TM30_SHADOW_BALL] = @@ -8185,7 +8124,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 80, }, [ITEM_TM31_BRICK_BREAK] = @@ -8197,7 +8135,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 75, }, [ITEM_TM32_DOUBLE_TEAM] = @@ -8209,7 +8146,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM33_REFLECT] = @@ -8221,7 +8157,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM34_SHOCK_WAVE] = @@ -8233,7 +8168,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 60, }, [ITEM_TM35_FLAMETHROWER] = @@ -8245,11 +8179,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 90, - #else - .flingPower = 95, - #endif }, [ITEM_TM36_SLUDGE_BOMB] = @@ -8261,7 +8190,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 90, }, [ITEM_TM37_SANDSTORM] = @@ -8273,7 +8201,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM38_FIRE_BLAST] = @@ -8285,11 +8212,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 110, - #else - .flingPower = 120, - #endif }, [ITEM_TM39_ROCK_TOMB] = @@ -8301,11 +8223,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 60, - #else - .flingPower = 50, - #endif }, [ITEM_TM40_AERIAL_ACE] = @@ -8317,7 +8234,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 60, }, [ITEM_TM41_TORMENT] = @@ -8329,7 +8245,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM42_FACADE] = @@ -8341,7 +8256,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM43_SECRET_POWER] = @@ -8353,7 +8267,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 70, }, [ITEM_TM44_REST] = @@ -8365,7 +8278,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM45_ATTRACT] = @@ -8377,7 +8289,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM46_THIEF] = @@ -8389,11 +8300,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 60, - #else - .flingPower = 40, - #endif }, [ITEM_TM47_STEEL_WING] = @@ -8405,7 +8311,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 70, }, [ITEM_TM48_SKILL_SWAP] = @@ -8417,7 +8322,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM49_SNATCH] = @@ -8429,7 +8333,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_TM50_OVERHEAT] = @@ -8441,11 +8344,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 130, - #else - .flingPower = 140, - #endif }, [ITEM_TM51] = @@ -9008,7 +8906,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 50, }, [ITEM_HM02_FLY] = @@ -9021,11 +8918,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flingPower = 90, - #else - .flingPower = 70, - #endif }, [ITEM_HM03_SURF] = @@ -9038,11 +8930,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_6 - .flingPower = 90, - #else - .flingPower = 95, - #endif }, [ITEM_HM04_STRENGTH] = @@ -9055,7 +8942,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 80, }, [ITEM_HM05_FLASH] = @@ -9068,7 +8954,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 10, }, [ITEM_HM06_ROCK_SMASH] = @@ -9081,11 +8966,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flingPower = 20, - #else - .flingPower = 40, - #endif }, [ITEM_HM07_WATERFALL] = @@ -9098,7 +8978,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - .flingPower = 80, }, [ITEM_HM08_DIVE] = @@ -9111,11 +8990,6 @@ const struct Item gItems[] = .pocket = POCKET_TM_HM, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_TMHM, - #if B_UPDATED_MOVE_DATA >= GEN_4 - .flingPower = 80, - #else - .flingPower = 60, - #endif }, diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 5f6bcfb0e4..1739a85571 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -1,3 +1,10 @@ + +#if B_BINDING_TURNS >= GEN_5 +#define BINDING_TURNS "4 or 5" +#else +#define BINDING_TURNS "2 to 5" +#endif + static const u8 sNullDescription[] = _( ""); @@ -79,11 +86,7 @@ static const u8 sFlyDescription[] = _( static const u8 sBindDescription[] = _( "Binds and squeezes the foe\n" -#if B_BINDING_TURNS >= GEN_5 - "for 4 or 5 turns."); -#else - "for 2 to 5 turns."); -#endif + "for "BINDING_TURNS" turns."); static const u8 sSlamDescription[] = _( "Slams the foe with a long\n" @@ -143,11 +146,7 @@ static const u8 sBodySlamDescription[] = _( static const u8 sWrapDescription[] = _( "Wraps and squeezes the foe\n" -#if B_BINDING_TURNS >= GEN_5 - "4 or 5 times with vines, etc."); -#else - "2 to 5 times with vines, etc."); -#endif + BINDING_TURNS" times with vines, etc."); static const u8 sTakeDownDescription[] = _( "A reckless charge attack\n" @@ -339,11 +338,7 @@ static const u8 sDragonRageDescription[] = _( static const u8 sFireSpinDescription[] = _( "Traps the foe in a ring of\n" -#if B_BINDING_TURNS >= GEN_5 - "fire for 4 or 5 turns."); -#else - "fire for 2 to 5 turns."); -#endif + "fire for "BINDING_TURNS" turns."); static const u8 sThunderShockDescription[] = _( "An electrical attack that\n" @@ -523,11 +518,7 @@ static const u8 sWaterfallDescription[] = _( static const u8 sClampDescription[] = _( "Traps and squeezes the\n" -#if B_BINDING_TURNS >= GEN_5 - "foe for 4 or 5 turns."); -#else - "foe for 2 to 5 turns."); -#endif + "foe for "BINDING_TURNS" turns."); static const u8 sSwiftDescription[] = _( "Sprays star-shaped rays\n" @@ -1015,11 +1006,7 @@ static const u8 sRockSmashDescription[] = _( static const u8 sWhirlpoolDescription[] = _( "Traps and hurts the foe in\n" -#if B_BINDING_TURNS >= GEN_5 - "a whirlpool for 4 or 5 turns."); -#else - "a whirlpool for 2 to 5 turns."); -#endif + "a whirlpool for "BINDING_TURNS" turns."); static const u8 sBeatUpDescription[] = _( "Summons party Pokémon to\n" @@ -1030,7 +1017,11 @@ static const u8 sFakeOutDescription[] = _( "that causes flinching."); static const u8 sUproarDescription[] = _( +#if B_UPROAR_TURNS >= GEN_5 "Causes an uproar for 2 to 5\n" +#else + "Causes an uproar for 3\n" +#endif "turns and prevents sleep."); static const u8 sStockpileDescription[] = _( @@ -1331,11 +1322,7 @@ static const u8 sSkyUppercutDescription[] = _( static const u8 sSandTombDescription[] = _( "Traps and hurts the foe in\n" -#if B_BINDING_TURNS >= GEN_5 - "quicksand for 4 or 5 turns."); -#else - "quicksand for 2 to 5 turns."); -#endif + "quicksand for "BINDING_TURNS" turns."); static const u8 sSheerColdDescription[] = _( "A chilling attack that\n" @@ -1839,11 +1826,7 @@ static const u8 sSpacialRendDescription[] = _( static const u8 sMagmaStormDescription[] = _( "Traps the foe in a vortex\n" -#if B_BINDING_TURNS >= GEN_5 - "of fire for 4 or 5 turns."); -#else - "of fire for 2 to 5 turns."); -#endif + "of fire for "BINDING_TURNS" turns."); static const u8 sDarkVoidDescription[] = _( "Drags the foe into total\n" @@ -2395,11 +2378,7 @@ static const u8 sNuzzleDescription[] = _( static const u8 sInfestationDescription[] = _( "The foe is infested and\n" -#if B_BINDING_TURNS >= GEN_5 - "attacked for 4 or 5 turns."); -#else - "attacked for 2 to 5 turns."); -#endif + "attacked for "BINDING_TURNS" turns."); static const u8 sPowerUpPunchDescription[] = _( "A hard punch that raises\n" @@ -2944,11 +2923,7 @@ static const u8 sSurgingStrikesDescription[] = _( static const u8 sThunderCageDescription[] = _( "Traps the foe in a cage of\n" -#if B_BINDING_TURNS >= GEN_5 - "electricity for 4 or 5 turns."); -#else - "electricity for 2 to 5 turns."); -#endif + "electricity for "BINDING_TURNS" turns."); static const u8 sDragonEnergyDescription[] = _( "The higher the user's HP\n" @@ -2981,6 +2956,8 @@ static const u8 sEerieSpellDescription[] = _( static const u8 sNotDoneYetDescription[] = _( "Not done yet."); +#undef BINDING_TURNS + // MOVE_NONE is ignored in this table. Make sure to always subtract 1 before getting the right pointer. const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = { diff --git a/src/daycare.c b/src/daycare.c index d293e51175..5d825c4d69 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -819,12 +819,12 @@ static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parent eggSpecies = SPECIES_NIDORAN_M; else if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & EGG_GENDER_MALE) eggSpecies = SPECIES_VOLBEAT; - #if P_NIDORAN_M_DITTO_BREED >= GEN_5 - else if (eggSpecies == SPECIES_NIDORAN_M && !(daycare->offspringPersonality & EGG_GENDER_MALE)) - eggSpecies = SPECIES_NIDORAN_F; - else if (eggSpecies == SPECIES_VOLBEAT && !(daycare->offspringPersonality & EGG_GENDER_MALE)) - eggSpecies = SPECIES_ILLUMISE; - #endif +#if P_NIDORAN_M_DITTO_BREED >= GEN_5 + else if (eggSpecies == SPECIES_NIDORAN_M && !(daycare->offspringPersonality & EGG_GENDER_MALE)) + eggSpecies = SPECIES_NIDORAN_F; + else if (eggSpecies == SPECIES_VOLBEAT && !(daycare->offspringPersonality & EGG_GENDER_MALE)) + eggSpecies = SPECIES_ILLUMISE; +#endif else if (eggSpecies == SPECIES_MANAPHY) eggSpecies = SPECIES_PHIONE; else if (eggSpecies == SPECIES_SINISTEA_ANTIQUE) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index c9c2641c67..91a3122226 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -551,7 +551,10 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) u32 data = 0; u16 ball = ITEM_POKE_BALL; if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE - && (P_SHEDINJA_BALL == GEN_3 || CheckBagHasItem(ball, 1))) + #if P_SHEDINJA_BALL >= GEN_4 + && (CheckBagHasItem(ball, 1)) + #endif + ) { s32 i; struct Pokemon *shedinja = &gPlayerParty[gPlayerPartyCount]; @@ -563,10 +566,10 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); - #if P_SHEDINJA_BALL >= GEN_4 + #if P_SHEDINJA_BALL >= GEN_4 SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); RemoveBagItem(ball, 1); - #endif + #endif for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++) SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); diff --git a/src/item_use.c b/src/item_use.c index 7cc4bb32d3..023396ffa2 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -1000,14 +1000,14 @@ void ItemUseInBattle_PokeBall(u8 taskId) else DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage); break; - #if B_SEMI_INVULNERABLE_CATCH >= GEN_4 +#if B_SEMI_INVULNERABLE_CATCH >= GEN_4 case BALL_THROW_UNABLE_SEMI_INVULNERABLE: if (!InBattlePyramid()) DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_SemiInvulnerable, CloseItemMessage); else DisplayItemMessageInBattlePyramid(taskId, sText_CantThrowPokeBall_SemiInvulnerable, Task_CloseBattlePyramidBagMessage); break; - #endif +#endif } } diff --git a/src/overworld.c b/src/overworld.c index 5bf7262dcb..07912e8553 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -409,9 +409,9 @@ static void Overworld_ResetStateAfterWhiteOut(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); - #if VAR_TERRAIN != 0 - VarSet(VAR_TERRAIN, 0); - #endif +#if VAR_TERRAIN != 0 + VarSet(VAR_TERRAIN, 0); +#endif // If you were defeated by Kyogre/Groudon and the step counter has // maxed out, end the abnormal weather. if (VarGet(VAR_SHOULD_END_ABNORMAL_WEATHER) == 1) diff --git a/src/pokemon.c b/src/pokemon.c index c781a80078..ae5c2f8029 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3334,49 +3334,49 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); - #if P_LEGENDARY_PERFECT_IVS >= GEN_6 - if (gBaseStats[species].flags & (FLAG_LEGENDARY | FLAG_MYTHICAL | FLAG_ULTRA_BEAST)) + #if P_LEGENDARY_PERFECT_IVS >= GEN_6 + if (gBaseStats[species].flags & (FLAG_LEGENDARY | FLAG_MYTHICAL | FLAG_ULTRA_BEAST)) + { + iv = MAX_PER_STAT_IVS; + // Initialize a list of IV indices. + for (i = 0; i < NUM_STATS; i++) { - iv = MAX_PER_STAT_IVS; - // Initialize a list of IV indices. - for (i = 0; i < NUM_STATS; i++) - { - availableIVs[i] = i; - } + availableIVs[i] = i; + } - // Select the 3 IVs that will be perfected. - for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) + // Select the 3 IVs that will be perfected. + for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) + { + u8 index = Random() % (NUM_STATS - i); + selectedIvs[i] = availableIVs[index]; + RemoveIVIndexFromList(availableIVs, index); + } + for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) + { + switch (selectedIvs[i]) { - u8 index = Random() % (NUM_STATS - i); - selectedIvs[i] = availableIVs[index]; - RemoveIVIndexFromList(availableIVs, index); - } - for (i = 0; i < LEGENDARY_PERFECT_IV_COUNT; i++) - { - switch (selectedIvs[i]) - { - case STAT_HP: - SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); - break; - case STAT_ATK: - SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); - break; - case STAT_DEF: - SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); - break; - case STAT_SPEED: - SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); - break; - case STAT_SPATK: - SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); - break; - case STAT_SPDEF: - SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); - break; - } + case STAT_HP: + SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); + break; + case STAT_ATK: + SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); + break; + case STAT_DEF: + SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); + break; + case STAT_SPEED: + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); + break; + case STAT_SPATK: + SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); + break; + case STAT_SPDEF: + SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + break; } } - #endif + } + #endif } @@ -5470,6 +5470,12 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } \ } +#if B_X_ITEMS_BUFF >= GEN_7 + #define X_ITEM_STAGES 2 +#else + #define X_ITEM_STAGES 1 +#endif + // Returns TRUE if the item has no effect on the Pokémon, FALSE otherwise bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, bool8 usedByAI) { @@ -5576,10 +5582,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_ATTACK) && gBattleMons[gActiveBattler].statStages[STAT_ATK] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_ATK] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_ATK] += 1; + gBattleMons[gActiveBattler].statStages[STAT_ATK] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_ATK] = MAX_STAT_STAGE; retVal = FALSE; @@ -5589,10 +5592,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_DEFENSE) && gBattleMons[gActiveBattler].statStages[STAT_DEF] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_DEF] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_DEF] += 1; + gBattleMons[gActiveBattler].statStages[STAT_DEF] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_DEF] = MAX_STAT_STAGE; retVal = FALSE; @@ -5602,10 +5602,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_SPEED) && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_SPEED] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_SPEED] += 1; + gBattleMons[gActiveBattler].statStages[STAT_SPEED] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_SPEED] = MAX_STAT_STAGE; retVal = FALSE; @@ -5615,10 +5612,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_SPATK) && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_SPATK] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_SPATK] += 1; + gBattleMons[gActiveBattler].statStages[STAT_SPATK] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_SPATK] = MAX_STAT_STAGE; retVal = FALSE; @@ -5628,10 +5622,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_SPDEF) && gBattleMons[gActiveBattler].statStages[STAT_SPDEF] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_SPDEF] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_SPDEF] += 1; + gBattleMons[gActiveBattler].statStages[STAT_SPDEF] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_SPDEF] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_SPDEF] = MAX_STAT_STAGE; retVal = FALSE; @@ -5641,10 +5632,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if ((itemEffect[i] & ITEM1_X_ACCURACY) && gBattleMons[gActiveBattler].statStages[STAT_ACC] < MAX_STAT_STAGE) { - if (B_X_ITEMS_BUFF >= GEN_7) - gBattleMons[gActiveBattler].statStages[STAT_ACC] += 2; - else - gBattleMons[gActiveBattler].statStages[STAT_ACC] += 1; + gBattleMons[gActiveBattler].statStages[STAT_ACC] += X_ITEM_STAGES; if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > MAX_STAT_STAGE) gBattleMons[gActiveBattler].statStages[STAT_ACC] = MAX_STAT_STAGE; retVal = FALSE; @@ -6204,15 +6192,12 @@ static void BufferStatRoseMessage(s32 statIdx) { gBattlerTarget = gBattlerInMenuId; StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[statIdx]]); - if (B_X_ITEMS_BUFF >= GEN_7) - { - StringCopy(gBattleTextBuff2, gText_StatSharply); - StringAppend(gBattleTextBuff2, gText_StatRose); - } - else - { - StringCopy(gBattleTextBuff2, gText_StatRose); - } +#if B_X_ITEMS_BUFF >= GEN_7 + StringCopy(gBattleTextBuff2, gText_StatSharply); + StringAppend(gBattleTextBuff2, gText_StatRose); +#else + StringCopy(gBattleTextBuff2, gText_StatRose); +#endif BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose); } @@ -6324,7 +6309,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s // Prevent evolution with Everstone, unless we're just viewing the party menu with an evolution item if (holdEffect == HOLD_EFFECT_PREVENT_EVOLVE && mode != EVO_MODE_ITEM_CHECK - && (P_KADABRA_EVERSTONE < GEN_4 || species != SPECIES_KADABRA)) + #if P_KADABRA_EVERSTONE >= GEN_4 + && species != SPECIES_KADABRA + #endif + ) return SPECIES_NONE; switch (mode) diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2befc159f5..580ca88032 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3735,8 +3735,9 @@ static void PrintMoveDetails(u16 move) { if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) { - if (B_SHOW_SPLIT_ICON == TRUE) - ShowSplitIcon(GetBattleMoveSplit(move)); + #if B_SHOW_SPLIT_ICON == TRUE + ShowSplitIcon(GetBattleMoveSplit(move)); + #endif PrintMovePowerAndAccuracy(move); PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); } diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 8e197d547e..e49d09f54d 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -367,7 +367,10 @@ static u8 PickWildMonNature(void) // check synchronize for a pokemon with the same ability if (!GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE - && ((B_SYNCHRONIZE_NATURE >= GEN_8) || Random() % 2 == 0)) + #if B_SYNCHRONIZE_NATURE <= GEN_7 + && (Random() % 2 == 0) + #endif + ) { return GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY) % NUM_NATURES; } @@ -1003,11 +1006,13 @@ bool8 TryDoDoubleWildBattle(void) { if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS) return FALSE; - else if (B_FLAG_FORCE_DOUBLE_WILD != 0 && FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) +#if B_FLAG_FORCE_DOUBLE_WILD != 0 + else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) return TRUE; - #if B_DOUBLE_WILD_CHANCE != 0 +#endif +#if B_DOUBLE_WILD_CHANCE != 0 else if ((Random() % 100) + 1 < B_DOUBLE_WILD_CHANCE) return TRUE; - #endif +#endif return FALSE; } From 45511fcc44e96afbd8a681b5ee3a91e3ad333a16 Mon Sep 17 00:00:00 2001 From: crater-git Date: Tue, 23 Aug 2022 21:44:42 -0400 Subject: [PATCH 079/271] Reworked TMHM into expandable list format --- include/pokemon.h | 5 +- src/apprentice.c | 2 +- src/data/pokemon/tmhm_learnset_pointers.h | 1279 + src/data/pokemon/tmhm_learnsets.h | 52851 +++++++++++--------- src/daycare.c | 3 +- src/party_menu.c | 2 +- src/pokemon.c | 42 +- 7 files changed, 29404 insertions(+), 24780 deletions(-) create mode 100644 src/data/pokemon/tmhm_learnset_pointers.h diff --git a/include/pokemon.h b/include/pokemon.h index d7de38c61f..302b2931ed 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -397,6 +397,7 @@ extern const struct BaseStats gBaseStats[]; extern const u8 *const gItemEffectTable[]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const struct LevelUpMove *const gLevelUpLearnsets[]; +extern const u16 *const gTMHMLearnsets[]; extern const u8 gPPUpGetMask[]; extern const u8 gPPUpClearMask[]; extern const u8 gPPUpAddValues[]; @@ -509,8 +510,8 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); -u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm); -u32 CanSpeciesLearnTMHM(u16 species, u8 tm); +u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move); +u32 CanSpeciesLearnTMHM(u16 species, u16 move); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); diff --git a/src/apprentice.c b/src/apprentice.c index 4103e8f795..cceeedb68b 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -376,7 +376,7 @@ static u16 GetRandomAlternateMove(u8 monId) do { id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES); - shouldUseMove = CanSpeciesLearnTMHM(species, id); + shouldUseMove = CanSpeciesLearnTMHM(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); } while (!shouldUseMove); diff --git a/src/data/pokemon/tmhm_learnset_pointers.h b/src/data/pokemon/tmhm_learnset_pointers.h new file mode 100644 index 0000000000..8fd8920a42 --- /dev/null +++ b/src/data/pokemon/tmhm_learnset_pointers.h @@ -0,0 +1,1279 @@ +const u16 *const gTMHMLearnsets[NUM_SPECIES] = +{ + [SPECIES_NONE] = sBulbasaurTMHMLearnset, + [SPECIES_BULBASAUR] = sBulbasaurTMHMLearnset, + [SPECIES_IVYSAUR] = sIvysaurTMHMLearnset, + [SPECIES_VENUSAUR] = sVenusaurTMHMLearnset, + [SPECIES_CHARMANDER] = sCharmanderTMHMLearnset, + [SPECIES_CHARMELEON] = sCharmeleonTMHMLearnset, + [SPECIES_CHARIZARD] = sCharizardTMHMLearnset, + [SPECIES_SQUIRTLE] = sSquirtleTMHMLearnset, + [SPECIES_WARTORTLE] = sWartortleTMHMLearnset, + [SPECIES_BLASTOISE] = sBlastoiseTMHMLearnset, + [SPECIES_CATERPIE] = sCaterpieTMHMLearnset, + [SPECIES_METAPOD] = sMetapodTMHMLearnset, + [SPECIES_BUTTERFREE] = sButterfreeTMHMLearnset, + [SPECIES_WEEDLE] = sWeedleTMHMLearnset, + [SPECIES_KAKUNA] = sKakunaTMHMLearnset, + [SPECIES_BEEDRILL] = sBeedrillTMHMLearnset, + [SPECIES_PIDGEY] = sPidgeyTMHMLearnset, + [SPECIES_PIDGEOTTO] = sPidgeottoTMHMLearnset, + [SPECIES_PIDGEOT] = sPidgeotTMHMLearnset, + [SPECIES_RATTATA] = sRattataTMHMLearnset, + [SPECIES_RATICATE] = sRaticateTMHMLearnset, + [SPECIES_SPEAROW] = sSpearowTMHMLearnset, + [SPECIES_FEAROW] = sFearowTMHMLearnset, + [SPECIES_EKANS] = sEkansTMHMLearnset, + [SPECIES_ARBOK] = sArbokTMHMLearnset, + [SPECIES_PIKACHU] = sPikachuTMHMLearnset, + [SPECIES_RAICHU] = sRaichuTMHMLearnset, + [SPECIES_SANDSHREW] = sSandshrewTMHMLearnset, + [SPECIES_SANDSLASH] = sSandslashTMHMLearnset, + [SPECIES_NIDORAN_F] = sNidoranFTMHMLearnset, + [SPECIES_NIDORINA] = sNidorinaTMHMLearnset, + [SPECIES_NIDOQUEEN] = sNidoqueenTMHMLearnset, + [SPECIES_NIDORAN_M] = sNidoranMTMHMLearnset, + [SPECIES_NIDORINO] = sNidorinoTMHMLearnset, + [SPECIES_NIDOKING] = sNidokingTMHMLearnset, + [SPECIES_CLEFAIRY] = sClefairyTMHMLearnset, + [SPECIES_CLEFABLE] = sClefableTMHMLearnset, + [SPECIES_VULPIX] = sVulpixTMHMLearnset, + [SPECIES_NINETALES] = sNinetalesTMHMLearnset, + [SPECIES_JIGGLYPUFF] = sJigglypuffTMHMLearnset, + [SPECIES_WIGGLYTUFF] = sWigglytuffTMHMLearnset, + [SPECIES_ZUBAT] = sZubatTMHMLearnset, + [SPECIES_GOLBAT] = sGolbatTMHMLearnset, + [SPECIES_ODDISH] = sOddishTMHMLearnset, + [SPECIES_GLOOM] = sGloomTMHMLearnset, + [SPECIES_VILEPLUME] = sVileplumeTMHMLearnset, + [SPECIES_PARAS] = sParasTMHMLearnset, + [SPECIES_PARASECT] = sParasectTMHMLearnset, + [SPECIES_VENONAT] = sVenonatTMHMLearnset, + [SPECIES_VENOMOTH] = sVenomothTMHMLearnset, + [SPECIES_DIGLETT] = sDiglettTMHMLearnset, + [SPECIES_DUGTRIO] = sDugtrioTMHMLearnset, + [SPECIES_MEOWTH] = sMeowthTMHMLearnset, + [SPECIES_PERSIAN] = sPersianTMHMLearnset, + [SPECIES_PSYDUCK] = sPsyduckTMHMLearnset, + [SPECIES_GOLDUCK] = sGolduckTMHMLearnset, + [SPECIES_MANKEY] = sMankeyTMHMLearnset, + [SPECIES_PRIMEAPE] = sPrimeapeTMHMLearnset, + [SPECIES_GROWLITHE] = sGrowlitheTMHMLearnset, + [SPECIES_ARCANINE] = sArcanineTMHMLearnset, + [SPECIES_POLIWAG] = sPoliwagTMHMLearnset, + [SPECIES_POLIWHIRL] = sPoliwhirlTMHMLearnset, + [SPECIES_POLIWRATH] = sPoliwrathTMHMLearnset, + [SPECIES_ABRA] = sAbraTMHMLearnset, + [SPECIES_KADABRA] = sKadabraTMHMLearnset, + [SPECIES_ALAKAZAM] = sAlakazamTMHMLearnset, + [SPECIES_MACHOP] = sMachopTMHMLearnset, + [SPECIES_MACHOKE] = sMachokeTMHMLearnset, + [SPECIES_MACHAMP] = sMachampTMHMLearnset, + [SPECIES_BELLSPROUT] = sBellsproutTMHMLearnset, + [SPECIES_WEEPINBELL] = sWeepinbellTMHMLearnset, + [SPECIES_VICTREEBEL] = sVictreebelTMHMLearnset, + [SPECIES_TENTACOOL] = sTentacoolTMHMLearnset, + [SPECIES_TENTACRUEL] = sTentacruelTMHMLearnset, + [SPECIES_GEODUDE] = sGeodudeTMHMLearnset, + [SPECIES_GRAVELER] = sGravelerTMHMLearnset, + [SPECIES_GOLEM] = sGolemTMHMLearnset, + [SPECIES_PONYTA] = sPonytaTMHMLearnset, + [SPECIES_RAPIDASH] = sRapidashTMHMLearnset, + [SPECIES_SLOWPOKE] = sSlowpokeTMHMLearnset, + [SPECIES_SLOWBRO] = sSlowbroTMHMLearnset, + [SPECIES_MAGNEMITE] = sMagnemiteTMHMLearnset, + [SPECIES_MAGNETON] = sMagnetonTMHMLearnset, + [SPECIES_FARFETCHD] = sFarfetchdTMHMLearnset, + [SPECIES_DODUO] = sDoduoTMHMLearnset, + [SPECIES_DODRIO] = sDodrioTMHMLearnset, + [SPECIES_SEEL] = sSeelTMHMLearnset, + [SPECIES_DEWGONG] = sDewgongTMHMLearnset, + [SPECIES_GRIMER] = sGrimerTMHMLearnset, + [SPECIES_MUK] = sMukTMHMLearnset, + [SPECIES_SHELLDER] = sShellderTMHMLearnset, + [SPECIES_CLOYSTER] = sCloysterTMHMLearnset, + [SPECIES_GASTLY] = sGastlyTMHMLearnset, + [SPECIES_HAUNTER] = sHaunterTMHMLearnset, + [SPECIES_GENGAR] = sGengarTMHMLearnset, + [SPECIES_ONIX] = sOnixTMHMLearnset, + [SPECIES_DROWZEE] = sDrowzeeTMHMLearnset, + [SPECIES_HYPNO] = sHypnoTMHMLearnset, + [SPECIES_KRABBY] = sKrabbyTMHMLearnset, + [SPECIES_KINGLER] = sKinglerTMHMLearnset, + [SPECIES_VOLTORB] = sVoltorbTMHMLearnset, + [SPECIES_ELECTRODE] = sElectrodeTMHMLearnset, + [SPECIES_EXEGGCUTE] = sExeggcuteTMHMLearnset, + [SPECIES_EXEGGUTOR] = sExeggutorTMHMLearnset, + [SPECIES_CUBONE] = sCuboneTMHMLearnset, + [SPECIES_MAROWAK] = sMarowakTMHMLearnset, + [SPECIES_HITMONLEE] = sHitmonleeTMHMLearnset, + [SPECIES_HITMONCHAN] = sHitmonchanTMHMLearnset, + [SPECIES_LICKITUNG] = sLickitungTMHMLearnset, + [SPECIES_KOFFING] = sKoffingTMHMLearnset, + [SPECIES_WEEZING] = sWeezingTMHMLearnset, + [SPECIES_RHYHORN] = sRhyhornTMHMLearnset, + [SPECIES_RHYDON] = sRhydonTMHMLearnset, + [SPECIES_CHANSEY] = sChanseyTMHMLearnset, + [SPECIES_TANGELA] = sTangelaTMHMLearnset, + [SPECIES_KANGASKHAN] = sKangaskhanTMHMLearnset, + [SPECIES_HORSEA] = sHorseaTMHMLearnset, + [SPECIES_SEADRA] = sSeadraTMHMLearnset, + [SPECIES_GOLDEEN] = sGoldeenTMHMLearnset, + [SPECIES_SEAKING] = sSeakingTMHMLearnset, + [SPECIES_STARYU] = sStaryuTMHMLearnset, + [SPECIES_STARMIE] = sStarmieTMHMLearnset, + [SPECIES_MR_MIME] = sMrMimeTMHMLearnset, + [SPECIES_SCYTHER] = sScytherTMHMLearnset, + [SPECIES_JYNX] = sJynxTMHMLearnset, + [SPECIES_ELECTABUZZ] = sElectabuzzTMHMLearnset, + [SPECIES_MAGMAR] = sMagmarTMHMLearnset, + [SPECIES_PINSIR] = sPinsirTMHMLearnset, + [SPECIES_TAUROS] = sTaurosTMHMLearnset, + [SPECIES_MAGIKARP] = sMagikarpTMHMLearnset, + [SPECIES_GYARADOS] = sGyaradosTMHMLearnset, + [SPECIES_LAPRAS] = sLaprasTMHMLearnset, + [SPECIES_DITTO] = sDittoTMHMLearnset, + [SPECIES_EEVEE] = sEeveeTMHMLearnset, + [SPECIES_VAPOREON] = sVaporeonTMHMLearnset, + [SPECIES_JOLTEON] = sJolteonTMHMLearnset, + [SPECIES_FLAREON] = sFlareonTMHMLearnset, + [SPECIES_PORYGON] = sPorygonTMHMLearnset, + [SPECIES_OMANYTE] = sOmanyteTMHMLearnset, + [SPECIES_OMASTAR] = sOmastarTMHMLearnset, + [SPECIES_KABUTO] = sKabutoTMHMLearnset, + [SPECIES_KABUTOPS] = sKabutopsTMHMLearnset, + [SPECIES_AERODACTYL] = sAerodactylTMHMLearnset, + [SPECIES_SNORLAX] = sSnorlaxTMHMLearnset, + [SPECIES_ARTICUNO] = sArticunoTMHMLearnset, + [SPECIES_ZAPDOS] = sZapdosTMHMLearnset, + [SPECIES_MOLTRES] = sMoltresTMHMLearnset, + [SPECIES_DRATINI] = sDratiniTMHMLearnset, + [SPECIES_DRAGONAIR] = sDragonairTMHMLearnset, + [SPECIES_DRAGONITE] = sDragoniteTMHMLearnset, + [SPECIES_MEWTWO] = sMewtwoTMHMLearnset, + [SPECIES_MEW] = sMewTMHMLearnset, + [SPECIES_CHIKORITA] = sChikoritaTMHMLearnset, + [SPECIES_BAYLEEF] = sBayleefTMHMLearnset, + [SPECIES_MEGANIUM] = sMeganiumTMHMLearnset, + [SPECIES_CYNDAQUIL] = sCyndaquilTMHMLearnset, + [SPECIES_QUILAVA] = sQuilavaTMHMLearnset, + [SPECIES_TYPHLOSION] = sTyphlosionTMHMLearnset, + [SPECIES_TOTODILE] = sTotodileTMHMLearnset, + [SPECIES_CROCONAW] = sCroconawTMHMLearnset, + [SPECIES_FERALIGATR] = sFeraligatrTMHMLearnset, + [SPECIES_SENTRET] = sSentretTMHMLearnset, + [SPECIES_FURRET] = sFurretTMHMLearnset, + [SPECIES_HOOTHOOT] = sHoothootTMHMLearnset, + [SPECIES_NOCTOWL] = sNoctowlTMHMLearnset, + [SPECIES_LEDYBA] = sLedybaTMHMLearnset, + [SPECIES_LEDIAN] = sLedianTMHMLearnset, + [SPECIES_SPINARAK] = sSpinarakTMHMLearnset, + [SPECIES_ARIADOS] = sAriadosTMHMLearnset, + [SPECIES_CROBAT] = sCrobatTMHMLearnset, + [SPECIES_CHINCHOU] = sChinchouTMHMLearnset, + [SPECIES_LANTURN] = sLanturnTMHMLearnset, + [SPECIES_PICHU] = sPichuTMHMLearnset, + [SPECIES_CLEFFA] = sCleffaTMHMLearnset, + [SPECIES_IGGLYBUFF] = sIgglybuffTMHMLearnset, + [SPECIES_TOGEPI] = sTogepiTMHMLearnset, + [SPECIES_TOGETIC] = sTogeticTMHMLearnset, + [SPECIES_NATU] = sNatuTMHMLearnset, + [SPECIES_XATU] = sXatuTMHMLearnset, + [SPECIES_MAREEP] = sMareepTMHMLearnset, + [SPECIES_FLAAFFY] = sFlaaffyTMHMLearnset, + [SPECIES_AMPHAROS] = sAmpharosTMHMLearnset, + [SPECIES_BELLOSSOM] = sBellossomTMHMLearnset, + [SPECIES_MARILL] = sMarillTMHMLearnset, + [SPECIES_AZUMARILL] = sAzumarillTMHMLearnset, + [SPECIES_SUDOWOODO] = sSudowoodoTMHMLearnset, + [SPECIES_POLITOED] = sPolitoedTMHMLearnset, + [SPECIES_HOPPIP] = sHoppipTMHMLearnset, + [SPECIES_SKIPLOOM] = sSkiploomTMHMLearnset, + [SPECIES_JUMPLUFF] = sJumpluffTMHMLearnset, + [SPECIES_AIPOM] = sAipomTMHMLearnset, + [SPECIES_SUNKERN] = sSunkernTMHMLearnset, + [SPECIES_SUNFLORA] = sSunfloraTMHMLearnset, + [SPECIES_YANMA] = sYanmaTMHMLearnset, + [SPECIES_WOOPER] = sWooperTMHMLearnset, + [SPECIES_QUAGSIRE] = sQuagsireTMHMLearnset, + [SPECIES_ESPEON] = sEspeonTMHMLearnset, + [SPECIES_UMBREON] = sUmbreonTMHMLearnset, + [SPECIES_MURKROW] = sMurkrowTMHMLearnset, + [SPECIES_SLOWKING] = sSlowkingTMHMLearnset, + [SPECIES_MISDREAVUS] = sMisdreavusTMHMLearnset, + [SPECIES_UNOWN] = sUnownTMHMLearnset, + [SPECIES_WOBBUFFET] = sWobbuffetTMHMLearnset, + [SPECIES_GIRAFARIG] = sGirafarigTMHMLearnset, + [SPECIES_PINECO] = sPinecoTMHMLearnset, + [SPECIES_FORRETRESS] = sForretressTMHMLearnset, + [SPECIES_DUNSPARCE] = sDunsparceTMHMLearnset, + [SPECIES_GLIGAR] = sGligarTMHMLearnset, + [SPECIES_STEELIX] = sSteelixTMHMLearnset, + [SPECIES_SNUBBULL] = sSnubbullTMHMLearnset, + [SPECIES_GRANBULL] = sGranbullTMHMLearnset, + [SPECIES_QWILFISH] = sQwilfishTMHMLearnset, + [SPECIES_SCIZOR] = sScizorTMHMLearnset, + [SPECIES_SHUCKLE] = sShuckleTMHMLearnset, + [SPECIES_HERACROSS] = sHeracrossTMHMLearnset, + [SPECIES_SNEASEL] = sSneaselTMHMLearnset, + [SPECIES_TEDDIURSA] = sTeddiursaTMHMLearnset, + [SPECIES_URSARING] = sUrsaringTMHMLearnset, + [SPECIES_SLUGMA] = sSlugmaTMHMLearnset, + [SPECIES_MAGCARGO] = sMagcargoTMHMLearnset, + [SPECIES_SWINUB] = sSwinubTMHMLearnset, + [SPECIES_PILOSWINE] = sPiloswineTMHMLearnset, + [SPECIES_CORSOLA] = sCorsolaTMHMLearnset, + [SPECIES_REMORAID] = sRemoraidTMHMLearnset, + [SPECIES_OCTILLERY] = sOctilleryTMHMLearnset, + [SPECIES_DELIBIRD] = sDelibirdTMHMLearnset, + [SPECIES_MANTINE] = sMantineTMHMLearnset, + [SPECIES_SKARMORY] = sSkarmoryTMHMLearnset, + [SPECIES_HOUNDOUR] = sHoundourTMHMLearnset, + [SPECIES_HOUNDOOM] = sHoundoomTMHMLearnset, + [SPECIES_KINGDRA] = sKingdraTMHMLearnset, + [SPECIES_PHANPY] = sPhanpyTMHMLearnset, + [SPECIES_DONPHAN] = sDonphanTMHMLearnset, + [SPECIES_PORYGON2] = sPorygon2TMHMLearnset, + [SPECIES_STANTLER] = sStantlerTMHMLearnset, + [SPECIES_SMEARGLE] = sSmeargleTMHMLearnset, + [SPECIES_TYROGUE] = sTyrogueTMHMLearnset, + [SPECIES_HITMONTOP] = sHitmontopTMHMLearnset, + [SPECIES_SMOOCHUM] = sSmoochumTMHMLearnset, + [SPECIES_ELEKID] = sElekidTMHMLearnset, + [SPECIES_MAGBY] = sMagbyTMHMLearnset, + [SPECIES_MILTANK] = sMiltankTMHMLearnset, + [SPECIES_BLISSEY] = sBlisseyTMHMLearnset, + [SPECIES_RAIKOU] = sRaikouTMHMLearnset, + [SPECIES_ENTEI] = sEnteiTMHMLearnset, + [SPECIES_SUICUNE] = sSuicuneTMHMLearnset, + [SPECIES_LARVITAR] = sLarvitarTMHMLearnset, + [SPECIES_PUPITAR] = sPupitarTMHMLearnset, + [SPECIES_TYRANITAR] = sTyranitarTMHMLearnset, + [SPECIES_LUGIA] = sLugiaTMHMLearnset, + [SPECIES_HO_OH] = sHoOhTMHMLearnset, + [SPECIES_CELEBI] = sCelebiTMHMLearnset, + [SPECIES_TREECKO] = sTreeckoTMHMLearnset, + [SPECIES_GROVYLE] = sGrovyleTMHMLearnset, + [SPECIES_SCEPTILE] = sSceptileTMHMLearnset, + [SPECIES_TORCHIC] = sTorchicTMHMLearnset, + [SPECIES_COMBUSKEN] = sCombuskenTMHMLearnset, + [SPECIES_BLAZIKEN] = sBlazikenTMHMLearnset, + [SPECIES_MUDKIP] = sMudkipTMHMLearnset, + [SPECIES_MARSHTOMP] = sMarshtompTMHMLearnset, + [SPECIES_SWAMPERT] = sSwampertTMHMLearnset, + [SPECIES_POOCHYENA] = sPoochyenaTMHMLearnset, + [SPECIES_MIGHTYENA] = sMightyenaTMHMLearnset, + [SPECIES_ZIGZAGOON] = sZigzagoonTMHMLearnset, + [SPECIES_LINOONE] = sLinooneTMHMLearnset, + [SPECIES_WURMPLE] = sWurmpleTMHMLearnset, + [SPECIES_SILCOON] = sSilcoonTMHMLearnset, + [SPECIES_BEAUTIFLY] = sBeautiflyTMHMLearnset, + [SPECIES_CASCOON] = sCascoonTMHMLearnset, + [SPECIES_DUSTOX] = sDustoxTMHMLearnset, + [SPECIES_LOTAD] = sLotadTMHMLearnset, + [SPECIES_LOMBRE] = sLombreTMHMLearnset, + [SPECIES_LUDICOLO] = sLudicoloTMHMLearnset, + [SPECIES_SEEDOT] = sSeedotTMHMLearnset, + [SPECIES_NUZLEAF] = sNuzleafTMHMLearnset, + [SPECIES_SHIFTRY] = sShiftryTMHMLearnset, + [SPECIES_NINCADA] = sNincadaTMHMLearnset, + [SPECIES_NINJASK] = sNinjaskTMHMLearnset, + [SPECIES_SHEDINJA] = sShedinjaTMHMLearnset, + [SPECIES_TAILLOW] = sTaillowTMHMLearnset, + [SPECIES_SWELLOW] = sSwellowTMHMLearnset, + [SPECIES_SHROOMISH] = sShroomishTMHMLearnset, + [SPECIES_BRELOOM] = sBreloomTMHMLearnset, + [SPECIES_SPINDA] = sSpindaTMHMLearnset, + [SPECIES_WINGULL] = sWingullTMHMLearnset, + [SPECIES_PELIPPER] = sPelipperTMHMLearnset, + [SPECIES_SURSKIT] = sSurskitTMHMLearnset, + [SPECIES_MASQUERAIN] = sMasquerainTMHMLearnset, + [SPECIES_WAILMER] = sWailmerTMHMLearnset, + [SPECIES_WAILORD] = sWailordTMHMLearnset, + [SPECIES_SKITTY] = sSkittyTMHMLearnset, + [SPECIES_DELCATTY] = sDelcattyTMHMLearnset, + [SPECIES_KECLEON] = sKecleonTMHMLearnset, + [SPECIES_BALTOY] = sBaltoyTMHMLearnset, + [SPECIES_CLAYDOL] = sClaydolTMHMLearnset, + [SPECIES_NOSEPASS] = sNosepassTMHMLearnset, + [SPECIES_TORKOAL] = sTorkoalTMHMLearnset, + [SPECIES_SABLEYE] = sSableyeTMHMLearnset, + [SPECIES_BARBOACH] = sBarboachTMHMLearnset, + [SPECIES_WHISCASH] = sWhiscashTMHMLearnset, + [SPECIES_LUVDISC] = sLuvdiscTMHMLearnset, + [SPECIES_CORPHISH] = sCorphishTMHMLearnset, + [SPECIES_CRAWDAUNT] = sCrawdauntTMHMLearnset, + [SPECIES_FEEBAS] = sFeebasTMHMLearnset, + [SPECIES_MILOTIC] = sMiloticTMHMLearnset, + [SPECIES_CARVANHA] = sCarvanhaTMHMLearnset, + [SPECIES_SHARPEDO] = sSharpedoTMHMLearnset, + [SPECIES_TRAPINCH] = sTrapinchTMHMLearnset, + [SPECIES_VIBRAVA] = sVibravaTMHMLearnset, + [SPECIES_FLYGON] = sFlygonTMHMLearnset, + [SPECIES_MAKUHITA] = sMakuhitaTMHMLearnset, + [SPECIES_HARIYAMA] = sHariyamaTMHMLearnset, + [SPECIES_ELECTRIKE] = sElectrikeTMHMLearnset, + [SPECIES_MANECTRIC] = sManectricTMHMLearnset, + [SPECIES_NUMEL] = sNumelTMHMLearnset, + [SPECIES_CAMERUPT] = sCameruptTMHMLearnset, + [SPECIES_SPHEAL] = sSphealTMHMLearnset, + [SPECIES_SEALEO] = sSealeoTMHMLearnset, + [SPECIES_WALREIN] = sWalreinTMHMLearnset, + [SPECIES_CACNEA] = sCacneaTMHMLearnset, + [SPECIES_CACTURNE] = sCacturneTMHMLearnset, + [SPECIES_SNORUNT] = sSnoruntTMHMLearnset, + [SPECIES_GLALIE] = sGlalieTMHMLearnset, + [SPECIES_LUNATONE] = sLunatoneTMHMLearnset, + [SPECIES_SOLROCK] = sSolrockTMHMLearnset, + [SPECIES_AZURILL] = sAzurillTMHMLearnset, + [SPECIES_SPOINK] = sSpoinkTMHMLearnset, + [SPECIES_GRUMPIG] = sGrumpigTMHMLearnset, + [SPECIES_PLUSLE] = sPlusleTMHMLearnset, + [SPECIES_MINUN] = sMinunTMHMLearnset, + [SPECIES_MAWILE] = sMawileTMHMLearnset, + [SPECIES_MEDITITE] = sMedititeTMHMLearnset, + [SPECIES_MEDICHAM] = sMedichamTMHMLearnset, + [SPECIES_SWABLU] = sSwabluTMHMLearnset, + [SPECIES_ALTARIA] = sAltariaTMHMLearnset, + [SPECIES_WYNAUT] = sWynautTMHMLearnset, + [SPECIES_DUSKULL] = sDuskullTMHMLearnset, + [SPECIES_DUSCLOPS] = sDusclopsTMHMLearnset, + [SPECIES_ROSELIA] = sRoseliaTMHMLearnset, + [SPECIES_SLAKOTH] = sSlakothTMHMLearnset, + [SPECIES_VIGOROTH] = sVigorothTMHMLearnset, + [SPECIES_SLAKING] = sSlakingTMHMLearnset, + [SPECIES_GULPIN] = sGulpinTMHMLearnset, + [SPECIES_SWALOT] = sSwalotTMHMLearnset, + [SPECIES_TROPIUS] = sTropiusTMHMLearnset, + [SPECIES_WHISMUR] = sWhismurTMHMLearnset, + [SPECIES_LOUDRED] = sLoudredTMHMLearnset, + [SPECIES_EXPLOUD] = sExploudTMHMLearnset, + [SPECIES_CLAMPERL] = sClamperlTMHMLearnset, + [SPECIES_HUNTAIL] = sHuntailTMHMLearnset, + [SPECIES_GOREBYSS] = sGorebyssTMHMLearnset, + [SPECIES_ABSOL] = sAbsolTMHMLearnset, + [SPECIES_SHUPPET] = sShuppetTMHMLearnset, + [SPECIES_BANETTE] = sBanetteTMHMLearnset, + [SPECIES_SEVIPER] = sSeviperTMHMLearnset, + [SPECIES_ZANGOOSE] = sZangooseTMHMLearnset, + [SPECIES_RELICANTH] = sRelicanthTMHMLearnset, + [SPECIES_ARON] = sAronTMHMLearnset, + [SPECIES_LAIRON] = sLaironTMHMLearnset, + [SPECIES_AGGRON] = sAggronTMHMLearnset, + [SPECIES_CASTFORM] = sCastformTMHMLearnset, + [SPECIES_VOLBEAT] = sVolbeatTMHMLearnset, + [SPECIES_ILLUMISE] = sIllumiseTMHMLearnset, + [SPECIES_LILEEP] = sLileepTMHMLearnset, + [SPECIES_CRADILY] = sCradilyTMHMLearnset, + [SPECIES_ANORITH] = sAnorithTMHMLearnset, + [SPECIES_ARMALDO] = sArmaldoTMHMLearnset, + [SPECIES_RALTS] = sRaltsTMHMLearnset, + [SPECIES_KIRLIA] = sKirliaTMHMLearnset, + [SPECIES_GARDEVOIR] = sGardevoirTMHMLearnset, + [SPECIES_BAGON] = sBagonTMHMLearnset, + [SPECIES_SHELGON] = sShelgonTMHMLearnset, + [SPECIES_SALAMENCE] = sSalamenceTMHMLearnset, + [SPECIES_BELDUM] = sBeldumTMHMLearnset, + [SPECIES_METANG] = sMetangTMHMLearnset, + [SPECIES_METAGROSS] = sMetagrossTMHMLearnset, + [SPECIES_REGIROCK] = sRegirockTMHMLearnset, + [SPECIES_REGICE] = sRegiceTMHMLearnset, + [SPECIES_REGISTEEL] = sRegisteelTMHMLearnset, + [SPECIES_KYOGRE] = sKyogreTMHMLearnset, + [SPECIES_GROUDON] = sGroudonTMHMLearnset, + [SPECIES_RAYQUAZA] = sRayquazaTMHMLearnset, + [SPECIES_LATIAS] = sLatiasTMHMLearnset, + [SPECIES_LATIOS] = sLatiosTMHMLearnset, + [SPECIES_JIRACHI] = sJirachiTMHMLearnset, + [SPECIES_DEOXYS] = sDeoxysTMHMLearnset, + [SPECIES_CHIMECHO] = sChimechoTMHMLearnset, +#if P_NEW_POKEMON == TRUE + [SPECIES_TURTWIG] = sTurtwigTMHMLearnset, + [SPECIES_GROTLE] = sGrotleTMHMLearnset, + [SPECIES_TORTERRA] = sTorterraTMHMLearnset, + [SPECIES_CHIMCHAR] = sChimcharTMHMLearnset, + [SPECIES_MONFERNO] = sMonfernoTMHMLearnset, + [SPECIES_INFERNAPE] = sInfernapeTMHMLearnset, + [SPECIES_PIPLUP] = sPiplupTMHMLearnset, + [SPECIES_PRINPLUP] = sPrinplupTMHMLearnset, + [SPECIES_EMPOLEON] = sEmpoleonTMHMLearnset, + [SPECIES_STARLY] = sStarlyTMHMLearnset, + [SPECIES_STARAVIA] = sStaraviaTMHMLearnset, + [SPECIES_STARAPTOR] = sStaraptorTMHMLearnset, + [SPECIES_BIDOOF] = sBidoofTMHMLearnset, + [SPECIES_BIBAREL] = sBibarelTMHMLearnset, + [SPECIES_KRICKETOT] = sKricketotTMHMLearnset, + [SPECIES_KRICKETUNE] = sKricketuneTMHMLearnset, + [SPECIES_SHINX] = sShinxTMHMLearnset, + [SPECIES_LUXIO] = sLuxioTMHMLearnset, + [SPECIES_LUXRAY] = sLuxrayTMHMLearnset, + [SPECIES_BUDEW] = sBudewTMHMLearnset, + [SPECIES_ROSERADE] = sRoseradeTMHMLearnset, + [SPECIES_CRANIDOS] = sCranidosTMHMLearnset, + [SPECIES_RAMPARDOS] = sRampardosTMHMLearnset, + [SPECIES_SHIELDON] = sShieldonTMHMLearnset, + [SPECIES_BASTIODON] = sBastiodonTMHMLearnset, + [SPECIES_BURMY] = sBurmyTMHMLearnset, + [SPECIES_WORMADAM] = sWormadamTMHMLearnset, + [SPECIES_MOTHIM] = sMothimTMHMLearnset, + [SPECIES_COMBEE] = sCombeeTMHMLearnset, + [SPECIES_VESPIQUEN] = sVespiquenTMHMLearnset, + [SPECIES_PACHIRISU] = sPachirisuTMHMLearnset, + [SPECIES_BUIZEL] = sBuizelTMHMLearnset, + [SPECIES_FLOATZEL] = sFloatzelTMHMLearnset, + [SPECIES_CHERUBI] = sCherubiTMHMLearnset, + [SPECIES_CHERRIM] = sCherrimTMHMLearnset, + [SPECIES_SHELLOS] = sShellosTMHMLearnset, + [SPECIES_GASTRODON] = sGastrodonTMHMLearnset, + [SPECIES_AMBIPOM] = sAmbipomTMHMLearnset, + [SPECIES_DRIFLOON] = sDrifloonTMHMLearnset, + [SPECIES_DRIFBLIM] = sDrifblimTMHMLearnset, + [SPECIES_BUNEARY] = sBunearyTMHMLearnset, + [SPECIES_LOPUNNY] = sLopunnyTMHMLearnset, + [SPECIES_MISMAGIUS] = sMismagiusTMHMLearnset, + [SPECIES_HONCHKROW] = sHonchkrowTMHMLearnset, + [SPECIES_GLAMEOW] = sGlameowTMHMLearnset, + [SPECIES_PURUGLY] = sPuruglyTMHMLearnset, + [SPECIES_CHINGLING] = sChinglingTMHMLearnset, + [SPECIES_STUNKY] = sStunkyTMHMLearnset, + [SPECIES_SKUNTANK] = sSkuntankTMHMLearnset, + [SPECIES_BRONZOR] = sBronzorTMHMLearnset, + [SPECIES_BRONZONG] = sBronzongTMHMLearnset, + [SPECIES_BONSLY] = sBonslyTMHMLearnset, + [SPECIES_MIME_JR] = sMimeJrTMHMLearnset, + [SPECIES_HAPPINY] = sHappinyTMHMLearnset, + [SPECIES_CHATOT] = sChatotTMHMLearnset, + [SPECIES_SPIRITOMB] = sSpiritombTMHMLearnset, + [SPECIES_GIBLE] = sGibleTMHMLearnset, + [SPECIES_GABITE] = sGabiteTMHMLearnset, + [SPECIES_GARCHOMP] = sGarchompTMHMLearnset, + [SPECIES_MUNCHLAX] = sMunchlaxTMHMLearnset, + [SPECIES_RIOLU] = sRioluTMHMLearnset, + [SPECIES_LUCARIO] = sLucarioTMHMLearnset, + [SPECIES_HIPPOPOTAS] = sHippopotasTMHMLearnset, + [SPECIES_HIPPOWDON] = sHippowdonTMHMLearnset, + [SPECIES_SKORUPI] = sSkorupiTMHMLearnset, + [SPECIES_DRAPION] = sDrapionTMHMLearnset, + [SPECIES_CROAGUNK] = sCroagunkTMHMLearnset, + [SPECIES_TOXICROAK] = sToxicroakTMHMLearnset, + [SPECIES_CARNIVINE] = sCarnivineTMHMLearnset, + [SPECIES_FINNEON] = sFinneonTMHMLearnset, + [SPECIES_LUMINEON] = sLumineonTMHMLearnset, + [SPECIES_MANTYKE] = sMantykeTMHMLearnset, + [SPECIES_SNOVER] = sSnoverTMHMLearnset, + [SPECIES_ABOMASNOW] = sAbomasnowTMHMLearnset, + [SPECIES_WEAVILE] = sWeavileTMHMLearnset, + [SPECIES_MAGNEZONE] = sMagnezoneTMHMLearnset, + [SPECIES_LICKILICKY] = sLickilickyTMHMLearnset, + [SPECIES_RHYPERIOR] = sRhyperiorTMHMLearnset, + [SPECIES_TANGROWTH] = sTangrowthTMHMLearnset, + [SPECIES_ELECTIVIRE] = sElectivireTMHMLearnset, + [SPECIES_MAGMORTAR] = sMagmortarTMHMLearnset, + [SPECIES_TOGEKISS] = sTogekissTMHMLearnset, + [SPECIES_YANMEGA] = sYanmegaTMHMLearnset, + [SPECIES_LEAFEON] = sLeafeonTMHMLearnset, + [SPECIES_GLACEON] = sGlaceonTMHMLearnset, + [SPECIES_GLISCOR] = sGliscorTMHMLearnset, + [SPECIES_MAMOSWINE] = sMamoswineTMHMLearnset, + [SPECIES_PORYGON_Z] = sPorygonZTMHMLearnset, + [SPECIES_GALLADE] = sGalladeTMHMLearnset, + [SPECIES_PROBOPASS] = sProbopassTMHMLearnset, + [SPECIES_DUSKNOIR] = sDusknoirTMHMLearnset, + [SPECIES_FROSLASS] = sFroslassTMHMLearnset, + [SPECIES_ROTOM] = sRotomTMHMLearnset, + [SPECIES_UXIE] = sUxieTMHMLearnset, + [SPECIES_MESPRIT] = sMespritTMHMLearnset, + [SPECIES_AZELF] = sAzelfTMHMLearnset, + [SPECIES_DIALGA] = sDialgaTMHMLearnset, + [SPECIES_PALKIA] = sPalkiaTMHMLearnset, + [SPECIES_HEATRAN] = sHeatranTMHMLearnset, + [SPECIES_REGIGIGAS] = sRegigigasTMHMLearnset, + [SPECIES_GIRATINA] = sGiratinaTMHMLearnset, + [SPECIES_CRESSELIA] = sCresseliaTMHMLearnset, + [SPECIES_PHIONE] = sPhioneTMHMLearnset, + [SPECIES_MANAPHY] = sManaphyTMHMLearnset, + [SPECIES_DARKRAI] = sDarkraiTMHMLearnset, + [SPECIES_SHAYMIN] = sShayminTMHMLearnset, + [SPECIES_ARCEUS] = sArceusTMHMLearnset, + [SPECIES_VICTINI] = sVictiniTMHMLearnset, + [SPECIES_SNIVY] = sSnivyTMHMLearnset, + [SPECIES_SERVINE] = sServineTMHMLearnset, + [SPECIES_SERPERIOR] = sSerperiorTMHMLearnset, + [SPECIES_TEPIG] = sTepigTMHMLearnset, + [SPECIES_PIGNITE] = sPigniteTMHMLearnset, + [SPECIES_EMBOAR] = sEmboarTMHMLearnset, + [SPECIES_OSHAWOTT] = sOshawottTMHMLearnset, + [SPECIES_DEWOTT] = sDewottTMHMLearnset, + [SPECIES_SAMUROTT] = sSamurottTMHMLearnset, + [SPECIES_PATRAT] = sPatratTMHMLearnset, + [SPECIES_WATCHOG] = sWatchogTMHMLearnset, + [SPECIES_LILLIPUP] = sLillipupTMHMLearnset, + [SPECIES_HERDIER] = sHerdierTMHMLearnset, + [SPECIES_STOUTLAND] = sStoutlandTMHMLearnset, + [SPECIES_PURRLOIN] = sPurrloinTMHMLearnset, + [SPECIES_LIEPARD] = sLiepardTMHMLearnset, + [SPECIES_PANSAGE] = sPansageTMHMLearnset, + [SPECIES_SIMISAGE] = sSimisageTMHMLearnset, + [SPECIES_PANSEAR] = sPansearTMHMLearnset, + [SPECIES_SIMISEAR] = sSimisearTMHMLearnset, + [SPECIES_PANPOUR] = sPanpourTMHMLearnset, + [SPECIES_SIMIPOUR] = sSimipourTMHMLearnset, + [SPECIES_MUNNA] = sMunnaTMHMLearnset, + [SPECIES_MUSHARNA] = sMusharnaTMHMLearnset, + [SPECIES_PIDOVE] = sPidoveTMHMLearnset, + [SPECIES_TRANQUILL] = sTranquillTMHMLearnset, + [SPECIES_UNFEZANT] = sUnfezantTMHMLearnset, + [SPECIES_BLITZLE] = sBlitzleTMHMLearnset, + [SPECIES_ZEBSTRIKA] = sZebstrikaTMHMLearnset, + [SPECIES_ROGGENROLA] = sRoggenrolaTMHMLearnset, + [SPECIES_BOLDORE] = sBoldoreTMHMLearnset, + [SPECIES_GIGALITH] = sGigalithTMHMLearnset, + [SPECIES_WOOBAT] = sWoobatTMHMLearnset, + [SPECIES_SWOOBAT] = sSwoobatTMHMLearnset, + [SPECIES_DRILBUR] = sDrilburTMHMLearnset, + [SPECIES_EXCADRILL] = sExcadrillTMHMLearnset, + [SPECIES_AUDINO] = sAudinoTMHMLearnset, + [SPECIES_TIMBURR] = sTimburrTMHMLearnset, + [SPECIES_GURDURR] = sGurdurrTMHMLearnset, + [SPECIES_CONKELDURR] = sConkeldurrTMHMLearnset, + [SPECIES_TYMPOLE] = sTympoleTMHMLearnset, + [SPECIES_PALPITOAD] = sPalpitoadTMHMLearnset, + [SPECIES_SEISMITOAD] = sSeismitoadTMHMLearnset, + [SPECIES_THROH] = sThrohTMHMLearnset, + [SPECIES_SAWK] = sSawkTMHMLearnset, + [SPECIES_SEWADDLE] = sSewaddleTMHMLearnset, + [SPECIES_SWADLOON] = sSwadloonTMHMLearnset, + [SPECIES_LEAVANNY] = sLeavannyTMHMLearnset, + [SPECIES_VENIPEDE] = sVenipedeTMHMLearnset, + [SPECIES_WHIRLIPEDE] = sWhirlipedeTMHMLearnset, + [SPECIES_SCOLIPEDE] = sScolipedeTMHMLearnset, + [SPECIES_COTTONEE] = sCottoneeTMHMLearnset, + [SPECIES_WHIMSICOTT] = sWhimsicottTMHMLearnset, + [SPECIES_PETILIL] = sPetililTMHMLearnset, + [SPECIES_LILLIGANT] = sLilligantTMHMLearnset, + [SPECIES_BASCULIN] = sBasculinTMHMLearnset, + [SPECIES_SANDILE] = sSandileTMHMLearnset, + [SPECIES_KROKOROK] = sKrokorokTMHMLearnset, + [SPECIES_KROOKODILE] = sKrookodileTMHMLearnset, + [SPECIES_DARUMAKA] = sDarumakaTMHMLearnset, + [SPECIES_DARMANITAN] = sDarmanitanTMHMLearnset, + [SPECIES_MARACTUS] = sMaractusTMHMLearnset, + [SPECIES_DWEBBLE] = sDwebbleTMHMLearnset, + [SPECIES_CRUSTLE] = sCrustleTMHMLearnset, + [SPECIES_SCRAGGY] = sScraggyTMHMLearnset, + [SPECIES_SCRAFTY] = sScraftyTMHMLearnset, + [SPECIES_SIGILYPH] = sSigilyphTMHMLearnset, + [SPECIES_YAMASK] = sYamaskTMHMLearnset, + [SPECIES_COFAGRIGUS] = sCofagrigusTMHMLearnset, + [SPECIES_TIRTOUGA] = sTirtougaTMHMLearnset, + [SPECIES_CARRACOSTA] = sCarracostaTMHMLearnset, + [SPECIES_ARCHEN] = sArchenTMHMLearnset, + [SPECIES_ARCHEOPS] = sArcheopsTMHMLearnset, + [SPECIES_TRUBBISH] = sTrubbishTMHMLearnset, + [SPECIES_GARBODOR] = sGarbodorTMHMLearnset, + [SPECIES_ZORUA] = sZoruaTMHMLearnset, + [SPECIES_ZOROARK] = sZoroarkTMHMLearnset, + [SPECIES_MINCCINO] = sMinccinoTMHMLearnset, + [SPECIES_CINCCINO] = sCinccinoTMHMLearnset, + [SPECIES_GOTHITA] = sGothitaTMHMLearnset, + [SPECIES_GOTHORITA] = sGothoritaTMHMLearnset, + [SPECIES_GOTHITELLE] = sGothitelleTMHMLearnset, + [SPECIES_SOLOSIS] = sSolosisTMHMLearnset, + [SPECIES_DUOSION] = sDuosionTMHMLearnset, + [SPECIES_REUNICLUS] = sReuniclusTMHMLearnset, + [SPECIES_DUCKLETT] = sDucklettTMHMLearnset, + [SPECIES_SWANNA] = sSwannaTMHMLearnset, + [SPECIES_VANILLITE] = sVanilliteTMHMLearnset, + [SPECIES_VANILLISH] = sVanillishTMHMLearnset, + [SPECIES_VANILLUXE] = sVanilluxeTMHMLearnset, + [SPECIES_DEERLING] = sDeerlingTMHMLearnset, + [SPECIES_SAWSBUCK] = sSawsbuckTMHMLearnset, + [SPECIES_EMOLGA] = sEmolgaTMHMLearnset, + [SPECIES_KARRABLAST] = sKarrablastTMHMLearnset, + [SPECIES_ESCAVALIER] = sEscavalierTMHMLearnset, + [SPECIES_FOONGUS] = sFoongusTMHMLearnset, + [SPECIES_AMOONGUSS] = sAmoongussTMHMLearnset, + [SPECIES_FRILLISH] = sFrillishTMHMLearnset, + [SPECIES_JELLICENT] = sJellicentTMHMLearnset, + [SPECIES_ALOMOMOLA] = sAlomomolaTMHMLearnset, + [SPECIES_JOLTIK] = sJoltikTMHMLearnset, + [SPECIES_GALVANTULA] = sGalvantulaTMHMLearnset, + [SPECIES_FERROSEED] = sFerroseedTMHMLearnset, + [SPECIES_FERROTHORN] = sFerrothornTMHMLearnset, + [SPECIES_KLINK] = sKlinkTMHMLearnset, + [SPECIES_KLANG] = sKlangTMHMLearnset, + [SPECIES_KLINKLANG] = sKlinklangTMHMLearnset, + [SPECIES_TYNAMO] = sTynamoTMHMLearnset, + [SPECIES_EELEKTRIK] = sEelektrikTMHMLearnset, + [SPECIES_EELEKTROSS] = sEelektrossTMHMLearnset, + [SPECIES_ELGYEM] = sElgyemTMHMLearnset, + [SPECIES_BEHEEYEM] = sBeheeyemTMHMLearnset, + [SPECIES_LITWICK] = sLitwickTMHMLearnset, + [SPECIES_LAMPENT] = sLampentTMHMLearnset, + [SPECIES_CHANDELURE] = sChandelureTMHMLearnset, + [SPECIES_AXEW] = sAxewTMHMLearnset, + [SPECIES_FRAXURE] = sFraxureTMHMLearnset, + [SPECIES_HAXORUS] = sHaxorusTMHMLearnset, + [SPECIES_CUBCHOO] = sCubchooTMHMLearnset, + [SPECIES_BEARTIC] = sBearticTMHMLearnset, + [SPECIES_CRYOGONAL] = sCryogonalTMHMLearnset, + [SPECIES_SHELMET] = sShelmetTMHMLearnset, + [SPECIES_ACCELGOR] = sAccelgorTMHMLearnset, + [SPECIES_STUNFISK] = sStunfiskTMHMLearnset, + [SPECIES_MIENFOO] = sMienfooTMHMLearnset, + [SPECIES_MIENSHAO] = sMienshaoTMHMLearnset, + [SPECIES_DRUDDIGON] = sDruddigonTMHMLearnset, + [SPECIES_GOLETT] = sGolettTMHMLearnset, + [SPECIES_GOLURK] = sGolurkTMHMLearnset, + [SPECIES_PAWNIARD] = sPawniardTMHMLearnset, + [SPECIES_BISHARP] = sBisharpTMHMLearnset, + [SPECIES_BOUFFALANT] = sBouffalantTMHMLearnset, + [SPECIES_RUFFLET] = sRuffletTMHMLearnset, + [SPECIES_BRAVIARY] = sBraviaryTMHMLearnset, + [SPECIES_VULLABY] = sVullabyTMHMLearnset, + [SPECIES_MANDIBUZZ] = sMandibuzzTMHMLearnset, + [SPECIES_HEATMOR] = sHeatmorTMHMLearnset, + [SPECIES_DURANT] = sDurantTMHMLearnset, + [SPECIES_DEINO] = sDeinoTMHMLearnset, + [SPECIES_ZWEILOUS] = sZweilousTMHMLearnset, + [SPECIES_HYDREIGON] = sHydreigonTMHMLearnset, + [SPECIES_LARVESTA] = sLarvestaTMHMLearnset, + [SPECIES_VOLCARONA] = sVolcaronaTMHMLearnset, + [SPECIES_COBALION] = sCobalionTMHMLearnset, + [SPECIES_TERRAKION] = sTerrakionTMHMLearnset, + [SPECIES_VIRIZION] = sVirizionTMHMLearnset, + [SPECIES_TORNADUS] = sTornadusTMHMLearnset, + [SPECIES_THUNDURUS] = sThundurusTMHMLearnset, + [SPECIES_RESHIRAM] = sReshiramTMHMLearnset, + [SPECIES_ZEKROM] = sZekromTMHMLearnset, + [SPECIES_LANDORUS] = sLandorusTMHMLearnset, + [SPECIES_KYUREM] = sKyuremTMHMLearnset, + [SPECIES_KELDEO] = sKeldeoTMHMLearnset, + [SPECIES_MELOETTA] = sMeloettaTMHMLearnset, + [SPECIES_GENESECT] = sGenesectTMHMLearnset, + [SPECIES_CHESPIN] = sChespinTMHMLearnset, + [SPECIES_QUILLADIN] = sQuilladinTMHMLearnset, + [SPECIES_CHESNAUGHT] = sChesnaughtTMHMLearnset, + [SPECIES_FENNEKIN] = sFennekinTMHMLearnset, + [SPECIES_BRAIXEN] = sBraixenTMHMLearnset, + [SPECIES_DELPHOX] = sDelphoxTMHMLearnset, + [SPECIES_FROAKIE] = sFroakieTMHMLearnset, + [SPECIES_FROGADIER] = sFrogadierTMHMLearnset, + [SPECIES_GRENINJA] = sGreninjaTMHMLearnset, + [SPECIES_BUNNELBY] = sBunnelbyTMHMLearnset, + [SPECIES_DIGGERSBY] = sDiggersbyTMHMLearnset, + [SPECIES_FLETCHLING] = sFletchlingTMHMLearnset, + [SPECIES_FLETCHINDER] = sFletchinderTMHMLearnset, + [SPECIES_TALONFLAME] = sTalonflameTMHMLearnset, + [SPECIES_SCATTERBUG] = sScatterbugTMHMLearnset, + [SPECIES_SPEWPA] = sSpewpaTMHMLearnset, + [SPECIES_VIVILLON] = sVivillonTMHMLearnset, + [SPECIES_LITLEO] = sLitleoTMHMLearnset, + [SPECIES_PYROAR] = sPyroarTMHMLearnset, + [SPECIES_FLABEBE] = sFlabebeTMHMLearnset, + [SPECIES_FLOETTE] = sFloetteTMHMLearnset, + [SPECIES_FLORGES] = sFlorgesTMHMLearnset, + [SPECIES_SKIDDO] = sSkiddoTMHMLearnset, + [SPECIES_GOGOAT] = sGogoatTMHMLearnset, + [SPECIES_PANCHAM] = sPanchamTMHMLearnset, + [SPECIES_PANGORO] = sPangoroTMHMLearnset, + [SPECIES_FURFROU] = sFurfrouTMHMLearnset, + [SPECIES_ESPURR] = sEspurrTMHMLearnset, + [SPECIES_MEOWSTIC] = sMeowsticTMHMLearnset, + [SPECIES_HONEDGE] = sHonedgeTMHMLearnset, + [SPECIES_DOUBLADE] = sDoubladeTMHMLearnset, + [SPECIES_AEGISLASH] = sAegislashTMHMLearnset, + [SPECIES_SPRITZEE] = sSpritzeeTMHMLearnset, + [SPECIES_AROMATISSE] = sAromatisseTMHMLearnset, + [SPECIES_SWIRLIX] = sSwirlixTMHMLearnset, + [SPECIES_SLURPUFF] = sSlurpuffTMHMLearnset, + [SPECIES_INKAY] = sInkayTMHMLearnset, + [SPECIES_MALAMAR] = sMalamarTMHMLearnset, + [SPECIES_BINACLE] = sBinacleTMHMLearnset, + [SPECIES_BARBARACLE] = sBarbaracleTMHMLearnset, + [SPECIES_SKRELP] = sSkrelpTMHMLearnset, + [SPECIES_DRAGALGE] = sDragalgeTMHMLearnset, + [SPECIES_CLAUNCHER] = sClauncherTMHMLearnset, + [SPECIES_CLAWITZER] = sClawitzerTMHMLearnset, + [SPECIES_HELIOPTILE] = sHelioptileTMHMLearnset, + [SPECIES_HELIOLISK] = sHelioliskTMHMLearnset, + [SPECIES_TYRUNT] = sTyruntTMHMLearnset, + [SPECIES_TYRANTRUM] = sTyrantrumTMHMLearnset, + [SPECIES_AMAURA] = sAmauraTMHMLearnset, + [SPECIES_AURORUS] = sAurorusTMHMLearnset, + [SPECIES_SYLVEON] = sSylveonTMHMLearnset, + [SPECIES_HAWLUCHA] = sHawluchaTMHMLearnset, + [SPECIES_DEDENNE] = sDedenneTMHMLearnset, + [SPECIES_CARBINK] = sCarbinkTMHMLearnset, + [SPECIES_GOOMY] = sGoomyTMHMLearnset, + [SPECIES_SLIGGOO] = sSliggooTMHMLearnset, + [SPECIES_GOODRA] = sGoodraTMHMLearnset, + [SPECIES_KLEFKI] = sKlefkiTMHMLearnset, + [SPECIES_PHANTUMP] = sPhantumpTMHMLearnset, + [SPECIES_TREVENANT] = sTrevenantTMHMLearnset, + [SPECIES_PUMPKABOO] = sPumpkabooTMHMLearnset, + [SPECIES_GOURGEIST] = sGourgeistTMHMLearnset, + [SPECIES_BERGMITE] = sBergmiteTMHMLearnset, + [SPECIES_AVALUGG] = sAvaluggTMHMLearnset, + [SPECIES_NOIBAT] = sNoibatTMHMLearnset, + [SPECIES_NOIVERN] = sNoivernTMHMLearnset, + [SPECIES_XERNEAS] = sXerneasTMHMLearnset, + [SPECIES_YVELTAL] = sYveltalTMHMLearnset, + [SPECIES_ZYGARDE] = sZygardeTMHMLearnset, + [SPECIES_DIANCIE] = sDiancieTMHMLearnset, + [SPECIES_HOOPA] = sHoopaTMHMLearnset, + [SPECIES_VOLCANION] = sVolcanionTMHMLearnset, + [SPECIES_ROWLET] = sRowletTMHMLearnset, + [SPECIES_DARTRIX] = sDartrixTMHMLearnset, + [SPECIES_DECIDUEYE] = sDecidueyeTMHMLearnset, + [SPECIES_LITTEN] = sLittenTMHMLearnset, + [SPECIES_TORRACAT] = sTorracatTMHMLearnset, + [SPECIES_INCINEROAR] = sIncineroarTMHMLearnset, + [SPECIES_POPPLIO] = sPopplioTMHMLearnset, + [SPECIES_BRIONNE] = sBrionneTMHMLearnset, + [SPECIES_PRIMARINA] = sPrimarinaTMHMLearnset, + [SPECIES_PIKIPEK] = sPikipekTMHMLearnset, + [SPECIES_TRUMBEAK] = sTrumbeakTMHMLearnset, + [SPECIES_TOUCANNON] = sToucannonTMHMLearnset, + [SPECIES_YUNGOOS] = sYungoosTMHMLearnset, + [SPECIES_GUMSHOOS] = sGumshoosTMHMLearnset, + [SPECIES_GRUBBIN] = sGrubbinTMHMLearnset, + [SPECIES_CHARJABUG] = sCharjabugTMHMLearnset, + [SPECIES_VIKAVOLT] = sVikavoltTMHMLearnset, + [SPECIES_CRABRAWLER] = sCrabrawlerTMHMLearnset, + [SPECIES_CRABOMINABLE] = sCrabominableTMHMLearnset, + [SPECIES_ORICORIO] = sOricorioTMHMLearnset, + [SPECIES_CUTIEFLY] = sCutieflyTMHMLearnset, + [SPECIES_RIBOMBEE] = sRibombeeTMHMLearnset, + [SPECIES_ROCKRUFF] = sRockruffTMHMLearnset, + [SPECIES_LYCANROC] = sLycanrocTMHMLearnset, + [SPECIES_WISHIWASHI] = sWishiwashiTMHMLearnset, + [SPECIES_MAREANIE] = sMareanieTMHMLearnset, + [SPECIES_TOXAPEX] = sToxapexTMHMLearnset, + [SPECIES_MUDBRAY] = sMudbrayTMHMLearnset, + [SPECIES_MUDSDALE] = sMudsdaleTMHMLearnset, + [SPECIES_DEWPIDER] = sDewpiderTMHMLearnset, + [SPECIES_ARAQUANID] = sAraquanidTMHMLearnset, + [SPECIES_FOMANTIS] = sFomantisTMHMLearnset, + [SPECIES_LURANTIS] = sLurantisTMHMLearnset, + [SPECIES_MORELULL] = sMorelullTMHMLearnset, + [SPECIES_SHIINOTIC] = sShiinoticTMHMLearnset, + [SPECIES_SALANDIT] = sSalanditTMHMLearnset, + [SPECIES_SALAZZLE] = sSalazzleTMHMLearnset, + [SPECIES_STUFFUL] = sStuffulTMHMLearnset, + [SPECIES_BEWEAR] = sBewearTMHMLearnset, + [SPECIES_BOUNSWEET] = sBounsweetTMHMLearnset, + [SPECIES_STEENEE] = sSteeneeTMHMLearnset, + [SPECIES_TSAREENA] = sTsareenaTMHMLearnset, + [SPECIES_COMFEY] = sComfeyTMHMLearnset, + [SPECIES_ORANGURU] = sOranguruTMHMLearnset, + [SPECIES_PASSIMIAN] = sPassimianTMHMLearnset, + [SPECIES_WIMPOD] = sWimpodTMHMLearnset, + [SPECIES_GOLISOPOD] = sGolisopodTMHMLearnset, + [SPECIES_SANDYGAST] = sSandygastTMHMLearnset, + [SPECIES_PALOSSAND] = sPalossandTMHMLearnset, + [SPECIES_PYUKUMUKU] = sPyukumukuTMHMLearnset, + [SPECIES_TYPE_NULL] = sTypeNullTMHMLearnset, + [SPECIES_SILVALLY] = sSilvallyTMHMLearnset, + [SPECIES_MINIOR] = sMiniorTMHMLearnset, + [SPECIES_KOMALA] = sKomalaTMHMLearnset, + [SPECIES_TURTONATOR] = sTurtonatorTMHMLearnset, + [SPECIES_TOGEDEMARU] = sTogedemaruTMHMLearnset, + [SPECIES_MIMIKYU] = sMimikyuTMHMLearnset, + [SPECIES_BRUXISH] = sBruxishTMHMLearnset, + [SPECIES_DRAMPA] = sDrampaTMHMLearnset, + [SPECIES_DHELMISE] = sDhelmiseTMHMLearnset, + [SPECIES_JANGMO_O] = sJangmooTMHMLearnset, + [SPECIES_HAKAMO_O] = sHakamooTMHMLearnset, + [SPECIES_KOMMO_O] = sKommooTMHMLearnset, + [SPECIES_TAPU_KOKO] = sTapuKokoTMHMLearnset, + [SPECIES_TAPU_LELE] = sTapuLeleTMHMLearnset, + [SPECIES_TAPU_BULU] = sTapuBuluTMHMLearnset, + [SPECIES_TAPU_FINI] = sTapuFiniTMHMLearnset, + [SPECIES_COSMOG] = sCosmogTMHMLearnset, + [SPECIES_COSMOEM] = sCosmoemTMHMLearnset, + [SPECIES_SOLGALEO] = sSolgaleoTMHMLearnset, + [SPECIES_LUNALA] = sLunalaTMHMLearnset, + [SPECIES_NIHILEGO] = sNihilegoTMHMLearnset, + [SPECIES_BUZZWOLE] = sBuzzwoleTMHMLearnset, + [SPECIES_PHEROMOSA] = sPheromosaTMHMLearnset, + [SPECIES_XURKITREE] = sXurkitreeTMHMLearnset, + [SPECIES_CELESTEELA] = sCelesteelaTMHMLearnset, + [SPECIES_KARTANA] = sKartanaTMHMLearnset, + [SPECIES_GUZZLORD] = sGuzzlordTMHMLearnset, + [SPECIES_NECROZMA] = sNecrozmaTMHMLearnset, + [SPECIES_MAGEARNA] = sMagearnaTMHMLearnset, + [SPECIES_MARSHADOW] = sMarshadowTMHMLearnset, + [SPECIES_POIPOLE] = sPoipoleTMHMLearnset, + [SPECIES_NAGANADEL] = sNaganadelTMHMLearnset, + [SPECIES_STAKATAKA] = sStakatakaTMHMLearnset, + [SPECIES_BLACEPHALON] = sBlacephalonTMHMLearnset, + [SPECIES_ZERAORA] = sZeraoraTMHMLearnset, + [SPECIES_MELTAN] = sMeltanTMHMLearnset, + [SPECIES_MELMETAL] = sMelmetalTMHMLearnset, + [SPECIES_GROOKEY] = sGrookeyTMHMLearnset, + [SPECIES_THWACKEY] = sThwackeyTMHMLearnset, + [SPECIES_RILLABOOM] = sRillaboomTMHMLearnset, + [SPECIES_SCORBUNNY] = sScorbunnyTMHMLearnset, + [SPECIES_RABOOT] = sRabootTMHMLearnset, + [SPECIES_CINDERACE] = sCinderaceTMHMLearnset, + [SPECIES_SOBBLE] = sSobbleTMHMLearnset, + [SPECIES_DRIZZILE] = sDrizzileTMHMLearnset, + [SPECIES_INTELEON] = sInteleonTMHMLearnset, + [SPECIES_SKWOVET] = sSkwovetTMHMLearnset, + [SPECIES_GREEDENT] = sGreedentTMHMLearnset, + [SPECIES_ROOKIDEE] = sRookideeTMHMLearnset, + [SPECIES_CORVISQUIRE] = sCorvisquireTMHMLearnset, + [SPECIES_CORVIKNIGHT] = sCorviknightTMHMLearnset, + [SPECIES_BLIPBUG] = sBlipbugTMHMLearnset, + [SPECIES_DOTTLER] = sDottlerTMHMLearnset, + [SPECIES_ORBEETLE] = sOrbeetleTMHMLearnset, + [SPECIES_NICKIT] = sNickitTMHMLearnset, + [SPECIES_THIEVUL] = sThievulTMHMLearnset, + [SPECIES_GOSSIFLEUR] = sGossifleurTMHMLearnset, + [SPECIES_ELDEGOSS] = sEldegossTMHMLearnset, + [SPECIES_WOOLOO] = sWoolooTMHMLearnset, + [SPECIES_DUBWOOL] = sDubwoolTMHMLearnset, + [SPECIES_CHEWTLE] = sChewtleTMHMLearnset, + [SPECIES_DREDNAW] = sDrednawTMHMLearnset, + [SPECIES_YAMPER] = sYamperTMHMLearnset, + [SPECIES_BOLTUND] = sBoltundTMHMLearnset, + [SPECIES_ROLYCOLY] = sRolycolyTMHMLearnset, + [SPECIES_CARKOL] = sCarkolTMHMLearnset, + [SPECIES_COALOSSAL] = sCoalossalTMHMLearnset, + [SPECIES_APPLIN] = sApplinTMHMLearnset, + [SPECIES_FLAPPLE] = sFlappleTMHMLearnset, + [SPECIES_APPLETUN] = sAppletunTMHMLearnset, + [SPECIES_SILICOBRA] = sSilicobraTMHMLearnset, + [SPECIES_SANDACONDA] = sSandacondaTMHMLearnset, + [SPECIES_CRAMORANT] = sCramorantTMHMLearnset, + [SPECIES_ARROKUDA] = sArrokudaTMHMLearnset, + [SPECIES_BARRASKEWDA] = sBarraskewdaTMHMLearnset, + [SPECIES_TOXEL] = sToxelTMHMLearnset, + [SPECIES_TOXTRICITY] = sToxtricityTMHMLearnset, + [SPECIES_SIZZLIPEDE] = sSizzlipedeTMHMLearnset, + [SPECIES_CENTISKORCH] = sCentiskorchTMHMLearnset, + [SPECIES_CLOBBOPUS] = sClobbopusTMHMLearnset, + [SPECIES_GRAPPLOCT] = sGrapploctTMHMLearnset, + [SPECIES_SINISTEA] = sSinisteaTMHMLearnset, + [SPECIES_POLTEAGEIST] = sPolteageistTMHMLearnset, + [SPECIES_HATENNA] = sHatennaTMHMLearnset, + [SPECIES_HATTREM] = sHattremTMHMLearnset, + [SPECIES_HATTERENE] = sHattereneTMHMLearnset, + [SPECIES_IMPIDIMP] = sImpidimpTMHMLearnset, + [SPECIES_MORGREM] = sMorgremTMHMLearnset, + [SPECIES_GRIMMSNARL] = sGrimmsnarlTMHMLearnset, + [SPECIES_OBSTAGOON] = sObstagoonTMHMLearnset, + [SPECIES_PERRSERKER] = sPerrserkerTMHMLearnset, + [SPECIES_CURSOLA] = sCursolaTMHMLearnset, + [SPECIES_SIRFETCHD] = sSirfetchdTMHMLearnset, + [SPECIES_MR_RIME] = sMrRimeTMHMLearnset, + [SPECIES_RUNERIGUS] = sRunerigusTMHMLearnset, + [SPECIES_MILCERY] = sMilceryTMHMLearnset, + [SPECIES_ALCREMIE] = sAlcremieTMHMLearnset, + [SPECIES_FALINKS] = sFalinksTMHMLearnset, + [SPECIES_PINCURCHIN] = sPincurchinTMHMLearnset, + [SPECIES_SNOM] = sSnomTMHMLearnset, + [SPECIES_FROSMOTH] = sFrosmothTMHMLearnset, + [SPECIES_STONJOURNER] = sStonjournerTMHMLearnset, + [SPECIES_EISCUE] = sEiscueTMHMLearnset, + [SPECIES_INDEEDEE] = sIndeedeeTMHMLearnset, + [SPECIES_MORPEKO] = sMorpekoTMHMLearnset, + [SPECIES_CUFANT] = sCufantTMHMLearnset, + [SPECIES_COPPERAJAH] = sCopperajahTMHMLearnset, + [SPECIES_DRACOZOLT] = sDracozoltTMHMLearnset, + [SPECIES_ARCTOZOLT] = sArctozoltTMHMLearnset, + [SPECIES_DRACOVISH] = sDracovishTMHMLearnset, + [SPECIES_ARCTOVISH] = sArctovishTMHMLearnset, + [SPECIES_DURALUDON] = sDuraludonTMHMLearnset, + [SPECIES_DREEPY] = sDreepyTMHMLearnset, + [SPECIES_DRAKLOAK] = sDrakloakTMHMLearnset, + [SPECIES_DRAGAPULT] = sDragapultTMHMLearnset, + [SPECIES_ZACIAN] = sZacianTMHMLearnset, + [SPECIES_ZAMAZENTA] = sZamazentaTMHMLearnset, + [SPECIES_ETERNATUS] = sEternatusTMHMLearnset, + [SPECIES_KUBFU] = sKubfuTMHMLearnset, + [SPECIES_URSHIFU] = sUrshifuTMHMLearnset, + [SPECIES_ZARUDE] = sZarudeTMHMLearnset, + [SPECIES_REGIELEKI] = sRegielekiTMHMLearnset, + [SPECIES_REGIDRAGO] = sRegidragoTMHMLearnset, + [SPECIES_GLASTRIER] = sGlastrierTMHMLearnset, + [SPECIES_SPECTRIER] = sSpectrierTMHMLearnset, + [SPECIES_CALYREX] = sCalyrexTMHMLearnset, + // Megas + [SPECIES_VENUSAUR_MEGA] = sVenusaurTMHMLearnset, + [SPECIES_CHARIZARD_MEGA_X] = sCharizardTMHMLearnset, + [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTMHMLearnset, + [SPECIES_BLASTOISE_MEGA] = sBlastoiseTMHMLearnset, + [SPECIES_BEEDRILL_MEGA] = sBeedrillTMHMLearnset, + [SPECIES_PIDGEOT_MEGA] = sPidgeotTMHMLearnset, + [SPECIES_ALAKAZAM_MEGA] = sAlakazamTMHMLearnset, + [SPECIES_SLOWBRO_MEGA] = sSlowbroTMHMLearnset, + [SPECIES_GENGAR_MEGA] = sGengarTMHMLearnset, + [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTMHMLearnset, + [SPECIES_PINSIR_MEGA] = sPinsirTMHMLearnset, + [SPECIES_GYARADOS_MEGA] = sGyaradosTMHMLearnset, + [SPECIES_AERODACTYL_MEGA] = sAerodactylTMHMLearnset, + [SPECIES_MEWTWO_MEGA_X] = sMewtwoTMHMLearnset, + [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTMHMLearnset, + [SPECIES_AMPHAROS_MEGA] = sAmpharosTMHMLearnset, + [SPECIES_STEELIX_MEGA] = sSteelixTMHMLearnset, + [SPECIES_SCIZOR_MEGA] = sScizorTMHMLearnset, + [SPECIES_HERACROSS_MEGA] = sHeracrossTMHMLearnset, + [SPECIES_HOUNDOOM_MEGA] = sHoundoomTMHMLearnset, + [SPECIES_TYRANITAR_MEGA] = sTyranitarTMHMLearnset, + [SPECIES_SCEPTILE_MEGA] = sSceptileTMHMLearnset, + [SPECIES_BLAZIKEN_MEGA] = sBlazikenTMHMLearnset, + [SPECIES_SWAMPERT_MEGA] = sSwampertTMHMLearnset, + [SPECIES_GARDEVOIR_MEGA] = sGardevoirTMHMLearnset, + [SPECIES_SABLEYE_MEGA] = sSableyeTMHMLearnset, + [SPECIES_MAWILE_MEGA] = sMawileTMHMLearnset, + [SPECIES_AGGRON_MEGA] = sAggronTMHMLearnset, + [SPECIES_MEDICHAM_MEGA] = sMedichamTMHMLearnset, + [SPECIES_MANECTRIC_MEGA] = sManectricTMHMLearnset, + [SPECIES_SHARPEDO_MEGA] = sSharpedoTMHMLearnset, + [SPECIES_CAMERUPT_MEGA] = sCameruptTMHMLearnset, + [SPECIES_ALTARIA_MEGA] = sAltariaTMHMLearnset, + [SPECIES_BANETTE_MEGA] = sBanetteTMHMLearnset, + [SPECIES_ABSOL_MEGA] = sAbsolTMHMLearnset, + [SPECIES_GLALIE_MEGA] = sGlalieTMHMLearnset, + [SPECIES_SALAMENCE_MEGA] = sSalamenceTMHMLearnset, + [SPECIES_METAGROSS_MEGA] = sMetagrossTMHMLearnset, + [SPECIES_LATIAS_MEGA] = sLatiasTMHMLearnset, + [SPECIES_LATIOS_MEGA] = sLatiosTMHMLearnset, + [SPECIES_LOPUNNY_MEGA] = sLopunnyTMHMLearnset, + [SPECIES_GARCHOMP_MEGA] = sGarchompTMHMLearnset, + [SPECIES_LUCARIO_MEGA] = sLucarioTMHMLearnset, + [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTMHMLearnset, + [SPECIES_GALLADE_MEGA] = sGalladeTMHMLearnset, + [SPECIES_AUDINO_MEGA] = sAudinoTMHMLearnset, + [SPECIES_DIANCIE_MEGA] = sDiancieTMHMLearnset, + // Special Mega + Primals + [SPECIES_RAYQUAZA_MEGA] = sRayquazaTMHMLearnset, + [SPECIES_KYOGRE_PRIMAL] = sKyogreTMHMLearnset, + [SPECIES_GROUDON_PRIMAL] = sGroudonTMHMLearnset, + // Alolan Forms + [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTMHMLearnset, + [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTMHMLearnset, + [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTMHMLearnset, + [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTMHMLearnset, + [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTMHMLearnset, + [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTMHMLearnset, + [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTMHMLearnset, + [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTMHMLearnset, + [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTMHMLearnset, + [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTMHMLearnset, + [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTMHMLearnset, + [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTMHMLearnset, + [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTMHMLearnset, + [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTMHMLearnset, + [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTMHMLearnset, + [SPECIES_MUK_ALOLAN] = sMukAlolanTMHMLearnset, + [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTMHMLearnset, + [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTMHMLearnset, + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTMHMLearnset, + [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTMHMLearnset, + [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTMHMLearnset, + [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTMHMLearnset, + [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTMHMLearnset, + [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTMHMLearnset, + [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTMHMLearnset, + [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTMHMLearnset, + [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTMHMLearnset, + [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTMHMLearnset, + [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTMHMLearnset, + [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTMHMLearnset, + [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTMHMLearnset, + [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTMHMLearnset, + [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTMHMLearnset, + [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTMHMLearnset, + [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTMHMLearnset, + [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTMHMLearnset, + [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTMHMLearnset, + // Misc Forms + // Cosplay Pikachu + [SPECIES_PIKACHU_COSPLAY] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_BELLE] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_POP_STAR] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_PH_D] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_LIBRE] = sPikachuTMHMLearnset, + // Cap Pikachu + [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTMHMLearnset, + [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTMHMLearnset, + // Pichu + [SPECIES_PICHU_SPIKY_EARED] = sPichuTMHMLearnset, +#endif + // Unown + [SPECIES_UNOWN_B] = sUnownTMHMLearnset, + [SPECIES_UNOWN_C] = sUnownTMHMLearnset, + [SPECIES_UNOWN_D] = sUnownTMHMLearnset, + [SPECIES_UNOWN_E] = sUnownTMHMLearnset, + [SPECIES_UNOWN_F] = sUnownTMHMLearnset, + [SPECIES_UNOWN_G] = sUnownTMHMLearnset, + [SPECIES_UNOWN_H] = sUnownTMHMLearnset, + [SPECIES_UNOWN_I] = sUnownTMHMLearnset, + [SPECIES_UNOWN_J] = sUnownTMHMLearnset, + [SPECIES_UNOWN_K] = sUnownTMHMLearnset, + [SPECIES_UNOWN_L] = sUnownTMHMLearnset, + [SPECIES_UNOWN_M] = sUnownTMHMLearnset, + [SPECIES_UNOWN_N] = sUnownTMHMLearnset, + [SPECIES_UNOWN_O] = sUnownTMHMLearnset, + [SPECIES_UNOWN_P] = sUnownTMHMLearnset, + [SPECIES_UNOWN_Q] = sUnownTMHMLearnset, + [SPECIES_UNOWN_R] = sUnownTMHMLearnset, + [SPECIES_UNOWN_S] = sUnownTMHMLearnset, + [SPECIES_UNOWN_T] = sUnownTMHMLearnset, + [SPECIES_UNOWN_U] = sUnownTMHMLearnset, + [SPECIES_UNOWN_V] = sUnownTMHMLearnset, + [SPECIES_UNOWN_W] = sUnownTMHMLearnset, + [SPECIES_UNOWN_X] = sUnownTMHMLearnset, + [SPECIES_UNOWN_Y] = sUnownTMHMLearnset, + [SPECIES_UNOWN_Z] = sUnownTMHMLearnset, + [SPECIES_UNOWN_EMARK] = sUnownTMHMLearnset, + [SPECIES_UNOWN_QMARK] = sUnownTMHMLearnset, + // Castform + [SPECIES_CASTFORM_SUNNY] = sCastformTMHMLearnset, + [SPECIES_CASTFORM_RAINY] = sCastformTMHMLearnset, + [SPECIES_CASTFORM_SNOWY] = sCastformTMHMLearnset, + // Deoxys + [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTMHMLearnset, + [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTMHMLearnset, + [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTMHMLearnset, +#if P_NEW_POKEMON == TRUE + // Burmy + [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTMHMLearnset, + [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTMHMLearnset, + // Wormadam + [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTMHMLearnset, + [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTMHMLearnset, + // Cherrim + [SPECIES_CHERRIM_SUNSHINE] = sCherrimTMHMLearnset, + // Shellos + [SPECIES_SHELLOS_EAST_SEA] = sShellosTMHMLearnset, + // Gastrodon + [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTMHMLearnset, + // Rotom + [SPECIES_ROTOM_HEAT] = sRotomTMHMLearnset, + [SPECIES_ROTOM_WASH] = sRotomTMHMLearnset, + [SPECIES_ROTOM_FROST] = sRotomTMHMLearnset, + [SPECIES_ROTOM_FAN] = sRotomTMHMLearnset, + [SPECIES_ROTOM_MOW] = sRotomTMHMLearnset, + // Giratina + [SPECIES_GIRATINA_ORIGIN] = sGiratinaTMHMLearnset, + // Shaymin + [SPECIES_SHAYMIN_SKY] = sShayminSkyTMHMLearnset, + // Arceus + [SPECIES_ARCEUS_FIGHTING] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_FLYING] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_POISON] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_GROUND] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_ROCK] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_BUG] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_GHOST] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_STEEL] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_FIRE] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_WATER] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_GRASS] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_ELECTRIC] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_PSYCHIC] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_ICE] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_DRAGON] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_DARK] = sArceusTMHMLearnset, + [SPECIES_ARCEUS_FAIRY] = sArceusTMHMLearnset, + // Basculin + [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTMHMLearnset, + // Darmanitan + [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTMHMLearnset, + [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTMHMLearnset, + // Deerling + [SPECIES_DEERLING_SUMMER] = sDeerlingTMHMLearnset, + [SPECIES_DEERLING_AUTUMN] = sDeerlingTMHMLearnset, + [SPECIES_DEERLING_WINTER] = sDeerlingTMHMLearnset, + // Sawsbuck + [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTMHMLearnset, + [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTMHMLearnset, + [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTMHMLearnset, + // Therian Forms + [SPECIES_TORNADUS_THERIAN] = sTornadusTMHMLearnset, + [SPECIES_THUNDURUS_THERIAN] = sThundurusTMHMLearnset, + [SPECIES_LANDORUS_THERIAN] = sLandorusTMHMLearnset, + // Kyurem + [SPECIES_KYUREM_WHITE] = sKyuremWhiteTMHMLearnset, + [SPECIES_KYUREM_BLACK] = sKyuremBlackTMHMLearnset, + // Keldeo + [SPECIES_KELDEO_RESOLUTE] = sKeldeoTMHMLearnset, + // Meloetta + [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTMHMLearnset, + // Genesect + [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTMHMLearnset, + [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTMHMLearnset, + [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTMHMLearnset, + [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTMHMLearnset, + // Greninja + [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTMHMLearnset, + [SPECIES_GRENINJA_ASH] = sGreninjaTMHMLearnset, + // Vivillon + [SPECIES_VIVILLON_POLAR] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_TUNDRA] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_GARDEN] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_ELEGANT] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_MEADOW] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_MODERN] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_MARINE] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_SANDSTORM] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_RIVER] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_MONSOON] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_SAVANNA] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_SUN] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_OCEAN] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_JUNGLE] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_FANCY] = sVivillonTMHMLearnset, + [SPECIES_VIVILLON_POKE_BALL] = sVivillonTMHMLearnset, + // Flabébé + [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTMHMLearnset, + [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTMHMLearnset, + [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTMHMLearnset, + [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTMHMLearnset, + // Floette + [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTMHMLearnset, + [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTMHMLearnset, + [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTMHMLearnset, + [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTMHMLearnset, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTMHMLearnset, + // Florges + [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTMHMLearnset, + [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTMHMLearnset, + [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTMHMLearnset, + [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTMHMLearnset, + //Furfrou + [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTMHMLearnset, + [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTMHMLearnset, + // Meowstic + [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTMHMLearnset, + // Aegislash + [SPECIES_AEGISLASH_BLADE] = sAegislashTMHMLearnset, + // Pumpkaboo + [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTMHMLearnset, + [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTMHMLearnset, + [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTMHMLearnset, + // Gourgeist + [SPECIES_GOURGEIST_SMALL] = sGourgeistTMHMLearnset, + [SPECIES_GOURGEIST_LARGE] = sGourgeistTMHMLearnset, + [SPECIES_GOURGEIST_SUPER] = sGourgeistTMHMLearnset, + // Xerneas + [SPECIES_XERNEAS_ACTIVE] = sXerneasTMHMLearnset, + // Zygarde + [SPECIES_ZYGARDE_10] = sZygardeTMHMLearnset, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTMHMLearnset, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTMHMLearnset, + [SPECIES_ZYGARDE_COMPLETE] = sZygardeTMHMLearnset, + // Hoopa + [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTMHMLearnset, + // Oricorio + [SPECIES_ORICORIO_POM_POM] = sOricorioTMHMLearnset, + [SPECIES_ORICORIO_PAU] = sOricorioTMHMLearnset, + [SPECIES_ORICORIO_SENSU] = sOricorioTMHMLearnset, + // Rockruff + [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTMHMLearnset, + // Lycanroc + [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTMHMLearnset, + [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTMHMLearnset, + // Wishiwashi + [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTMHMLearnset, + // Silvally + [SPECIES_SILVALLY_FIGHTING] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_FLYING] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_POISON] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_GROUND] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_ROCK] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_BUG] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_GHOST] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_STEEL] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_FIRE] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_WATER] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_GRASS] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_ICE] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_DRAGON] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_DARK] = sSilvallyTMHMLearnset, + [SPECIES_SILVALLY_FAIRY] = sSilvallyTMHMLearnset, + // Minior + [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_RED] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_GREEN] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_BLUE] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTMHMLearnset, + [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTMHMLearnset, + // Mimikyu + [SPECIES_MIMIKYU_BUSTED] = sMimikyuTMHMLearnset, + // Necrozma + [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTMHMLearnset, + [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTMHMLearnset, + [SPECIES_NECROZMA_ULTRA] = sNecrozmaTMHMLearnset, + // Magearna + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTMHMLearnset, + // Cramorant + [SPECIES_CRAMORANT_GULPING] = sCramorantTMHMLearnset, + [SPECIES_CRAMORANT_GORGING] = sCramorantTMHMLearnset, + // Toxtricity + [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTMHMLearnset, + // Sinistea + [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTMHMLearnset, + // Polteageist + [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTMHMLearnset, + // Alcremie + [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTMHMLearnset, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTMHMLearnset, + // Eiscue + [SPECIES_EISCUE_NOICE_FACE] = sEiscueTMHMLearnset, + // Indeedee + [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTMHMLearnset, + // Morpeko + [SPECIES_MORPEKO_HANGRY] = sMorpekoTMHMLearnset, + // Zacian + [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTMHMLearnset, + // Zamazenta + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTMHMLearnset, + // Eternatus + [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTMHMLearnset, + // Urshifu + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTMHMLearnset, + // Zarude + [SPECIES_ZARUDE_DADA] = sZarudeTMHMLearnset, + // Calyrex + [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTMHMLearnset, + [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTMHMLearnset, +#endif +}; diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index 014e4a598e..4927171407 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -1,24757 +1,28096 @@ -#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)} -#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH - ((ITEM_##tmhm > ITEM_TM100) ? 50 : 0))) - -// This table determines which TMs and HMs a species is capable of learning. -// Each entry is a 64-bit bit array spread across two 32-bit values, with -// each bit corresponding to a TM or HM. -const u32 gTMHMLearnsets[][2] = -{ - [SPECIES_NONE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM26_EARTHQUAKE) - | TMHM(HM02_FLY) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CATERPIE] = TMHM_LEARNSET(0), - - [SPECIES_METAPOD] = TMHM_LEARNSET(0), - - [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WEEDLE] = TMHM_LEARNSET(0), - - [SPECIES_KAKUNA] = TMHM_LEARNSET(0), - - [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MAGIKARP] = TMHM_LEARNSET(0), - - [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DITTO] = TMHM_LEARNSET(0), - - [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_UNOWN] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_WOBBUFFET] = TMHM_LEARNSET(TMHM(TM20_SAFEGUARD)), - - [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SMEARGLE] = TMHM_LEARNSET(TMHM(TM35_FLAMETHROWER)), - - [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WURMPLE] = TMHM_LEARNSET(0), - - [SPECIES_SILCOON] = TMHM_LEARNSET(0), - - [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_CASCOON] = TMHM_LEARNSET(0), - - [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM06_TOXIC)), - - [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WYNAUT] = TMHM_LEARNSET(TMHM(TM20_SAFEGUARD)), - - [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BELDUM] = TMHM_LEARNSET(0), - - [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - -#if P_NEW_POKEMON == TRUE - [SPECIES_TURTWIG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GROTLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORTERRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHIMCHAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MONFERNO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_INFERNAPE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIPLUP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PRINPLUP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_EMPOLEON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_STARLY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_STARAVIA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_STARAPTOR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_BIDOOF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BIBAREL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KRICKETOT] = TMHM_LEARNSET(0), - - [SPECIES_KRICKETUNE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHINX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LUXIO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LUXRAY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BUDEW] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ROSERADE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRANIDOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RAMPARDOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHIELDON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BASTIODON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BURMY] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT)), - - [SPECIES_WORMADAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MOTHIM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_COMBEE] = TMHM_LEARNSET(0), - - [SPECIES_VESPIQUEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PACHIRISU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BUIZEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FLOATZEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CHERUBI] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHERRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHELLOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GASTRODON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AMBIPOM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRIFLOON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DRIFBLIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BUNEARY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LOPUNNY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MISMAGIUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HONCHKROW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GLAMEOW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PURUGLY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CHINGLING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STUNKY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SKUNTANK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRONZOR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRONZONG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BONSLY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MIME_JR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HAPPINY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CHATOT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPIRITOMB] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GIBLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GABITE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GARCHOMP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUNCHLAX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_RIOLU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LUCARIO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HIPPOPOTAS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HIPPOWDON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SKORUPI] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DRAPION] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CROAGUNK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TOXICROAK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CARNIVINE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FINNEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_LUMINEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MANTYKE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SNOVER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ABOMASNOW] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_WEAVILE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGNEZONE] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LICKILICKY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_RHYPERIOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TANGROWTH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ELECTIVIRE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGMORTAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TOGEKISS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_YANMEGA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LEAFEON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GLACEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GLISCOR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAMOSWINE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_PORYGON_Z] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GALLADE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PROBOPASS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUSKNOIR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FROSLASS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ROTOM] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_UXIE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MESPRIT] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AZELF] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DIALGA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PALKIA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HEATRAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_REGIGIGAS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GIRATINA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRESSELIA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_PHIONE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MANAPHY] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DARKRAI] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHAYMIN] = TMHM_LEARNSET(TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARCEUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VICTINI] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SNIVY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SERVINE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SERPERIOR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TEPIG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIGNITE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_EMBOAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_OSHAWOTT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEWOTT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SAMUROTT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PATRAT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_WATCHOG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LILLIPUP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HERDIER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STOUTLAND] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PURRLOIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LIEPARD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PANSAGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SIMISAGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PANSEAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SIMISEAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PANPOUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SIMIPOUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MUNNA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUSHARNA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIDOVE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TRANQUILL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_UNFEZANT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BLITZLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZEBSTRIKA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ROGGENROLA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_BOLDORE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_GIGALITH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_WOOBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWOOBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DRILBUR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_EXCADRILL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_AUDINO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TIMBURR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GURDURR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CONKELDURR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYMPOLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PALPITOAD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SEISMITOAD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_THROH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SAWK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SEWADDLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWADLOON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LEAVANNY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VENIPEDE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_WHIRLIPEDE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCOLIPEDE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_COTTONEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_WHIMSICOTT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PETILIL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LILLIGANT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BASCULIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL)), - - [SPECIES_SANDILE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KROKOROK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KROOKODILE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DARUMAKA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DARMANITAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MARACTUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DWEBBLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRUSTLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCRAGGY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCRAFTY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SIGILYPH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_YAMASK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_COFAGRIGUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TIRTOUGA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CARRACOSTA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCHEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARCHEOPS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TRUBBISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GARBODOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZORUA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZOROARK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINCCINO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CINCCINO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOTHITA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOTHORITA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOTHITELLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SOLOSIS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUOSION] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_REUNICLUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUCKLETT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SWANNA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VANILLITE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VANILLISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VANILLUXE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEERLING] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SAWSBUCK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_EMOLGA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KARRABLAST] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM06_TOXIC)), - - [SPECIES_ESCAVALIER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM06_TOXIC)), - - [SPECIES_FOONGUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_AMOONGUSS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FRILLISH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_JELLICENT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ALOMOMOLA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_JOLTIK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GALVANTULA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FERROSEED] = TMHM_LEARNSET(TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FERROTHORN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KLINK] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KLANG] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KLINKLANG] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYNAMO] = TMHM_LEARNSET(0), - - [SPECIES_EELEKTRIK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_EELEKTROSS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ELGYEM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BEHEEYEM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LITWICK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LAMPENT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHANDELURE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_AXEW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FRAXURE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HAXORUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CUBCHOO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BEARTIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CRYOGONAL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SHELMET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM06_TOXIC)), - - [SPECIES_ACCELGOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM06_TOXIC)), - - [SPECIES_STUNFISK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MIENFOO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MIENSHAO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DRUDDIGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOLETT] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOLURK] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PAWNIARD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BISHARP] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BOUFFALANT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RUFFLET] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRAVIARY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VULLABY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MANDIBUZZ] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HEATMOR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DURANT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_DEINO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZWEILOUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HYDREIGON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LARVESTA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_VOLCARONA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_COBALION] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TERRAKION] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIRIZION] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORNADUS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_THUNDURUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RESHIRAM] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZEKROM] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LANDORUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_KYUREM] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_KELDEO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MELOETTA] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GENESECT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHESPIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_QUILLADIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHESNAUGHT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FENNEKIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRAIXEN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_DELPHOX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FROAKIE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FROGADIER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GRENINJA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BUNNELBY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DIGGERSBY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLETCHLING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLETCHINDER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TALONFLAME] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SCATTERBUG] = TMHM_LEARNSET(0), - - [SPECIES_SPEWPA] = TMHM_LEARNSET(TMHM(TM17_PROTECT)), - - [SPECIES_VIVILLON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_LITLEO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PYROAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLABEBE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLORGES] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SKIDDO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOGOAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PANCHAM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PANGORO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ESPURR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEOWSTIC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HONEDGE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM06_TOXIC)), - - [SPECIES_DOUBLADE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM06_TOXIC)), - - [SPECIES_AEGISLASH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SPRITZEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_AROMATISSE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SWIRLIX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SLURPUFF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_INKAY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MALAMAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BINACLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BARBARACLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SKRELP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRAGALGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLAUNCHER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CLAWITZER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_HELIOPTILE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HELIOLISK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYRUNT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYRANTRUM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_AMAURA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AURORUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SYLVEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_HAWLUCHA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_DEDENNE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CARBINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOOMY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SLIGGOO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GOODRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_KLEFKI] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PHANTUMP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TREVENANT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PUMPKABOO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOURGEIST] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_BERGMITE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_AVALUGG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NOIBAT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_NOIVERN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_XERNEAS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_YVELTAL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZYGARDE] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DIANCIE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_HOOPA] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_VOLCANION] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ROWLET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DARTRIX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DECIDUEYE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LITTEN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORRACAT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_INCINEROAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_POPPLIO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BRIONNE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PRIMARINA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_PIKIPEK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TRUMBEAK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_TOUCANNON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_YUNGOOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GUMSHOOS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRUBBIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CHARJABUG] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIKAVOLT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRABRAWLER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_CRABOMINABLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ORICORIO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CUTIEFLY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_RIBOMBEE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ROCKRUFF] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LYCANROC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_WISHIWASHI] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MAREANIE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TOXAPEX] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_MUDBRAY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUDSDALE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM06_TOXIC)), - - [SPECIES_DEWPIDER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARAQUANID] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FOMANTIS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_LURANTIS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_MORELULL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHIINOTIC] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SALANDIT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SALAZZLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STUFFUL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BEWEAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BOUNSWEET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_STEENEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TSAREENA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_COMFEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ORANGURU] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PASSIMIAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WIMPOD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL)), - - [SPECIES_GOLISOPOD] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SANDYGAST] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM06_TOXIC)), - - [SPECIES_PALOSSAND] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM06_TOXIC)), - - [SPECIES_PYUKUMUKU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM07_HAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TYPE_NULL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_KOMALA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM27_RETURN) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TURTONATOR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TOGEDEMARU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MIMIKYU] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BRUXISH] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM49_SNATCH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRAMPA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DHELMISE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_JANGMO_O] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_HAKAMO_O] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_KOMMO_O] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_TAPU_KOKO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TAPU_LELE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TAPU_BULU] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_TAPU_FINI] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_COSMOG] = TMHM_LEARNSET(0), - - [SPECIES_COSMOEM] = TMHM_LEARNSET(0), - - [SPECIES_SOLGALEO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LUNALA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_NIHILEGO] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_BUZZWOLE] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PHEROMOSA] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_XURKITREE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_CELESTEELA] = TMHM_LEARNSET(TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_KARTANA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM06_TOXIC)), - - [SPECIES_GUZZLORD] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_NECROZMA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGEARNA] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_MARSHADOW] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM49_SNATCH) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_POIPOLE] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM06_TOXIC)), - - [SPECIES_NAGANADEL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM49_SNATCH) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_STAKATAKA] = TMHM_LEARNSET(TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM06_TOXIC)), - - [SPECIES_BLACEPHALON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZERAORA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM49_SNATCH) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - //TMs of LGPE don't match with USUM - [SPECIES_MELTAN] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_MELMETAL] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_GROOKEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_THWACKEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_RILLABOOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_SCORBUNNY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_RABOOT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_CINDERACE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), - - [SPECIES_SOBBLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DRIZZILE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_INTELEON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SKWOVET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM46_THIEF)), - - [SPECIES_GREEDENT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM46_THIEF)), - - [SPECIES_ROOKIDEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_CORVISQUIRE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_CORVIKNIGHT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_BLIPBUG] = TMHM_LEARNSET(0), - - [SPECIES_DOTTLER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ORBEETLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_NICKIT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT)), - - [SPECIES_THIEVUL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_GOSSIFLEUR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_ELDEGOSS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_WOOLOO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_DUBWOOL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_CHEWTLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(HM03_SURF)), - - [SPECIES_DREDNAW] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL)), - - [SPECIES_YAMPER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM05_ROAR) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_BOLTUND] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM05_ROAR) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_ROLYCOLY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM)), - - [SPECIES_CARKOL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM)), - - [SPECIES_COALOSSAL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_APPLIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT)), - - [SPECIES_FLAPPLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_APPLETUN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_SILICOBRA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM37_SANDSTORM)), - - [SPECIES_SANDACONDA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM)), - - [SPECIES_CRAMORANT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF)), - - [SPECIES_ARROKUDA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(HM07_WATERFALL)), - - [SPECIES_BARRASKEWDA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL)), - - [SPECIES_TOXEL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_TOXTRICITY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SIZZLIPEDE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_CENTISKORCH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_CLOBBOPUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM12_TAUNT) - | TMHM(HM07_WATERFALL)), - - [SPECIES_GRAPPLOCT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(HM07_WATERFALL)), - - [SPECIES_SINISTEA] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_POLTEAGEIST] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_HATENNA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP)), - - [SPECIES_HATTREM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP)), - - [SPECIES_HATTERENE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP)), - - [SPECIES_IMPIDIMP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT)), - - [SPECIES_MORGREM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT)), - - [SPECIES_GRIMMSNARL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT)), - - [SPECIES_OBSTAGOON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_PERRSERKER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_CURSOLA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF)), - - [SPECIES_SIRFETCHD] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_MR_RIME] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_RUNERIGUS] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_MILCERY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_ALCREMIE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_FALINKS] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB)), - - [SPECIES_PINCURCHIN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_SNOM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_FROSMOTH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD)), - - [SPECIES_STONJOURNER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM)), - - [SPECIES_EISCUE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL)), - - [SPECIES_INDEEDEE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_MORPEKO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT)), - - [SPECIES_CUFANT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(HM04_STRENGTH)), - - [SPECIES_COPPERAJAH] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT)), - - [SPECIES_DRACOZOLT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_ARCTOZOLT] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_DRACOVISH] = TMHM_LEARNSET(TMHM(HM08_DIVE) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL)), - - [SPECIES_ARCTOVISH] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(HM03_SURF) - | TMHM(HM07_WATERFALL)), - - [SPECIES_DURALUDON] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_DREEPY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_DRAKLOAK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_DRAGAPULT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM08_DIVE) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM47_STEEL_WING) - | TMHM(HM03_SURF) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_ZACIAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST)), - - [SPECIES_ZAMAZENTA] = TMHM_LEARNSET(TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ETERNATUS] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_KUBFU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH)), - - [SPECIES_URSHIFU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT)), - - [SPECIES_ZARUDE] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_REGIELEKI] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_REGIDRAGO] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST)), - - [SPECIES_GLASTRIER] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT)), - - [SPECIES_SPECTRIER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM12_TAUNT)), - - [SPECIES_CALYREX] = TMHM_LEARNSET(TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_RATTATA_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RATICATE_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM08_BULK_UP) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_RAICHU_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_SANDSHREW_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_SANDSLASH_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_VULPIX_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM06_TOXIC)), - - [SPECIES_NINETALES_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM06_TOXIC)), - - [SPECIES_DIGLETT_ALOLAN] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM06_TOXIC)), - - [SPECIES_DUGTRIO_ALOLAN] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEOWTH_ALOLAN] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM12_TAUNT) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_PERSIAN_ALOLAN] = TMHM_LEARNSET(TMHM(HM01_CUT) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM12_TAUNT) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_GEODUDE_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRAVELER_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOLEM_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(HM04_STRENGTH) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRIMER_ALOLAN] = TMHM_LEARNSET(TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MUK_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_EXEGGUTOR_ALOLAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAROWAK_ALOLAN] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM30_SHADOW_BALL) - | TMHM(HM04_STRENGTH) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM25_THUNDER) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEOWTH_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_PONYTA_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST)), - - [SPECIES_RAPIDASH_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST)), - - [SPECIES_SLOWPOKE_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM07_HAIL) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_SLOWBRO_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_FARFETCHD_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY)), - - [SPECIES_WEEZING_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MR_MIME_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_ARTICUNO_GALARIAN] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM47_STEEL_WING)), - - [SPECIES_ZAPDOS_GALARIAN] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT)), - - [SPECIES_MOLTRES_GALARIAN] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT)), - - [SPECIES_SLOWKING_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_CORSOLA_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ZIGZAGOON_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_LINOONE_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_DARUMAKA_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_DARMANITAN_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_YAMASK_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM46_THIEF)), - - [SPECIES_STUNFISK_GALARIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM03_SURF)), - - [SPECIES_PIKACHU_COSPLAY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_ROCK_STAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_BELLE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_POP_STAR] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_PH_D] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_LIBRE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_ORIGINAL_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_HOENN_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_SINNOH_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_UNOVA_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_KALOS_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_ALOLA_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PIKACHU_PARTNER_CAP] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PICHU_SPIKY_EARED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), -#endif - [SPECIES_UNOWN_B] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_C] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_D] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_E] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_F] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_G] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_H] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_I] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_J] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_K] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_L] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_M] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_N] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_O] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_P] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_Q] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_R] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_S] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_T] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_U] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_V] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_W] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_X] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_Y] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_Z] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_EMARK] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_UNOWN_QMARK] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER)), - - [SPECIES_DEOXYS_ATTACK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEOXYS_DEFENSE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_DEOXYS_SPEED] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - -#if P_NEW_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT)), - - [SPECIES_BURMY_TRASH_CLOAK] = TMHM_LEARNSET(TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT)), - - [SPECIES_WORMADAM_SANDY_CLOAK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_WORMADAM_TRASH_CLOAK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHELLOS_EAST_SEA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GASTRODON_EAST_SEA] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ROTOM_HEAT] = TMHM_LEARNSET(TMHM(TM50_OVERHEAT)), - - [SPECIES_ROTOM_WASH] = TMHM_LEARNSET(0), - - [SPECIES_ROTOM_FROST] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD)), - - [SPECIES_ROTOM_FAN] = TMHM_LEARNSET(0), - - [SPECIES_ROTOM_MOW] = TMHM_LEARNSET(0), - - [SPECIES_GIRATINA_ORIGIN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SHAYMIN_SKY] = TMHM_LEARNSET(TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ARCEUS_FIGHTING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_FLYING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_POISON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_GROUND] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_ROCK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_BUG] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_GHOST] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_STEEL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_FIRE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_WATER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_GRASS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_ELECTRIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_PSYCHIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_ICE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_DRAGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_DARK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_ARCEUS_FAIRY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM50_OVERHEAT) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_BASCULIN_BLUE_STRIPED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL)), - - [SPECIES_DEERLING_SUMMER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DEERLING_AUTUMN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_DEERLING_WINTER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SAWSBUCK_SUMMER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SAWSBUCK_AUTUMN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_SAWSBUCK_WINTER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_TORNADUS_THERIAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_THUNDURUS_THERIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LANDORUS_THERIAN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM04_CALM_MIND) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(HM04_STRENGTH) - | TMHM(TM06_TOXIC)), - - [SPECIES_KYUREM_WHITE] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_KYUREM_BLACK] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_KELDEO_RESOLUTE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_GENESECT_DOUSE_DRIVE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GENESECT_SHOCK_DRIVE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GENESECT_BURN_DRIVE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GENESECT_CHILL_DRIVE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM14_BLIZZARD) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_GRENINJA_BATTLE_BOND] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM14_BLIZZARD) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM49_SNATCH) - | TMHM(HM04_STRENGTH) - | TMHM(HM03_SURF) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC) - | TMHM(HM07_WATERFALL) - | TMHM(TM03_WATER_PULSE)), - - [SPECIES_VIVILLON_POLAR] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_TUNDRA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_CONTINENTAL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_GARDEN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_ELEGANT] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_MEADOW] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_MODERN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_MARINE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_ARCHIPELAGO] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_HIGH_PLAINS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_SANDSTORM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_RIVER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_MONSOON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_SAVANNA] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_SUN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_OCEAN] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_JUNGLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_FANCY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_VIVILLON_POKE_BALL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLABEBE_YELLOW_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLABEBE_ORANGE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLABEBE_BLUE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLABEBE_WHITE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE_YELLOW_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE_ORANGE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE_BLUE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE_WHITE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLOETTE_ETERNAL_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLORGES_YELLOW_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLORGES_ORANGE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLORGES_BLUE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FLORGES_WHITE_FLOWER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_HEART_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_STAR_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_DIAMOND_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_DEBUTANTE_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_MATRON_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_DANDY_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_LA_REINE_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_KABUKI_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_FURFROU_PHARAOH_TRIM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MEOWSTIC_FEMALE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(HM01_CUT) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_PUMPKABOO_SMALL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PUMPKABOO_LARGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_PUMPKABOO_SUPER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOURGEIST_SMALL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOURGEIST_LARGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_GOURGEIST_SUPER] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM38_FIRE_BLAST) - | TMHM(TM35_FLAMETHROWER) - | TMHM(HM05_FLASH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZYGARDE_10] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_ZYGARDE_COMPLETE] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM28_DIG) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(HM04_STRENGTH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM06_TOXIC)), - - [SPECIES_HOOPA_UNBOUND] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM05_FLASH) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM43_SECRET_POWER) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM49_SNATCH) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM41_TORMENT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ORICORIO_POM_POM] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ORICORIO_PAU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ORICORIO_SENSU] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(HM02_FLY) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM47_STEEL_WING) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_ROCKRUFF_OWN_TEMPO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LYCANROC_MIDNIGHT] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_LYCANROC_DUSK] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_FIGHTING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_FLYING] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_POISON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_GROUND] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_ROCK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_BUG] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_GHOST] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_STEEL] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_FIRE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_WATER] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_GRASS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_ELECTRIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_PSYCHIC] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_ICE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_DRAGON] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_DARK] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SILVALLY_FAIRY] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM02_DRAGON_CLAW) - | TMHM(TM42_FACADE) - | TMHM(TM35_FLAMETHROWER) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM07_HAIL) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM05_ROAR) - | TMHM(TM37_SANDSTORM) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM47_STEEL_WING) - | TMHM(TM11_SUNNY_DAY) - | TMHM(HM03_SURF) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_RED] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_ORANGE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_YELLOW] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_GREEN] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_BLUE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_INDIGO] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_MINIOR_CORE_VIOLET] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM37_SANDSTORM) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM06_TOXIC)), - - [SPECIES_NECROZMA_DUSK_MANE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_NECROZMA_DAWN_WINGS] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM26_EARTHQUAKE) - | TMHM(TM42_FACADE) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM27_RETURN) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM46_THIEF) - | TMHM(TM06_TOXIC)), - - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM04_CALM_MIND) - | TMHM(TM32_DOUBLE_TEAM) - | TMHM(TM21_FRUSTRATION) - | TMHM(TM10_HIDDEN_POWER) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM33_REFLECT) - | TMHM(TM27_RETURN) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM24_THUNDERBOLT)), - - [SPECIES_TOXTRICITY_LOW_KEY] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM42_FACADE) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM34_SHOCK_WAVE) - | TMHM(TM36_SLUDGE_BOMB) - | TMHM(TM12_TAUNT) - | TMHM(TM25_THUNDER) - | TMHM(TM24_THUNDERBOLT) - | TMHM(TM06_TOXIC)), - - [SPECIES_SINISTEA_ANTIQUE] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_POLTEAGEIST_ANTIQUE] = TMHM_LEARNSET(TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_ALCREMIE_RUBY_CREAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_MATCHA_CREAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_MINT_CREAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_LEMON_CREAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_SALTED_CREAM] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_RUBY_SWIRL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM22_SOLAR_BEAM)), - - [SPECIES_INDEEDEE_FEMALE] = TMHM_LEARNSET(TMHM(TM45_ATTRACT) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL)), - - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = TMHM_LEARNSET(TMHM(TM40_AERIAL_ACE) - | TMHM(TM45_ATTRACT) - | TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM28_DIG) - | TMHM(HM08_DIVE) - | TMHM(TM42_FACADE) - | TMHM(TM01_FOCUS_PUNCH) - | TMHM(TM17_PROTECT) - | TMHM(TM18_RAIN_DANCE) - | TMHM(TM44_REST) - | TMHM(HM06_ROCK_SMASH) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM12_TAUNT) - | TMHM(HM07_WATERFALL)), - - [SPECIES_ZARUDE_DADA] = TMHM_LEARNSET(TMHM(TM31_BRICK_BREAK) - | TMHM(TM08_BULK_UP) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM28_DIG) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM23_IRON_TAIL) - | TMHM(TM17_PROTECT) - | TMHM(TM44_REST) - | TMHM(TM39_ROCK_TOMB) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM46_THIEF)), - - [SPECIES_CALYREX_ICE_RIDER] = TMHM_LEARNSET(TMHM(TM14_BLIZZARD) - | TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM07_HAIL) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM13_ICE_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT) - | TMHM(TM41_TORMENT)), - - [SPECIES_CALYREX_SHADOW_RIDER] = TMHM_LEARNSET(TMHM(TM09_BULLET_SEED) - | TMHM(TM04_CALM_MIND) - | TMHM(TM42_FACADE) - | TMHM(TM19_GIGA_DRAIN) - | TMHM(TM15_HYPER_BEAM) - | TMHM(TM16_LIGHT_SCREEN) - | TMHM(TM17_PROTECT) - | TMHM(TM29_PSYCHIC) - | TMHM(TM33_REFLECT) - | TMHM(TM44_REST) - | TMHM(TM20_SAFEGUARD) - | TMHM(TM30_SHADOW_BALL) - | TMHM(TM48_SKILL_SWAP) - | TMHM(TM22_SOLAR_BEAM) - | TMHM(TM11_SUNNY_DAY) - | TMHM(TM12_TAUNT)), -#endif + +/* static const u16 sNoneTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_EARTHQUAKE, + MOVE_FLY, + MOVE_ICE_BEAM, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; */ + +static const u16 sBulbasaurTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sIvysaurTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenusaurTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharmanderTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharmeleonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharizardTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSquirtleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWartortleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlastoiseTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCaterpieTMHMLearnset[] = { + }; + +static const u16 sMetapodTMHMLearnset[] = { + }; + +static const u16 sButterfreeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeedleTMHMLearnset[] = { + }; + +static const u16 sKakunaTMHMLearnset[] = { + }; + +static const u16 sBeedrillTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeottoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeotTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRattataTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaticateTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpearowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFearowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEkansTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sArbokTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaichuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandshrewTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandslashTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoranFTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidorinaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoqueenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoranMTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidorinoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidokingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClefairyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClefableTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVulpixTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinetalesTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sJigglypuffTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWigglytuffTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZubatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolbatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOddishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGloomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVileplumeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sParasTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sParasectTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenonatTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenomothTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiglettTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDugtrioTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPersianTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPsyduckTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolduckTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMankeyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrimeapeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrowlitheTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sArcanineTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwagTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwhirlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwrathTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKadabraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlakazamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachopTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachokeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachampTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBellsproutTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeepinbellTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVictreebelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTentacoolTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTentacruelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGeodudeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGravelerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolemTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPonytaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRapidashTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowpokeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowbroTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnemiteTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnetonTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFarfetchdTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDoduoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDodrioTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewgongTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMukTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShellderTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCloysterTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGastlyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHaunterTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGengarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOnixTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrowzeeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHypnoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrabbyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKinglerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVoltorbTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectrodeTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggcuteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggutorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCuboneTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarowakTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmonleeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmonchanTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLickitungTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKoffingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeezingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhyhornTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhydonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChanseyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTangelaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKangaskhanTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHorseaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeadraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoldeenTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeakingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaryuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStarmieTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrMimeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sScytherTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sJynxTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectabuzzTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagmarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPinsirTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaurosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagikarpTMHMLearnset[] = { + }; + +static const u16 sGyaradosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLaprasTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDittoTMHMLearnset[] = { + }; + +static const u16 sEeveeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVaporeonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJolteonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlareonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOmanyteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sOmastarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKabutoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKabutopsTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAerodactylTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnorlaxTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArticunoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZapdosTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMoltresTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDratiniTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragonairTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragoniteTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMewtwoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMewTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChikoritaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBayleefTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeganiumTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCyndaquilTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuilavaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyphlosionTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTotodileTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCroconawTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFeraligatrTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSentretTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurretTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoothootTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoctowlTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLedybaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLedianTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpinarakTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAriadosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrobatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChinchouTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLanturnTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPichuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCleffaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIgglybuffTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogepiTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogeticTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNatuTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sXatuTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMareepTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlaaffyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmpharosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBellossomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarillTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzumarillTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSudowoodoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPolitoedTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoppipTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkiploomTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sJumpluffTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAipomTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSunkernTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSunfloraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sYanmaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWooperTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuagsireTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEspeonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUmbreonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMurkrowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowkingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMisdreavusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWobbuffetTMHMLearnset[] = { + MOVE_SAFEGUARD, + MOVE_UNAVAILABLE, +}; + +static const u16 sGirafarigTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPinecoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sForretressTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDunsparceTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGligarTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSteelixTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnubbullTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGranbullTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sQwilfishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScizorTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShuckleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeracrossTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSneaselTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTeddiursaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrsaringTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlugmaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagcargoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwinubTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPiloswineTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorsolaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRemoraidTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sOctilleryTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelibirdTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMantineTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkarmoryTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoundourTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoundoomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKingdraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhanpyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDonphanTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygon2TMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStantlerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSmeargleTMHMLearnset[] = { + MOVE_FLAMETHROWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyrogueTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmontopTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSmoochumTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sElekidTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagbyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiltankTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlisseyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaikouTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEnteiTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSuicuneTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLarvitarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPupitarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyranitarTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLugiaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoOhTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCelebiTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTreeckoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrovyleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSceptileTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorchicTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCombuskenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlazikenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudkipTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarshtompTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwampertTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoochyenaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMightyenaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZigzagoonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLinooneTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWurmpleTMHMLearnset[] = { + }; + +static const u16 sSilcoonTMHMLearnset[] = { + }; + +static const u16 sBeautiflyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCascoonTMHMLearnset[] = { + }; + +static const u16 sDustoxTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLotadTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLombreTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLudicoloTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeedotTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNuzleafTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShiftryTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaillowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwellowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWingullTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPelipperTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaltsTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKirliaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGardevoirTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSurskitTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMasquerainTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShroomishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBreloomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlakothTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVigorothTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlakingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNincadaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinjaskTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShedinjaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhismurTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLoudredTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sExploudTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMakuhitaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHariyamaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzurillTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNosepassTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkittyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelcattyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSableyeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMawileTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAronTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLaironTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAggronTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMedititeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMedichamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectrikeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sManectricTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPlusleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMinunTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolbeatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIllumiseTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoseliaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGulpinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwalotTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarvanhaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSharpedoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWailmerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWailordTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNumelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCameruptTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorkoalTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpoinkTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrumpigTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpindaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrapinchTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVibravaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlygonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCacneaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCacturneTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwabluTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAltariaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZangooseTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeviperTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLunatoneTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSolrockTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarboachTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhiscashTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorphishTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrawdauntTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBaltoyTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sClaydolTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLileepTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCradilyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAnorithTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArmaldoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFeebasTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiloticTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCastformTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKecleonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShuppetTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBanetteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuskullTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDusclopsTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTropiusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChimechoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbsolTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWynautTMHMLearnset[] = { + MOVE_SAFEGUARD, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnoruntTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlalieTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSphealTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSealeoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWalreinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClamperlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHuntailTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGorebyssTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRelicanthTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuvdiscTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBagonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShelgonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalamenceTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBeldumTMHMLearnset[] = { + }; + +static const u16 sMetangTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMetagrossTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegirockTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegiceTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegisteelTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLatiasTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLatiosTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyogreTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGroudonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRayquazaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJirachiTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTurtwigTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrotleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorterraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChimcharTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMonfernoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sInfernapeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPiplupTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrinplupTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmpoleonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStarlyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaraviaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaraptorTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBidoofTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBibarelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKricketotTMHMLearnset[] = { + }; + +static const u16 sKricketuneTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShinxTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuxioTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuxrayTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBudewTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoseradeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCranidosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRampardosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShieldonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBastiodonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBurmyTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMothimTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCombeeTMHMLearnset[] = { + }; + +static const u16 sVespiquenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPachirisuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBuizelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloatzelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCherubiTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCherrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShellosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGastrodonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmbipomTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrifloonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrifblimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBunearyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLopunnyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMismagiusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHonchkrowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlameowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPuruglyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChinglingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunkyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkuntankTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBronzorTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBronzongTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBonslyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMimeJrTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHappinyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChatotTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpiritombTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGibleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGabiteTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGarchompTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMunchlaxTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRioluTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLucarioTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHippopotasTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHippowdonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkorupiTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrapionTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCroagunkTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxicroakTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarnivineTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFinneonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLumineonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMantykeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnoverTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbomasnowTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeavileTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnezoneTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLickilickyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhyperiorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTangrowthTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectivireTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagmortarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogekissTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYanmegaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLeafeonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlaceonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGliscorTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMamoswineTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygonZTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGalladeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sProbopassTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDusknoirTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFroslassTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRotomTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUxieTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMespritTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzelfTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDialgaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalkiaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeatranTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegigigasTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_RAIN_DANCE, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGiratinaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCresseliaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhioneTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sManaphyTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarkraiTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShayminTMHMLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVictiniTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnivyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sServineTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSerperiorTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTepigTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPigniteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmboarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOshawottTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewottTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSamurottTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPatratTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWatchogTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLillipupTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHerdierTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStoutlandTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPurrloinTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLiepardTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPansageTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimisageTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPansearTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimisearTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPanpourTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimipourTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMunnaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMusharnaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidoveTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTranquillTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnfezantTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlitzleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZebstrikaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoggenrolaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBoldoreTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGigalithTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWoobatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwoobatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrilburTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sExcadrillTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAudinoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTimburrTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGurdurrTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sConkeldurrTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTympoleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalpitoadTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeismitoadTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sThrohTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawkTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSewaddleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwadloonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLeavannyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenipedeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhirlipedeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sScolipedeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCottoneeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhimsicottTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPetililTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLilligantTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBasculinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandileTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrokorokTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrookodileTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarumakaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarmanitanTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMaractusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDwebbleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrustleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sScraggyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sScraftyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSigilyphTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamaskTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCofagrigusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTirtougaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarracostaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArchenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sArcheopsTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrubbishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGarbodorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZoruaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZoroarkTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMinccinoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCinccinoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothitaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothoritaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothitelleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSolosisTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuosionTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sReuniclusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDucklettTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwannaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanilliteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanillishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanilluxeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeerlingTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawsbuckTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmolgaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKarrablastTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEscavalierTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFoongusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmoongussTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrillishTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJellicentTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlomomolaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJoltikTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGalvantulaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFerroseedTMHMLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFerrothornTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlinkTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlangTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlinklangTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTynamoTMHMLearnset[] = { + }; + +static const u16 sEelektrikTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEelektrossTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sElgyemTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBeheeyemTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLitwickTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLampentTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChandelureTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAxewTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFraxureTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHaxorusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCubchooTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBearticTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCryogonalTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShelmetTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAccelgorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunfiskTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMienfooTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMienshaoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDruddigonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolettTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolurkTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPawniardTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBisharpTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBouffalantTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRuffletTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBraviaryTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVullabyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMandibuzzTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeatmorTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDurantTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeinoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZweilousTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHydreigonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLarvestaTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolcaronaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCobalionTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTerrakionTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVirizionTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTornadusTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sThundurusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sReshiramTMHMLearnset[] = { + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZekromTMHMLearnset[] = { + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLandorusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyuremTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKeldeoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeloettaTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChespinTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuilladinTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sChesnaughtTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFennekinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBraixenTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelphoxTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFroakieTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrogadierTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGreninjaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBunnelbyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiggersbyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFletchlingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFletchinderTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTalonflameTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sScatterbugTMHMLearnset[] = { + }; + +static const u16 sSpewpaTMHMLearnset[] = { + MOVE_PROTECT, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLitleoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPyroarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkiddoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGogoatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPanchamTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPangoroTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sEspurrTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowsticTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHonedgeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDoubladeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAegislashTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpritzeeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAromatisseTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwirlixTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlurpuffTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sInkayTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMalamarTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBinacleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarbaracleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkrelpTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragalgeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClauncherTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClawitzerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHelioptileTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHelioliskTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyruntTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyrantrumTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmauraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAurorusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSylveonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHawluchaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDedenneTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarbinkTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoomyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSliggooTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoodraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlefkiTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhantumpTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrevenantTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPumpkabooTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGourgeistTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBergmiteTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAvaluggTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoibatTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoivernTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sXerneasTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sYveltalTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygardeTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiancieTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoopaTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolcanionTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRowletTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDartrixTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDecidueyeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLittenTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorracatTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sIncineroarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPopplioTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBrionneTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrimarinaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikipekTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrumbeakTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sToucannonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sYungoosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGumshoosTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrubbinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharjabugTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVikavoltTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrabrawlerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrabominableTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOricorioTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCutieflyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRibombeeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRockruffTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWishiwashiTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMareanieTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxapexTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudbrayTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudsdaleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewpiderTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAraquanidTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFomantisTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLurantisTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorelullTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShiinoticTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalanditTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalazzleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStuffulTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBewearTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBounsweetTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSteeneeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTsareenaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sComfeyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOranguruTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPassimianTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWimpodTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolisopodTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandygastTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalossandTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPyukumukuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_HAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTypeNullTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKomalaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RETURN, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTurtonatorTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogedemaruTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMimikyuTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBruxishTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrampaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDhelmiseTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sJangmooTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHakamooTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKommooTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuKokoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuLeleTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuBuluTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuFiniTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCosmogTMHMLearnset[] = { + }; + +static const u16 sCosmoemTMHMLearnset[] = { + }; + +static const u16 sSolgaleoTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLunalaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNihilegoTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SLUDGE_BOMB, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBuzzwoleTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPheromosaTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sXurkitreeTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sCelesteelaTMHMLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKartanaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGuzzlordTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNecrozmaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagearnaTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarshadowTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoipoleTMHMLearnset[] = { + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNaganadelTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sStakatakaTMHMLearnset[] = { + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlacephalonTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZeraoraTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + //TMs of LGPE don't match with USUM +static const u16 sMeltanTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMelmetalTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrookeyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sThwackeyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRillaboomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sScorbunnyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRabootTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCinderaceTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSobbleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrizzileTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sInteleonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkwovetTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sGreedentTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sRookideeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FLY, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorvisquireTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FLY, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorviknightTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlipbugTMHMLearnset[] = { + }; + +static const u16 sDottlerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sOrbeetleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sNickitTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sThievulTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sGossifleurTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sEldegossTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sWoolooTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sDubwoolTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sChewtleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrednawTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamperTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBoltundTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRolycolyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarkolTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_UNAVAILABLE, +}; + +static const u16 sCoalossalTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sApplinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlappleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_FLY, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sAppletunTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilicobraTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandacondaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_UNAVAILABLE, +}; + +static const u16 sCramorantTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sArrokudaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarraskewdaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxelTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxtricityTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSizzlipedeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sCentiskorchTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sClobbopusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrapploctTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sSinisteaTMHMLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sPolteageistTMHMLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sHatennaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_UNAVAILABLE, +}; + +static const u16 sHattremTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_UNAVAILABLE, +}; + +static const u16 sHattereneTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_UNAVAILABLE, +}; + +static const u16 sImpidimpTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorgremTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimmsnarlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sObstagoonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPerrserkerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCursolaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_UNAVAILABLE, +}; + +static const u16 sSirfetchdTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrRimeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRunerigusTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sMilceryTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sFalinksTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_UNAVAILABLE, +}; + +static const u16 sPincurchinTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnomTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrosmothTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_UNAVAILABLE, +}; + +static const u16 sStonjournerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_UNAVAILABLE, +}; + +static const u16 sEiscueTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sIndeedeeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorpekoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCufantTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_STRENGTH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCopperajahTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDracozoltTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sArctozoltTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDracovishTMHMLearnset[] = { + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sArctovishTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuraludonTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDreepyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrakloakTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragapultTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sZacianTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sZamazentaTMHMLearnset[] = { + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sEternatusTMHMLearnset[] = { + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKubfuTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrshifuTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sZarudeTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegielekiTMHMLearnset[] = { + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegidragoTMHMLearnset[] = { + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlastrierTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpectrierTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexTMHMLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sRattataAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaticateAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaichuAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandshrewAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandslashAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVulpixAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinetalesAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiglettAlolanTMHMLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDugtrioAlolanTMHMLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthAlolanTMHMLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPersianAlolanTMHMLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGeodudeAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_EARTHQUAKE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGravelerAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolemAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimerAlolanTMHMLearnset[] = { + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMukAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggutorAlolanTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarowakAlolanTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPonytaGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sRapidashGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowpokeGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowbroGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFarfetchdGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeezingGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrMimeGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sArticunoGalarianTMHMLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_UNAVAILABLE, +}; + +static const u16 sZapdosGalarianTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMoltresGalarianTMHMLearnset[] = { + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowkingGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorsolaGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZigzagoonGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLinooneGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarumakaGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarmanitanGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamaskGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunfiskGalarianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuCosplayTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuRockStarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuBelleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuPopStarTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuPhDTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuLibreTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuOriginalCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuHoennCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuSinnohCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuUnovaCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuKalosCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuAlolaCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuPartnerCapTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPichuSpikyEaredTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownBTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownCTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownDTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownETMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownFTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownGTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownHTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownITMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownJTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownKTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownLTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownMTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownNTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownOTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownPTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownQTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownRTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownSTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownTTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownUTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownVTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownWTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownXTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownYTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownZTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownEmarkTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownQmarkTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysAttackTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysDefenseTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysSpeedTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBurmySandyCloakTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBurmyTrashCloakTMHMLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamSandyCloakTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamTrashCloakTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShellosEastSeaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGastrodonEastSeaTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRotomHeatTMHMLearnset[] = { + MOVE_OVERHEAT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRotomWashTMHMLearnset[] = { + }; + +static const u16 sRotomFrostTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_UNAVAILABLE, +}; + +static const u16 sRotomFanTMHMLearnset[] = { + }; + +static const u16 sRotomMowTMHMLearnset[] = { + }; + +static const u16 sGiratinaOriginTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShayminSkyTMHMLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusFightingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusFlyingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusPoisonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusGroundTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusRockTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusBugTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusGhostTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusSteelTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusFireTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusWaterTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusGrassTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusElectricTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusPsychicTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusIceTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusDragonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusDarkTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusFairyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBasculinBlueStripedTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeerlingSummerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeerlingAutumnTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeerlingWinterTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawsbuckSummerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawsbuckAutumnTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawsbuckWinterTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sTornadusTherianTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sThundurusTherianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLandorusTherianTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyuremWhiteTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyuremBlackTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sKeldeoResoluteTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectDouseDriveTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectShockDriveTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectBurnDriveTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectChillDriveTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGreninjaBattleBondTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonPolarTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonTundraTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonContinentalTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonGardenTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonElegantTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonMeadowTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonModernTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonMarineTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonArchipelagoTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonHighPlainsTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonSandstormTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonRiverTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonMonsoonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonSavannaTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonSunTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonOceanTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonJungleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonFancyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonPokeBallTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeYellowFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeOrangeFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeBlueFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeWhiteFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteYellowFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteOrangeFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteBlueFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteWhiteFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteEternalFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesYellowFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesOrangeFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesBlueFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesWhiteFlowerTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouHeartTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouStarTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouDiamondTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouDebutanteTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouMatronTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouDandyTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouLaReineTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouKabukiTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouPharaohTrimTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowsticFemaleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPumpkabooSmallTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPumpkabooLargeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPumpkabooSuperTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGourgeistSmallTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGourgeistLargeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGourgeistSuperTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygarde10TMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygarde10PowerConstructTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygarde50PowerConstructTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygardeCompleteTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoopaUnboundTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOricorioPomPomTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOricorioPauTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sOricorioSensuTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRockruffOwnTempoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocMidnightTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocDuskTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyFightingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyFlyingTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyPoisonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyGroundTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyRockTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyBugTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyGhostTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallySteelTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyFireTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyWaterTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyGrassTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyElectricTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyPsychicTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyIceTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyDragonTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyDarkTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyFairyTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreRedTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreOrangeTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreYellowTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreGreenTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreBlueTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreIndigoTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorCoreVioletTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNecrozmaDuskManeTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNecrozmaDawnWingsTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagearnaOriginalColorTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDERBOLT, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxtricityLowKeyTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSinisteaAntiqueTMHMLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sPolteageistAntiqueTMHMLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieRubyCreamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieMatchaCreamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieMintCreamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieLemonCreamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieSaltedCreamTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieRubySwirlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieCaramelSwirlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieRainbowSwirlTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_UNAVAILABLE, +}; + +static const u16 sIndeedeeFemaleTMHMLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrshifuRapidStrikeStyleTMHMLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_UNAVAILABLE, +}; + +static const u16 sZarudeDadaTMHMLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexIceRiderTMHMLearnset[] = { + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexShadowRiderTMHMLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_UNAVAILABLE, }; diff --git a/src/daycare.c b/src/daycare.c index d293e51175..11c89b8cb0 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -695,7 +695,8 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru { for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { - if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j)) + u16 moveId = ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j); + if (sHatchedEggFatherMoves[i] == moveId && CanMonLearnTMHM(egg, moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); diff --git a/src/party_menu.c b/src/party_menu.c index db20e0932c..9f8fe00268 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2038,7 +2038,7 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) if (item >= ITEM_TM01) { - if (!CanMonLearnTMHM(mon, item - ITEM_TM01 - ((item > ITEM_TM100) ? 50 : 0))) + if (!CanMonLearnTMHM(mon, ItemIdToBattleMoveId(item))) return CANNOT_LEARN_MOVE; else move = ItemIdToBattleMoveId(item); diff --git a/src/pokemon.c b/src/pokemon.c index c781a80078..d165635d7c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1890,17 +1890,18 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = [NATURE_QUIRKY] = { 0, 0, 0, 0, 0}, }; -#include "data/pokemon/tmhm_learnsets.h" #include "data/pokemon/trainer_class_lookups.h" #include "data/pokemon/experience_tables.h" #include "data/pokemon/base_stats.h" #include "data/pokemon/level_up_learnsets.h" +#include "data/pokemon/tmhm_learnsets.h" #if P_NEW_POKEMON == TRUE #include "data/pokemon/evolution.h" #else #include "data/pokemon/evolution_old.h" #endif #include "data/pokemon/level_up_learnset_pointers.h" +#include "data/pokemon/tmhm_learnset_pointers.h" #include "data/pokemon/form_species_tables.h" #include "data/pokemon/form_species_table_pointers.h" #include "data/pokemon/form_change_tables.h" @@ -7243,40 +7244,43 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) } } -u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm) +u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); + if (species == SPECIES_EGG) { - return 0; - } - else if (tm < 32) - { - u32 mask = 1 << tm; - return gTMHMLearnsets[species][0] & mask; + return FALSE; } else { - u32 mask = 1 << (tm - 32); - return gTMHMLearnsets[species][1] & mask; + u32 i; + for (i = 0; gTMHMLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + { + if (gTMHMLearnsets[species][i] == move) { + return TRUE; + } + } + return FALSE; } } -u32 CanSpeciesLearnTMHM(u16 species, u8 tm) +u32 CanSpeciesLearnTMHM(u16 species, u16 move) { if (species == SPECIES_EGG) { - return 0; - } - else if (tm < 32) - { - u32 mask = 1 << tm; - return gTMHMLearnsets[species][0] & mask; + return FALSE; } else { - u32 mask = 1 << (tm - 32); - return gTMHMLearnsets[species][1] & mask; + u32 i; + for (i = 0; gTMHMLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + { + if (gTMHMLearnsets[species][i] == move) { + return TRUE; + } + } + return FALSE; } } From 67f473f38b4af0148273d601c9c6b9d16143e2a7 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Tue, 23 Aug 2022 19:49:54 -0600 Subject: [PATCH 080/271] Fixed recommended issues. Added additional comments. Reordered switching ladder in ShouldSwitch() function. Functions that can specify a specific party mon to switch into need to come first. --- include/constants/battle_ai.h | 2 +- src/battle_ai_switch_items.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index a7a3e54183..5dbbccf489 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -56,7 +56,7 @@ #define AI_FLAG_STALL (1 << 13) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished #define AI_FLAG_SCREENER (1 << 14) // AI prefers screening effects like reflect, mist, etc. TODO unfinished #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks -#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon -- Saves until last +#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon. The last Pokemon in the party will not used until last remaining. // 'other' ai logic flags #define AI_FLAG_ROAMING (1 << 29) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 329d3ebf35..04aa8d23bd 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -109,6 +109,9 @@ static bool8 ShouldSwitchIfWonderGuard(void) continue; if (i == gBattlerPartyIndexes[gActiveBattler]) continue; + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1)) + continue; for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < MAX_MON_MOVES; j++) { @@ -260,7 +263,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) if (IsDoubleBattle()) { if (IsBattlerAlive(BATTLE_PARTNER(gActiveBattler)) - && (GetAIChosenMove(BATTLE_PARTNER(gActiveBattler)) & MOVE_UPROAR) + && (GetAIChosenMove(BATTLE_PARTNER(gActiveBattler)) == MOVE_UPROAR) ) switchMon = FALSE; @@ -291,8 +294,8 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) && i != gBattlerPartyIndexes[gActiveBattler] && i != gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)] && IsBattlerGrounded(gActiveBattler) - && (GetMonData(&party[i], MON_DATA_ABILITY_NUM) == 226 - || GetMonData(&party[i], MON_DATA_ABILITY_NUM) == 228)) //Ally has Misty or Electric Surge + && (GetMonAbility(&party[i]) == ABILITY_MISTY_SURGE + || GetMonAbility(&party[i]) == ABILITY_ELECTRIC_SURGE)) //Ally has Misty or Electric Surge { *(gBattleStruct->AI_monToSwitchIntoId + BATTLE_PARTNER(gActiveBattler)) = i; BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); @@ -347,7 +350,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) //Nightmare moduloChance = 3; //33.3% - if (gBattleMons[gActiveBattler].status1 & (STATUS1_SLEEP > 1) && gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE + if (gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE && (Random() % (moduloChance*chanceReducer)) == 0) switchMon = TRUE; @@ -374,7 +377,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) && AnyStatIsRaised(gActiveBattler)) switchMon = FALSE; if (AiExpectsToFaintPlayer() - && GetAIChosenMove(gActiveBattler) == AI_IS_SLOWER + && !WillAIStrikeFirst() && !AI_OpponentCanFaintAiWithMod(0)) switchMon = FALSE; } @@ -671,20 +674,33 @@ bool32 ShouldSwitch(void) if (availableToSwitch == 0) return FALSE; - if (ShouldSwitchIfAllBadMoves()) + + //NOTE: The sequence of the below functions matter! Do not change unless you have carefully considered the outcome. + //Since the order is sequencial, and some of these functions prompt switch to specific party members. + + //These Functions can prompt switch to specific party members + if (ShouldSwitchIfWonderGuard()) return TRUE; if (ShouldSwitchIfGameStatePrompt()) return TRUE; - if (ShouldSwitchIfWonderGuard()) - return TRUE; if (FindMonThatAbsorbsOpponentsMove()) return TRUE; + + //These Functions can prompt switch to generic pary members + if (ShouldSwitchIfAllBadMoves()) + return TRUE; if (ShouldSwitchIfAbilityBenefit()) return TRUE; + + //Removing switch capabilites under specific conditions + //These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. if (HasSuperEffectiveMoveAgainstOpponents(FALSE)) return FALSE; if (AreStatsRaised()) return FALSE; + + //Default Function + //Can prompt switch if AI has a pokemon in party that resists current opponent & has super effective move if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2) || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3)) return TRUE; From 09fd393f97f4af4c00453aba39f6068fd5825918 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 23 Aug 2022 22:38:35 -0400 Subject: [PATCH 081/271] Replaced instances of power == 0 with IS_MOVE_STATUS + fixed Wonder Skin --- src/battle_ai_main.c | 2 +- src/battle_ai_switch_items.c | 7 +++---- src/battle_dome.c | 2 +- src/battle_gfx_sfx_util.c | 2 +- src/battle_script_commands.c | 16 ++++++++-------- src/battle_tv.c | 4 ++-- src/battle_util.c | 6 +++--- 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 732dea7807..0d029e3971 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -245,7 +245,7 @@ static void SetBattlerAiData(u8 battlerId) AI_DATA->holdEffectParams[battlerId] = GetBattlerHoldEffectParam(battlerId); AI_DATA->predictedMoves[battlerId] = gLastMoves[battlerId]; AI_DATA->hpPercents[battlerId] = GetHealthPercentage(battlerId); - AI_DATA->moveLimitations[battlerId] = CheckMoveLimitations(battlerId, 0, 0xFF); + AI_DATA->moveLimitations[battlerId] = CheckMoveLimitations(battlerId, 0, MOVE_LIMITATIONS_ALL); } void GetAiLogicData(void) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 13cc828242..e29970cdf1 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -154,7 +154,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) return FALSE; if (gLastLandedMoves[gActiveBattler] == MOVE_UNAVAILABLE) return FALSE; - if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + if (IS_MOVE_STATUS(gLastLandedMoves[gActiveBattler])) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -245,8 +245,7 @@ static bool8 ShouldSwitchIfNaturalCure(void) BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } - else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 - && Random() & 1) + else if (IS_MOVE_STATUS(gLastLandedMoves[gActiveBattler]) && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0); @@ -350,7 +349,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) return FALSE; if (gLastHitBy[gActiveBattler] == 0xFF) return FALSE; - if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0) + if (IS_MOVE_STATUS(gLastLandedMoves[gActiveBattler])) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) diff --git a/src/battle_dome.c b/src/battle_dome.c index 8b3b29fc15..84b7652a54 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2747,7 +2747,7 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) int i = 0; int typePower = TYPE_x1; - if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || gBattleMoves[move].power == 0) + if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || IS_MOVE_STATUS(move)) return 0; defType1 = gBaseStats[targetSpecies].type1; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8cd23098f2..eeab8addac 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -282,7 +282,7 @@ static u8 GetBattlePalaceMoveGroup(u8 battlerId, u16 move) case MOVE_TARGET_RANDOM: case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: - if (gBattleMoves[move].power == 0) + if (IS_MOVE_STATUS(move)) return PALACE_MOVE_GROUP_SUPPORT; else return PALACE_MOVE_GROUP_ATTACK; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 420d5790ce..dc03f101c4 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1345,7 +1345,7 @@ static bool32 TryAegiFormChange(void) default: return FALSE; case SPECIES_AEGISLASH: // Shield -> Blade - if (gBattleMoves[gCurrentMove].power == 0) + if (IS_MOVE_STATUS(gCurrentMove)) return FALSE; gBattleMons[gBattlerAttacker].species = SPECIES_AEGISLASH_BLADE; break; @@ -1687,7 +1687,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u && (gBattleMoves[move].effect == EFFECT_THUNDER || gBattleMoves[move].effect == EFFECT_HURRICANE)) moveAcc = 50; // Check Wonder Skin. - if (defAbility == ABILITY_WONDER_SKIN && gBattleMoves[move].power == 0) + if (defAbility == ABILITY_WONDER_SKIN && IS_MOVE_STATUS(move) && moveAcc > 50) moveAcc = 50; calc = gAccuracyStageRatios[buff].dividend * moveAcc; @@ -8395,7 +8395,7 @@ static void Cmd_various(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - else if (gBattleMoves[gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]]].power == 0) + else if (IS_MOVE_STATUS(gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]])) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else gBattlescriptCurrInstr += 7; @@ -8493,7 +8493,7 @@ static void Cmd_various(void) case VARIOUS_TRY_ME_FIRST: if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); - else if (gBattleMoves[gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]]].power == 0) + else if (IS_MOVE_STATUS(gBattleMons[gBattlerTarget].moves[gBattleStruct->chosenMovePositions[gBattlerTarget]])) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else { @@ -13451,11 +13451,11 @@ bool32 DoesSubstituteBlockMove(u8 battlerAtk, u8 battlerDef, u32 move) bool32 DoesDisguiseBlockMove(u8 battlerAtk, u8 battlerDef, u32 move) { - if (GetBattlerAbility(battlerDef) != ABILITY_DISGUISE - || gBattleMons[battlerDef].species != SPECIES_MIMIKYU + if (gBattleMons[battlerDef].species != SPECIES_MIMIKYU || gBattleMons[battlerDef].status2 & STATUS2_TRANSFORMED - || gBattleMoves[move].power == 0 - || gHitMarker & HITMARKER_IGNORE_DISGUISE) + || IS_MOVE_STATUS(move) + || gHitMarker & HITMARKER_IGNORE_DISGUISE + || GetBattlerAbility(battlerDef) != ABILITY_DISGUISE) return FALSE; else return TRUE; diff --git a/src/battle_tv.c b/src/battle_tv.c index b6647b1164..19d3eba8df 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -1435,7 +1435,7 @@ static void TrySetBattleSeminarShow(void) return; else if (gBattleTypeFlags & (BATTLE_TYPE_PALACE | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)) return; - else if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[gMoveSelectionCursor[gBattlerAttacker]]].power == 0) + else if (IS_MOVE_STATUS(gBattleMons[gBattlerAttacker].moves[gMoveSelectionCursor[gBattlerAttacker]])) return; i = 0; @@ -1496,7 +1496,7 @@ static void TrySetBattleSeminarShow(void) static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride) { - if (gBattleMoves[moveId].power == 0) + if (IS_MOVE_STATUS(moveId)) { *dmg = 0; return FALSE; diff --git a/src/battle_util.c b/src/battle_util.c index fd9b699b8e..7f4274b206 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1764,7 +1764,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } } - if (!gBattleStruct->zmove.active && gDisableStructs[gActiveBattler].tauntTimer != 0 && gBattleMoves[move].power == 0) + if (!gBattleStruct->zmove.active && gDisableStructs[gActiveBattler].tauntTimer != 0 && IS_MOVE_STATUS(move)) { gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) @@ -1884,7 +1884,7 @@ u8 TrySetCantSelectMoveBattleScript(void) limitations++; } } - else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && gBattleMoves[move].power == 0 && move != MOVE_ME_FIRST) + else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(move) && move != MOVE_ME_FIRST) { gCurrentMove = move; gLastUsedItem = gBattleMons[gActiveBattler].item; @@ -3545,7 +3545,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->atkCancellerTracker++; break; case CANCELLER_TAUNTED: // taunt - if (gDisableStructs[gBattlerAttacker].tauntTimer && gBattleMoves[gCurrentMove].power == 0) + if (gDisableStructs[gBattlerAttacker].tauntTimer && IS_MOVE_STATUS(gCurrentMove)) { gProtectStructs[gBattlerAttacker].usedTauntedMove = TRUE; CancelMultiTurnMoves(gBattlerAttacker); From 56a2e91518ce4170722a4fe73131d4bb78dba6df Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 23 Aug 2022 22:40:04 -0400 Subject: [PATCH 082/271] Updated move limitations --- data/battle_scripts_1.s | 13 +++++++++++++ include/battle_scripts.h | 4 ++++ include/battle_util.h | 12 ++++++++++-- src/battle_util.c | 37 ++++++++++++++++++++----------------- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5e6ab33921..08474a1e8a 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7257,6 +7257,10 @@ BattleScript_SelectingNotAllowedStuffCheeks:: printselectionstring STRINGID_STUFFCHEEKSCANTSELECT endselectionscript +BattleScript_SelectingNotAllowedStuffCheeksInPalace:: + printstring STRINGID_STUFFCHEEKSCANTSELECT + goto BattleScript_SelectingUnusableMoveInPalace + BattleScript_SelectingNotAllowedBelch:: printselectionstring STRINGID_BELCHCANTSELECT endselectionscript @@ -9196,14 +9200,23 @@ BattleScript_ItemHealHP_Ret:: BattleScript_SelectingNotAllowedMoveChoiceItem:: printselectionstring STRINGID_ITEMALLOWSONLYYMOVE endselectionscript +BattleScript_SelectingNotAllowedMoveChoiceItemInPalace:: + printstring STRINGID_ITEMALLOWSONLYYMOVE + goto BattleScript_SelectingUnusableMoveInPalace BattleScript_SelectingNotAllowedMoveGorillaTactics:: printselectionstring STRINGID_ABILITYALLOWSONLYMOVE endselectionscript +BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace:: + printstring STRINGID_ABILITYALLOWSONLYMOVE + goto BattleScript_SelectingUnusableMoveInPalace BattleScript_SelectingNotAllowedMoveAssaultVest:: printselectionstring STRINGID_ASSAULTVESTDOESNTALLOW endselectionscript +BattleScript_SelectingNotAllowedMoveAssaultVestInPalace:: + printstring STRINGID_ASSAULTVESTDOESNTALLOW + goto BattleScript_SelectingUnusableMoveInPalace BattleScript_HangedOnMsg:: playanimation BS_TARGET, B_ANIM_HANGED_ON diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 09e11bd8c0..77d889cc3a 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -210,6 +210,7 @@ extern const u8 BattleScript_BerryPPHealEnd2[]; extern const u8 BattleScript_ItemHealHP_End2[]; extern const u8 BattleScript_ItemHealHP_Ret[]; extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; +extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItemInPalace[]; extern const u8 BattleScript_HangedOnMsg[]; extern const u8 BattleScript_BerryConfuseHealEnd2[]; extern const u8 BattleScript_BerryConfuseHealRet[]; @@ -275,6 +276,7 @@ extern const u8 BattleScript_SnowWarningActivates[]; extern const u8 BattleScript_HarvestActivates[]; extern const u8 BattleScript_ImposterActivates[]; extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVest[]; +extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVestInPalace[]; extern const u8 BattleScript_SelectingNotAllowedMoveGravity[]; extern const u8 BattleScript_MoveUsedGravityPrevents[]; extern const u8 BattleScript_SelectingNotAllowedMoveGravityInPalace[]; @@ -301,6 +303,7 @@ extern const u8 BattleScript_DazzlingProtected[]; extern const u8 BattleScript_MoveUsedPsychicTerrainPrevents[]; extern const u8 BattleScript_MoveUsedPowder[]; extern const u8 BattleScript_SelectingNotAllowedStuffCheeks[]; +extern const u8 BattleScript_SelectingNotAllowedStuffCheeksInPalace[]; extern const u8 BattleScript_SelectingNotAllowedBelch[]; extern const u8 BattleScript_SelectingNotAllowedBelchInPalace[]; extern const u8 BattleScript_PsychicSurgeActivates[]; @@ -405,6 +408,7 @@ extern const u8 BattleScript_BlockedByPrimalWeatherRet[]; extern const u8 BattleScript_PrimalReversion[]; extern const u8 BattleScript_HyperspaceFuryRemoveProtect[]; extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTactics[]; +extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace[]; extern const u8 BattleScript_WanderingSpiritActivates[]; extern const u8 BattleScript_MirrorArmorReflect[]; extern const u8 BattleScript_GooeyActivates[]; diff --git a/include/battle_util.h b/include/battle_util.h index d0edbc9d1b..0219a0e6ad 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -7,7 +7,15 @@ #define MOVE_LIMITATION_TORMENTED (1 << 3) #define MOVE_LIMITATION_TAUNT (1 << 4) #define MOVE_LIMITATION_IMPRISON (1 << 5) -#define MOVE_LIMITATIONS_ALL 0xFF +#define MOVE_LIMITATION_ENCORE (1 << 6) +#define MOVE_LIMITATION_CHOICE_ITEM (1 << 7) +#define MOVE_LIMITATION_ASSAULT_VEST (1 << 8) +#define MOVE_LIMITATION_GRAVITY (1 << 9) +#define MOVE_LIMITATION_HEAL_BLOCK (1 << 10) +#define MOVE_LIMITATION_BELCH (1 << 11) +#define MOVE_LIMITATION_THROAT_CHOP (1 << 12) +#define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) +#define MOVE_LIMITATIONS_ALL 0xFFFF #define ABILITYEFFECT_ON_SWITCHIN 0 #define ABILITYEFFECT_ENDTURN 1 @@ -89,7 +97,7 @@ void BattleScriptPush(const u8 *bsPtr); void BattleScriptPushCursor(void); void BattleScriptPop(void); u8 TrySetCantSelectMoveBattleScript(void); -u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check); +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u16 check); bool8 AreAllMovesUnusable(void); u8 GetImprisonedMovesCount(u8 battlerId, u16 move); u8 DoFieldEndTurnEffects(void); diff --git a/src/battle_util.c b/src/battle_util.c index 7f4274b206..22c319a46b 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1859,7 +1859,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedBelchInPalace; + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedStuffCheeksInPalace; gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE; } else @@ -1876,6 +1876,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gLastUsedItem = gBattleMons[gActiveBattler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveChoiceItemInPalace; gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE; } else @@ -1890,6 +1891,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gLastUsedItem = gBattleMons[gActiveBattler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveAssaultVestInPalace; gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE; } else @@ -1905,6 +1907,7 @@ u8 TrySetCantSelectMoveBattleScript(void) gLastUsedItem = gBattleMons[gActiveBattler].item; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace; gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE; } else @@ -1930,7 +1933,7 @@ u8 TrySetCantSelectMoveBattleScript(void) return limitations; } -u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) +u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u16 check) { u8 holdEffect = GetBattlerHoldEffect(battlerId, TRUE); u16 *choicedMove = &gBattleStruct->choicedMove[battlerId]; @@ -1941,49 +1944,49 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) for (i = 0; i < MAX_MON_MOVES; i++) { // No move - if (gBattleMons[battlerId].moves[i] == MOVE_NONE && check & MOVE_LIMITATION_ZEROMOVE) + if (check & MOVE_LIMITATION_ZEROMOVE && gBattleMons[battlerId].moves[i] == MOVE_NONE) unusableMoves |= gBitTable[i]; // No PP - else if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP) + else if (check & MOVE_LIMITATION_PP && gBattleMons[battlerId].pp[i] == 0) unusableMoves |= gBitTable[i]; // Disable - else if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED) + else if (check & MOVE_LIMITATION_DISABLED && gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove) unusableMoves |= gBitTable[i]; // Torment - else if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT) + else if (check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && gBattleMons[battlerId].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; // Taunt - else if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) + else if (check & MOVE_LIMITATION_TAUNT && gDisableStructs[battlerId].tauntTimer && IS_MOVE_STATUS(gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Imprison - else if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) + else if (check & MOVE_LIMITATION_IMPRISON && GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Encore - else if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) + else if (check & MOVE_LIMITATION_ENCORE && gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; // Choice Items - else if (HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battlerId].moves[i]) + else if (check & MOVE_LIMITATION_CHOICE_ITEM && HOLD_EFFECT_CHOICE(holdEffect) && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; // Assault Vest - else if (holdEffect == HOLD_EFFECT_ASSAULT_VEST && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0 && gBattleMons[battlerId].moves[i] != MOVE_ME_FIRST) + else if (check & MOVE_LIMITATION_ASSAULT_VEST && holdEffect == HOLD_EFFECT_ASSAULT_VEST && IS_MOVE_STATUS(gBattleMons[battlerId].moves[i]) && gBattleMons[battlerId].moves[i] != MOVE_ME_FIRST) unusableMoves |= gBitTable[i]; // Gravity - else if (IsGravityPreventingMove(gBattleMons[battlerId].moves[i])) + else if (check & MOVE_LIMITATION_GRAVITY && IsGravityPreventingMove(gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Heal Block - else if (IsHealBlockPreventingMove(battlerId, gBattleMons[battlerId].moves[i])) + else if (check & MOVE_LIMITATION_HEAL_BLOCK && IsHealBlockPreventingMove(battlerId, gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Belch - else if (IsBelchPreventingMove(battlerId, gBattleMons[battlerId].moves[i])) + else if (check & MOVE_LIMITATION_BELCH && IsBelchPreventingMove(battlerId, gBattleMons[battlerId].moves[i])) unusableMoves |= gBitTable[i]; // Throat Chop - else if (gDisableStructs[battlerId].throatChopTimer && gBattleMoves[gBattleMons[battlerId].moves[i]].flags & FLAG_SOUND) + else if (check & MOVE_LIMITATION_THROAT_CHOP && gDisableStructs[battlerId].throatChopTimer && gBattleMoves[gBattleMons[battlerId].moves[i]].flags & FLAG_SOUND) unusableMoves |= gBitTable[i]; // Stuff Cheeks - else if (gBattleMons[battlerId].moves[i] == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[gActiveBattler].item) != POCKET_BERRIES) + else if (check & MOVE_LIMITATION_STUFF_CHEEKS && gBattleMons[battlerId].moves[i] == MOVE_STUFF_CHEEKS && ItemId_GetPocket(gBattleMons[gActiveBattler].item) != POCKET_BERRIES) unusableMoves |= gBitTable[i]; // Gorilla Tactics - else if (GetBattlerAbility(battlerId) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battlerId].moves[i]) + else if (check & MOVE_LIMITATION_CHOICE_ITEM && GetBattlerAbility(battlerId) == ABILITY_GORILLA_TACTICS && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; } return unusableMoves; From 7ac2f566fdc88127ec562f65dc1b4e419dfe5a21 Mon Sep 17 00:00:00 2001 From: crater-git Date: Tue, 23 Aug 2022 23:08:38 -0400 Subject: [PATCH 083/271] Re-added PP if statements for P_NEW_POKEMON --- src/data/pokemon/tmhm_learnsets.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index 4927171407..8c156b1765 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -10748,6 +10748,7 @@ static const u16 sDeoxysTMHMLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_NEW_POKEMON == TRUE static const u16 sTurtwigTMHMLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -23926,6 +23927,7 @@ static const u16 sPichuSpikyEaredTMHMLearnset[] = { MOVE_TOXIC, MOVE_UNAVAILABLE, }; +#endif static const u16 sUnownBTMHMLearnset[] = { MOVE_HIDDEN_POWER, @@ -24182,6 +24184,7 @@ static const u16 sDeoxysSpeedTMHMLearnset[] = { MOVE_UNAVAILABLE, }; +#if P_NEW_POKEMON == TRUE static const u16 sBurmySandyCloakTMHMLearnset[] = { MOVE_HIDDEN_POWER, MOVE_PROTECT, @@ -28094,3 +28097,5 @@ static const u16 sCalyrexShadowRiderTMHMLearnset[] = { MOVE_TAUNT, MOVE_UNAVAILABLE, }; + +#endif \ No newline at end of file From eea718cfc6f75aebd1c5c04cdfd5e20aae4acd99 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 24 Aug 2022 00:30:49 -0400 Subject: [PATCH 084/271] Placeholder moves can't be used in battle. --- data/battle_scripts_1.s | 11 +++++++++++ include/battle_scripts.h | 2 ++ include/battle_util.h | 2 ++ include/pokemon_summary_screen.h | 1 + src/battle_ai_main.c | 2 ++ src/battle_util.c | 17 +++++++++++++++++ src/data/text/move_descriptions.h | 5 +++-- src/menu_specialized.c | 7 ++++++- src/pokemon_summary_screen.c | 11 +++++++++-- 9 files changed, 53 insertions(+), 5 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 08474a1e8a..d3ff57492e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -9200,6 +9200,7 @@ BattleScript_ItemHealHP_Ret:: BattleScript_SelectingNotAllowedMoveChoiceItem:: printselectionstring STRINGID_ITEMALLOWSONLYYMOVE endselectionscript + BattleScript_SelectingNotAllowedMoveChoiceItemInPalace:: printstring STRINGID_ITEMALLOWSONLYYMOVE goto BattleScript_SelectingUnusableMoveInPalace @@ -9207,6 +9208,7 @@ BattleScript_SelectingNotAllowedMoveChoiceItemInPalace:: BattleScript_SelectingNotAllowedMoveGorillaTactics:: printselectionstring STRINGID_ABILITYALLOWSONLYMOVE endselectionscript + BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace:: printstring STRINGID_ABILITYALLOWSONLYMOVE goto BattleScript_SelectingUnusableMoveInPalace @@ -9214,10 +9216,19 @@ BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace:: BattleScript_SelectingNotAllowedMoveAssaultVest:: printselectionstring STRINGID_ASSAULTVESTDOESNTALLOW endselectionscript + BattleScript_SelectingNotAllowedMoveAssaultVestInPalace:: printstring STRINGID_ASSAULTVESTDOESNTALLOW goto BattleScript_SelectingUnusableMoveInPalace +BattleScript_SelectingNotAllowedPlaceholder:: + printselectionstring STRINGID_NOTDONEYET + endselectionscript + +BattleScript_SelectingNotAllowedPlaceholderInPalace:: + printstring STRINGID_NOTDONEYET + goto BattleScript_SelectingUnusableMoveInPalace + BattleScript_HangedOnMsg:: playanimation BS_TARGET, B_ANIM_HANGED_ON printstring STRINGID_PKMNHUNGONWITHX diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 77d889cc3a..19380932dd 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -277,6 +277,8 @@ extern const u8 BattleScript_HarvestActivates[]; extern const u8 BattleScript_ImposterActivates[]; extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVest[]; extern const u8 BattleScript_SelectingNotAllowedMoveAssaultVestInPalace[]; +extern const u8 BattleScript_SelectingNotAllowedPlaceholder[]; +extern const u8 BattleScript_SelectingNotAllowedPlaceholderInPalace[]; extern const u8 BattleScript_SelectingNotAllowedMoveGravity[]; extern const u8 BattleScript_MoveUsedGravityPrevents[]; extern const u8 BattleScript_SelectingNotAllowedMoveGravityInPalace[]; diff --git a/include/battle_util.h b/include/battle_util.h index 0219a0e6ad..d26aa24775 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -15,6 +15,8 @@ #define MOVE_LIMITATION_BELCH (1 << 11) #define MOVE_LIMITATION_THROAT_CHOP (1 << 12) #define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13) + +#define MOVE_LIMITATION_PLACEHOLDER (1 << 15) #define MOVE_LIMITATIONS_ALL 0xFFFF #define ABILITYEFFECT_ON_SWITCHIN 0 diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 3996c8e15f..4e9e62284d 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -6,6 +6,7 @@ extern u8 gLastViewedMonIndex; extern const u8 *const gMoveDescriptionPointers[]; +extern const u8 gNotDoneYetDescription[]; extern const u8 *const gNatureNamePointers[]; void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 0d029e3971..c253d37fb7 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2512,6 +2512,8 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gBattleMons[battlerAtk].hp <= gBattleMons[battlerAtk].maxHP / 3) score -= 10; break;*/ + case EFFECT_PLACEHOLDER: + return 0; // cannot even select } // move effect checks if (score < 0) diff --git a/src/battle_util.c b/src/battle_util.c index 22c319a46b..6f3c16514f 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1930,6 +1930,20 @@ u8 TrySetCantSelectMoveBattleScript(void) } } + if (gBattleMoves[move].effect == EFFECT_PLACEHOLDER) + { + if (gBattleTypeFlags & BATTLE_TYPE_PALACE) + { + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedPlaceholderInPalace; + gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE; + } + else + { + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedPlaceholder; + limitations++; + } + } + return limitations; } @@ -1949,6 +1963,9 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u16 check) // No PP else if (check & MOVE_LIMITATION_PP && gBattleMons[battlerId].pp[i] == 0) unusableMoves |= gBitTable[i]; + // Placeholder + else if (check & MOVE_LIMITATION_PLACEHOLDER && gBattleMoves[gBattleMons[battlerId].moves[i]].effect == EFFECT_PLACEHOLDER) + unusableMoves |= gBitTable[i]; // Disable else if (check & MOVE_LIMITATION_DISABLED && gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove) unusableMoves |= gBitTable[i]; diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 5f6bcfb0e4..7d890b1d3d 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2978,8 +2978,9 @@ static const u8 sEerieSpellDescription[] = _( "Attacks with psychic power.\n" "Foe's last move has 3 PP cut."); -static const u8 sNotDoneYetDescription[] = _( - "Not done yet."); +const u8 gNotDoneYetDescription[] = _( + "This move can't be used. Its\n" + "effect is in development."); // MOVE_NONE is ignored in this table. Make sure to always subtract 1 before getting the right pointer. const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 42c80b5ee3..0893fd3144 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -24,6 +24,7 @@ #include "trig.h" #include "window.h" #include "constants/songs.h" +#include "constants/battle_move_effects.h" #include "gba/io_reg.h" extern const struct CompressedSpriteSheet gMonFrontPicTable[]; @@ -807,7 +808,11 @@ static void MoveRelearnerLoadBattleMoveDescription(u32 chosenMove) } AddTextPrinterParameterized(0, FONT_NORMAL, str, 0x6A, 0x29, TEXT_SKIP_DRAW, NULL); - str = gMoveDescriptionPointers[chosenMove - 1]; + if (move->effect != EFFECT_PLACEHOLDER) + str = gMoveDescriptionPointers[chosenMove - 1]; + else + str = gNotDoneYetDescription; + AddTextPrinterParameterized(0, FONT_NARROW, str, 0, 0x41, 0, NULL); } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2befc159f5..d47253b712 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -41,13 +41,14 @@ #include "text.h" #include "tv.h" #include "window.h" +#include "constants/battle_config.h" +#include "constants/battle_move_effects.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/party_menu.h" #include "constants/region_map_sections.h" #include "constants/rgb.h" #include "constants/songs.h" -#include "constants/battle_config.h" enum { PSS_PAGE_INFO, @@ -3730,15 +3731,21 @@ static void PrintContestMoveDescription(u8 moveSlot) static void PrintMoveDetails(u16 move) { u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION); + u8 moveEffect; FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); if (move != MOVE_NONE) { if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES) { + moveEffect = gBattleMoves[move].effect; if (B_SHOW_SPLIT_ICON == TRUE) ShowSplitIcon(GetBattleMoveSplit(move)); PrintMovePowerAndAccuracy(move); - PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); + + if (moveEffect != EFFECT_PLACEHOLDER) + PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); + else + PrintTextOnWindow(windowId, gNotDoneYetDescription, 6, 1, 0, 0); } else { From fb00ac977a8e3d5229de48c70b740e9f1e471a5a Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Wed, 24 Aug 2022 16:21:45 +0700 Subject: [PATCH 085/271] Adjust endif in form_species_tables.h to include Hisuian Sneasel and Qwilfish --- src/data/pokemon/form_species_tables.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 9467006452..8e89a3836a 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -309,7 +309,6 @@ static const u16 sSlowkingFormSpeciesIdTable[] = { SPECIES_SLOWKING_GALARIAN, FORM_SPECIES_END, }; -#endif static const u16 sQwilfishFormSpeciesIdTable[] = { SPECIES_QWILFISH, @@ -322,7 +321,7 @@ static const u16 sSneaselFormSpeciesIdTable[] = { SPECIES_SNEASEL_HISUIAN, FORM_SPECIES_END, }; - +#endif static const u16 sUnownFormSpeciesIdTable[] = { SPECIES_UNOWN, SPECIES_UNOWN_B, From 1ff5bdca9dc6e036f927def41eaf924a44449a4a Mon Sep 17 00:00:00 2001 From: crater-git Date: Wed, 24 Aug 2022 11:55:39 -0400 Subject: [PATCH 086/271] Added list endings to otherwise empty learnsets --- src/data/pokemon/tmhm_learnsets.h | 60 ++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index 8c156b1765..0af5a92e5d 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -281,10 +281,12 @@ static const u16 sBlastoiseTMHMLearnset[] = { }; static const u16 sCaterpieTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sMetapodTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sButterfreeTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -314,10 +316,12 @@ static const u16 sButterfreeTMHMLearnset[] = { }; static const u16 sWeedleTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sKakunaTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sBeedrillTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -3550,7 +3554,8 @@ static const u16 sTaurosTMHMLearnset[] = { }; static const u16 sMagikarpTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sGyaradosTMHMLearnset[] = { MOVE_ATTRACT, @@ -3623,7 +3628,8 @@ static const u16 sLaprasTMHMLearnset[] = { }; static const u16 sDittoTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sEeveeTMHMLearnset[] = { MOVE_ATTRACT, @@ -7401,10 +7407,12 @@ static const u16 sLinooneTMHMLearnset[] = { }; static const u16 sWurmpleTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sSilcoonTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sBeautiflyTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -7431,7 +7439,8 @@ static const u16 sBeautiflyTMHMLearnset[] = { }; static const u16 sCascoonTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sDustoxTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -10341,7 +10350,8 @@ static const u16 sSalamenceTMHMLearnset[] = { }; static const u16 sBeldumTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sMetangTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -11140,7 +11150,8 @@ static const u16 sBibarelTMHMLearnset[] = { }; static const u16 sKricketotTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sKricketuneTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -11481,7 +11492,8 @@ static const u16 sMothimTMHMLearnset[] = { }; static const u16 sCombeeTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sVespiquenTMHMLearnset[] = { MOVE_AERIAL_ACE, @@ -16520,7 +16532,8 @@ static const u16 sKlinklangTMHMLearnset[] = { }; static const u16 sTynamoTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sEelektrikTMHMLearnset[] = { MOVE_ATTRACT, @@ -18207,7 +18220,8 @@ static const u16 sTalonflameTMHMLearnset[] = { }; static const u16 sScatterbugTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sSpewpaTMHMLearnset[] = { MOVE_PROTECT, @@ -21201,10 +21215,12 @@ static const u16 sTapuFiniTMHMLearnset[] = { }; static const u16 sCosmogTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sCosmoemTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sSolgaleoTMHMLearnset[] = { MOVE_CALM_MIND, @@ -21781,7 +21797,8 @@ static const u16 sCorviknightTMHMLearnset[] = { }; static const u16 sBlipbugTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sDottlerTMHMLearnset[] = { MOVE_ATTRACT, @@ -24305,7 +24322,8 @@ static const u16 sRotomHeatTMHMLearnset[] = { }; static const u16 sRotomWashTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sRotomFrostTMHMLearnset[] = { MOVE_BLIZZARD, @@ -24313,10 +24331,12 @@ static const u16 sRotomFrostTMHMLearnset[] = { }; static const u16 sRotomFanTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sRotomMowTMHMLearnset[] = { - }; + MOVE_UNAVAILABLE, +}; static const u16 sGiratinaOriginTMHMLearnset[] = { MOVE_AERIAL_ACE, From 17b47de90da26d3636a0fcc406f82a8377ae6a2e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 20:20:44 +0200 Subject: [PATCH 087/271] Ability pop-up displays properly long abilities --- src/battle_interface.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index a504cf1c0e..720bff809d 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2908,7 +2908,7 @@ static void TextIntoAbilityPopUp(void *dest, u8 *windowTileData, s32 arg2, bool3 #define MAX_CHARS_PRINTED 12 -static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTileData2, u32 x1, u32 x2, u32 y, u32 color1, u32 color2, u32 color3) +static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTileData2, u32 x1, u32 x2, u32 y, u32 color1, u32 color2, u32 color3, bool32 alignAbilityChars) { u32 windowId, i; u8 *windowTileData; @@ -2923,6 +2923,15 @@ static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTi } text1[i] = EOS; + // Because there are two Windows, we need to align the strings, so that the first char in the second window starts right after the last char in the first window. + // Windows are 64 pixels in width. + if (alignAbilityChars && i == MAX_CHARS_PRINTED) + { + u32 width = GetStringWidth(FONT_SMALL, text1, 0); + while (x1 + width < 64) + x1++; + } + windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(text1, x1, y, color1, color2, color3, &windowId); TextIntoAbilityPopUp(spriteTileData1, windowTileData, 8, (y == 0)); RemoveWindow(windowId); @@ -2951,7 +2960,8 @@ static void ClearAbilityName(u8 spriteId1, u8 spriteId2) (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256, 6, 1, 4, - 7, 9, 1); + 7, 9, 1, + FALSE); } static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2) @@ -2988,7 +2998,8 @@ static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2) (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32), 7, 0, 0, - 2, 7, 1); + 2, 7, 1, + FALSE); } static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2) @@ -2996,9 +3007,10 @@ static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2) PrintOnAbilityPopUp(gAbilityNames[ability], (void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256, (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256, - 6, 1, + 6, 0, 4, - 7, 9, 1); + 7, 9, 1, + TRUE); } #define PIXEL_COORDS_TO_OFFSET(x, y)( \ @@ -3196,7 +3208,7 @@ void UpdateAbilityPopup(u8 battlerId) u8 spriteId1 = gBattleStruct->abilityPopUpSpriteIds[battlerId][0]; u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battlerId][1]; u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battlerId].ability; - + ClearAbilityName(spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); @@ -3382,7 +3394,7 @@ static void DestroyLastUsedBallGfx(struct Sprite *sprite) } static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_BALL_WIN_X_0) @@ -3399,7 +3411,7 @@ static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) } static void SpriteCB_LastUsedBall(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_USED_BALL_X_0) From 0bf2b264912322fd06fa19d0575ea5be46faf95c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 20:36:49 +0200 Subject: [PATCH 088/271] Get rid of garbage bytes in graphics.c --- src/graphics.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/graphics.c b/src/graphics.c index 9e858deecb..7ccd0d5799 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -2033,12 +2033,3 @@ const u16 gFrontierPassCancelButtonHighlighted_Tilemap[] = INCBIN_U16("graphics/ const u16 gBerryCrush_Crusher_Pal[] = INCBIN_U16("graphics/berry_crush/crusher.gbapal"); const u32 gBerryCrush_Crusher_Gfx[] = INCBIN_U32("graphics/berry_crush/crusher.4bpp.lz"); const u32 gBerryCrush_TextWindows_Tilemap[] = INCBIN_U32("graphics/berry_crush/text_windows.bin.lz"); - -// random garbage at the end. -static const u8 sEmpty3[0x54BAC] = {0}; -static const u8 sUnused1[] = {0x0D, 0x00, 0x58, 0x02}; -static const u8 sEmpty4[0x1145] = {0}; -static const u8 sUnused2[] = {0x02}; -static const u8 sEmpty5[0x3242] = {0}; -static const u8 sUnused3[] = {0x40}; -static const u8 sEmpty6[0x13] = {0}; From cc8dd92247284b452b404cc93399820aed566404 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 20:48:47 +0200 Subject: [PATCH 089/271] ENDTURN_WISH resets gBattleStruct->turnSideTracker --- src/battle_util.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index fd9b699b8e..645d282bad 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -294,7 +294,7 @@ void HandleAction_UseMove(void) { gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; } - + // check z move used if (gBattleStruct->zmove.toBeUsed[gBattlerAttacker] != MOVE_NONE && !IS_MOVE_STATUS(gCurrentMove)) { @@ -395,7 +395,7 @@ void HandleAction_UseMove(void) u16 battlerAbility; gActiveBattler = gBattlerByTurnOrder[var]; battlerAbility = GetBattlerAbility(gActiveBattler); - + RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); if (battlerAbility == ABILITY_LIGHTNING_ROD) gSpecialStatuses[gActiveBattler].lightningRodRedirected = TRUE; @@ -909,7 +909,7 @@ void HandleAction_ActionFinished(void) gBattleCommunication[4] = 0; gBattleScripting.multihitMoveEffect = 0; gBattleResources->battleScriptsStack->size = 0; - + #if B_RECALC_TURN_AFTER_ACTIONS >= GEN_8 // i starts at `gCurrentTurnActionNumber` because we don't want to recalculate turn order for mon that have already // taken action. It's been previously increased, which we want in order to not recalculate the turn of the mon that just finished its action @@ -930,7 +930,7 @@ void HandleAction_ActionFinished(void) { if (GetWhoStrikesFirst(battler1, battler2, TRUE)) // If the actions chosen are switching, we recalc order but ignoring the moves SwapTurnOrder(i, j); - } + } } } #endif @@ -1463,20 +1463,20 @@ void CancelMultiTurnMoves(u8 battler) // Clear battler's semi-invulnerable bits if they are not held by Sky Drop. if (!(gStatuses3[battler] & STATUS3_SKY_DROPPED)) gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE); - + // Check to see if this Pokemon was in the middle of using Sky Drop. If so, release the target. if (gBattleStruct->skyDropTargets[battler] != 0xFF && !(gStatuses3[battler] & STATUS3_SKY_DROPPED)) { // Get the target's battler id u8 otherSkyDropper = gBattleStruct->skyDropTargets[battler]; - + // Clears sky_dropped and on_air statuses gStatuses3[otherSkyDropper] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); - + // Makes both attacker and target's sprites visible gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; gSprites[gBattlerSpriteIds[otherSkyDropper]].invisible = FALSE; - + // If target was sky dropped in the middle of Outrage/Thrash/Petal Dance, // confuse them upon release and display "confused by fatigue" message & animation. // Don't do this if this CancelMultiTurnMoves is caused by falling asleep via Yawn. @@ -2341,6 +2341,7 @@ u8 DoFieldEndTurnEffects(void) if (effect == 0) { gBattleStruct->turnCountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case ENDTURN_RAIN: @@ -3729,7 +3730,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleStruct->zmove.used[gBattlerAttacker] = TRUE; if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsPartnerMonFromSameTrainer(gBattlerAttacker)) gBattleStruct->zmove.used[BATTLE_PARTNER(gBattlerAttacker)] = TRUE; //if 1v1 double, set partner used flag as well - + gBattleScripting.battler = gBattlerAttacker; if (gBattleStruct->zmove.activeSplit == SPLIT_STATUS) { @@ -4961,7 +4962,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move if (effect == 1) // Drain Hp ability. { -#if B_HEAL_BLOCKING >= GEN_5 +#if B_HEAL_BLOCKING >= GEN_5 if (BATTLER_MAX_HP(battler) || gStatuses3[battler] & STATUS3_HEAL_BLOCK) #else if (BATTLER_MAX_HP(battler)) @@ -8048,7 +8049,7 @@ static u16 CalcMoveBasePower(u16 move, u8 battlerAtk, u8 battlerDef) u32 i; u16 basePower = gBattleMoves[move].power; u32 weight, hpFraction, speed; - + if (gBattleStruct->zmove.active) return gBattleMoves[gBattleStruct->zmove.baseMoves[battlerAtk]].zMovePower; @@ -9122,7 +9123,7 @@ static s32 DoMoveDamageCalc(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, bool32 isCrit, bool32 randomFactor, bool32 updateFlags, u16 typeEffectivenessModifier) { s32 dmg; - + // Don't calculate damage if the move has no effect on target. if (typeEffectivenessModifier == UQ_4_12(0)) return 0; @@ -9454,7 +9455,7 @@ bool32 CanMegaEvolve(u8 battlerId) // Cannot use z move and mega evolve on same turn if (gBattleStruct->zmove.toBeUsed[battlerId]) return FALSE; - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsPartnerMonFromSameTrainer(battlerId) && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battlerId)]))) @@ -10115,7 +10116,7 @@ void DoBurmyFormChange(u32 monId) currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); - if ((GET_BASE_SPECIES_ID(currSpecies) == SPECIES_BURMY) + if ((GET_BASE_SPECIES_ID(currSpecies) == SPECIES_BURMY) && (gBattleStruct->appearedInBattle & gBitTable[monId]) // Burmy appeared in battle && GetMonData(&party[monId], MON_DATA_HP, NULL) != 0) // Burmy isn't fainted { From e3ab439ec0d50036a8001f4131a04a8b87bd0531 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 21:56:24 +0200 Subject: [PATCH 090/271] Fix multi wild battles --- include/constants/battle.h | 2 +- src/battle_ai_main.c | 246 ++++++++++++++++++------------------- src/battle_main.c | 18 +-- 3 files changed, 133 insertions(+), 133 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index 37b9a637a3..a4fdc4798f 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -81,7 +81,7 @@ #define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER)))) #define BATTLE_TWO_VS_ONE_OPPONENT ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gTrainerBattleOpponent_B == 0xFFFF)) -#define BATTLE_TYPE_HAS_AI (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER) +#define BATTLE_TYPE_HAS_AI (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER | BATTLE_TYPE_INGAME_PARTNER) // Battle Outcome defines diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 732dea7807..b541b20a48 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -130,10 +130,10 @@ static u32 GetWildAiFlags(void) { u8 avgLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); u32 flags; - + if (IsDoubleBattle()) avgLevel = (GetMonData(&gEnemyParty[0], MON_DATA_LEVEL) + GetMonData(&gEnemyParty[1], MON_DATA_LEVEL)) / 2; - + flags |= AI_FLAG_CHECK_BAD_MOVE; if (avgLevel >= 20) flags |= AI_FLAG_CHECK_VIABILITY; @@ -141,10 +141,10 @@ static u32 GetWildAiFlags(void) flags |= AI_FLAG_PREFER_STRONGEST_MOVE; if (avgLevel >= 80) flags |= AI_FLAG_HP_AWARE; - + if (B_VAR_WILD_AI_FLAGS != 0 && VarGet(B_VAR_WILD_AI_FLAGS) != 0) flags |= VarGet(B_VAR_WILD_AI_FLAGS); - + return flags; } @@ -166,7 +166,7 @@ void BattleAI_SetupFlags(void) AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags | gTrainers[gTrainerBattleOpponent_B].aiFlags; else AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags; - + // check smart wild AI if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER)) && IsWildMonSmart()) AI_THINKING_STRUCT->aiFlags |= GetWildAiFlags(); @@ -220,11 +220,11 @@ u8 BattleAI_ChooseMoveOrAction(void) ret = ChooseMoveOrAction_Singles(); else ret = ChooseMoveOrAction_Doubles(); - + // Clear protect structures, some flags may be set during AI calcs // e.g. pranksterElevated from GetMovePriority memset(&gProtectStructs, 0, MAX_BATTLERS_COUNT * sizeof(struct ProtectStruct)); - + gCurrentMove = savedCurrentMove; return ret; } @@ -253,13 +253,13 @@ void GetAiLogicData(void) u32 battlerAtk, battlerDef, i, move; u8 effectiveness; s32 dmg; - + memset(AI_DATA, 0, sizeof(struct AiLogicData)); - + if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER)) && !IsWildMonSmart()) return; - + // get/assume all battler data for (i = 0; i < gBattlersCount; i++) { @@ -267,7 +267,7 @@ void GetAiLogicData(void) SetBattlerAiData(i); } } - + // simulate AI damage for (battlerAtk = 0; battlerAtk < gBattlersCount; battlerAtk++) { @@ -275,26 +275,26 @@ void GetAiLogicData(void) || !IsBattlerAIControlled(battlerAtk)) { continue; } - + for (battlerDef = 0; battlerDef < gBattlersCount; battlerDef++) { if (battlerAtk == battlerDef) continue; - + RecordKnownMove(battlerDef, gLastMoves[battlerDef]); for (i = 0; i < MAX_MON_MOVES; i++) { dmg = 0; effectiveness = AI_EFFECTIVENESS_x0; move = gBattleMons[battlerAtk].moves[i]; - + if (move != 0 && move != 0xFFFF //&& gBattleMoves[move].power != 0 /* we want to get effectiveness of status moves */ && !(AI_DATA->moveLimitations[battlerAtk] & gBitTable[i])) { dmg = AI_CalcDamage(move, battlerAtk, battlerDef, &effectiveness, TRUE); } - + AI_DATA->simulatedDmg[battlerAtk][battlerDef][i] = dmg; AI_DATA->effectiveness[battlerAtk][battlerDef][i] = effectiveness; } @@ -334,7 +334,7 @@ static u8 ChooseMoveOrAction_Singles(void) return AI_CHOICE_WATCH; gActiveBattler = sBattler_AI; - + // If can switch. if (CountUsablePartyMons(sBattler_AI) > 0 && !IsAbilityPreventingEscape(sBattler_AI) @@ -375,7 +375,7 @@ static u8 ChooseMoveOrAction_Singles(void) } } } - + numOfBestMoves = 1; currentMoveArray[0] = AI_THINKING_STRUCT->score[0]; consideredMoveArray[0] = 0; @@ -427,7 +427,7 @@ static u8 ChooseMoveOrAction_Doubles(void) BattleAI_SetupAIData(gBattleStruct->palaceFlags >> 4); else BattleAI_SetupAIData(0xF); - + gBattlerTarget = i; if ((i & BIT_SIDE) != (sBattler_AI & BIT_SIDE)) RecordLastUsedMoveByTarget(); @@ -467,7 +467,7 @@ static u8 ChooseMoveOrAction_Doubles(void) { if (!CanTargetBattler(sBattler_AI, i, gBattleMons[sBattler_AI].moves[j])) continue; - + if (mostViableMovesScores[0] == AI_THINKING_STRUCT->score[j]) { mostViableMovesScores[mostViableMovesNo] = AI_THINKING_STRUCT->score[j]; @@ -586,7 +586,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); u32 i; u16 predictedMove = AI_DATA->predictedMoves[battlerDef]; - + SetTypeBeforeUsingMove(move, battlerAtk); GET_MOVE_TYPE(move, moveType); @@ -594,7 +594,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) return score; GET_MOVE_TYPE(move, moveType); - + // check non-user target if (!(moveTarget & MOVE_TARGET_USER)) { @@ -604,7 +604,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { RETURN_SCORE_MINUS(20); } - + // check ground immunities if (moveType == TYPE_GROUND && !IsBattlerGrounded(battlerDef) @@ -616,11 +616,11 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { RETURN_SCORE_MINUS(20); } - + // check off screen if (IsSemiInvulnerable(battlerDef, move) && moveEffect != EFFECT_SEMI_INVULNERABLE && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_FASTER) RETURN_SCORE_MINUS(20); // if target off screen and we go first, don't use move - + // check if negates type switch (effectiveness) { @@ -632,7 +632,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_MINUS(10); break; } - + // target ability checks if (!DoesBattlerIgnoreAbilityChecks(AI_DATA->abilities[battlerAtk], move)) { @@ -758,7 +758,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) RETURN_SCORE_MINUS(10); break; } // def ability checks - + // target partner ability checks & not attacking partner if (isDoubleBattle) { @@ -796,35 +796,35 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } } // def partner ability checks } // ignore def ability check - + // gen7+ dark type mons immune to priority->elevated moves from prankster #if B_PRANKSTER_DARK_TYPES >= GEN_7 if (AI_DATA->abilities[battlerAtk] == ABILITY_PRANKSTER && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK) && IS_MOVE_STATUS(move) && !(moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER))) RETURN_SCORE_MINUS(10); #endif - + // terrain & effect checks if (AI_IsTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN)) { if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN) RETURN_SCORE_MINUS(20); } - + if (AI_IsTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN)) { if (IsNonVolatileStatusMoveEffect(moveEffect) || IsConfusionMoveEffect(moveEffect)) RETURN_SCORE_MINUS(20); } - + if (AI_IsTerrainAffected(battlerAtk, STATUS_FIELD_PSYCHIC_TERRAIN) && atkPriority > 0) { RETURN_SCORE_MINUS(20); } } // end check MOVE_TARGET_USER - + // the following checks apply to any target (including user) - + // throat chop check if (gDisableStructs[battlerAtk].throatChopTimer && TestMoveFlags(move, FLAG_SOUND)) return 0; // Can't even select move at all @@ -860,7 +860,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } } } - + // check move effects switch (moveEffect) { @@ -874,7 +874,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_EXPLOSION: if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_WILL_SUICIDE)) score -= 2; - + if (effectiveness == AI_EFFECTIVENESS_x0) { score -= 10; @@ -920,7 +920,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPATK) || !HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) score -= 10; break; - case EFFECT_SPECIAL_DEFENSE_UP: + case EFFECT_SPECIAL_DEFENSE_UP: case EFFECT_SPECIAL_DEFENSE_UP_2: if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPDEF)) score -= 10; @@ -1230,7 +1230,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_LOW_KICK: // AI_CBM_HighRiskForDamage if (AI_DATA->abilities[battlerDef] == ABILITY_WONDER_GUARD && effectiveness < AI_EFFECTIVENESS_x2) - score -= 10; + score -= 10; break; case EFFECT_COUNTER: case EFFECT_MIRROR_COAT: @@ -1240,7 +1240,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) || DoesSubstituteBlockMove(battlerAtk, BATTLE_PARTNER(battlerDef), predictedMove)) score -= 10; break; - + case EFFECT_ROAR: if (CountUsablePartyMons(battlerDef) == 0) score -= 10; @@ -1392,7 +1392,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SPIKES: if (gSideTimers[GetBattlerSide(battlerDef)].spikesAmount >= 3) score -= 10; - else if (PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) + else if (PartnerMoveIsSameNoTarget(BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) && gSideTimers[GetBattlerSide(battlerDef)].spikesAmount == 2) score -= 10; // only one mon needs to set up the last layer of Spikes break; @@ -1570,7 +1570,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break; } - + if (B_MENTAL_HERB >= GEN_5 && AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB) score -= 6; break; @@ -1802,7 +1802,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gBattleMons[battlerAtk].hp > (gBattleMons[battlerAtk].hp + gBattleMons[battlerDef].hp) / 2) score -= 10; break; - + case EFFECT_CONVERSION_2: //TODO break; @@ -1862,7 +1862,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } break; } // move check - + if (decreased) break; if (IsBattlerIncapacitated(battlerDef, AI_DATA->abilities[battlerDef])) @@ -1904,7 +1904,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) IncreaseAllyProtectionViability(&viability, 0xFF); }*/ } - break; + break; case EFFECT_MIRACLE_EYE: if (gStatuses3[battlerDef] & STATUS3_MIRACLE_EYED) score -= 10; @@ -1952,7 +1952,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) || ((AI_DATA->abilities[battlerDef] == ABILITY_CONTRARY) && !IsTargetingPartner(battlerAtk, battlerDef))) // don't want to raise target stats unless its your partner score -= 10; break; - + case EFFECT_PSYCH_UP: // haze stats check { for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) @@ -2116,7 +2116,7 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) u32 atkNegativeStages = CountNegativeStatStages(battlerAtk); u32 defPositiveStages = CountPositiveStatStages(battlerDef); u32 defNegativeStages = CountNegativeStatStages(battlerDef); - + if (atkPositiveStages >= defPositiveStages && atkNegativeStages <= defNegativeStages) score -= 10; break; @@ -2513,21 +2513,21 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 10; break;*/ } // move effect checks - + if (score < 0) score = 0; - + return score; } static s16 AI_TryToFaint(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) -{ +{ if (IsTargetingPartner(battlerAtk, battlerDef)) return score; - + if (gBattleMoves[move].power == 0) return score; // can't make anything faint with no power - + if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0) && gBattleMoves[move].effect != EFFECT_EXPLOSION) { // this move can faint the target @@ -2541,10 +2541,10 @@ static s16 AI_TryToFaint(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // this move isn't expected to faint the target if (TestMoveFlags(move, FLAG_HIGH_CRIT)) score += 2; // crit makes it more likely to make them faint - + if (GetMoveDamageResult(move) == MOVE_POWER_OTHER) score--; - + switch (AI_DATA->effectiveness[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex]) { case AI_EFFECTIVENESS_x8: @@ -2561,7 +2561,7 @@ static s16 AI_TryToFaint(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } } - + //AI_TryToFaint_CheckIfDanger if (!WillAIStrikeFirst() && CanTargetFaintAi(battlerDef, battlerAtk)) { // AI_TryToFaint_Danger @@ -2570,7 +2570,7 @@ static s16 AI_TryToFaint(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else score++; } - + return score; } @@ -2626,8 +2626,8 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } } // check partner move effect - - + + // consider our move effect relative to partner state switch (effect) { @@ -2648,8 +2648,8 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } break; } // our effect relative to partner - - + + // consider global move effects switch (effect) { @@ -2679,8 +2679,8 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } break; } // global move effect check - - + + // check specific target if (IsTargetingPartner(battlerAtk, battlerDef)) { @@ -2787,11 +2787,11 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { RETURN_SCORE_PLUS(1); } - break; + break; } } // ability checks } // move power check - + // attacker move effects specifically targeting partner if (!partnerProtecting) { @@ -2904,12 +2904,12 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } // attacker move effects } // check partner protecting - + score -= 30; // otherwise, don't target partner } else // checking opponent { - // these checks mostly handled in AI_CheckBadMove and AI_CheckViability + // these checks mostly handled in AI_CheckBadMove and AI_CheckViability switch (effect) { case EFFECT_SKILL_SWAP: @@ -2934,10 +2934,10 @@ static s16 AI_DoubleBattle(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 3; break; } - + // lightning rod, flash fire against enemy handled in AI_CheckBadMove } - + return score; } @@ -2974,11 +2974,11 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) u16 predictedMove = AI_DATA->predictedMoves[battlerDef]; bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); u32 i; - + // Targeting partner, check benefits of doing that instead if (IsTargetingPartner(battlerAtk, battlerDef)) return score; - + // check always hits if (!IS_MOVE_STATUS(move) && gBattleMoves[move].accuracy == 0) { @@ -2987,11 +2987,11 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (AI_RandLessThan(100) && (gBattleMons[battlerDef].statStages[STAT_EVASION] >= 8 || gBattleMons[battlerAtk].statStages[STAT_ACC] <= 4)) score++; } - + // check high crit if (TestMoveFlags(move, FLAG_HIGH_CRIT) && effectiveness >= AI_EFFECTIVENESS_x2 && AI_RandLessThan(128)) score++; - + // check already dead if (!IsBattlerIncapacitated(battlerDef, AI_DATA->abilities[battlerDef]) && CanTargetFaintAi(battlerAtk, battlerDef) @@ -3002,7 +3002,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else score--; } - + // check damage if (gBattleMoves[move].power != 0 && GetMoveDamageResult(move) == MOVE_POWER_WEAK) score--; @@ -3010,11 +3010,11 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // check status move preference if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_PREFER_STATUS_MOVES && IS_MOVE_STATUS(move) && effectiveness != AI_EFFECTIVENESS_x0) score++; - + // check thawing moves if ((gBattleMons[battlerAtk].status1 & STATUS1_FREEZE) && TestMoveFlags(move, FLAG_THAW_USER)) score += (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) ? 20 : 10; - + // check burn if (gBattleMons[battlerAtk].status1 & STATUS1_BURN) { @@ -3033,7 +3033,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } } - + // attacker ability checks switch (AI_DATA->abilities[battlerAtk]) { @@ -3049,8 +3049,8 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 8; // prioritize killing target for stat boost } break; - } // ability checks - + } // ability checks + // move effect checks switch (moveEffect) { @@ -3095,7 +3095,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } } - + if (!AI_RandLessThan(100)) { score--; @@ -3141,7 +3141,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; } } - + if (!AI_RandLessThan(100)) { score--; @@ -3164,7 +3164,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 2; else if (AI_DATA->hpPercents[battlerAtk] <= 70) score -= 2; - else + else score++; break; case EFFECT_EVASION_UP: @@ -3294,7 +3294,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_ATTACK_SPATK_UP: // work up if (AI_DATA->hpPercents[battlerAtk] <= 40 || AI_DATA->abilities[battlerAtk] == ABILITY_CONTRARY) break; - + if (HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); else if (HasMoveWithSplit(battlerAtk, SPLIT_SPECIAL)) @@ -3350,7 +3350,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) default: break; } - + if (ShouldRecover(battlerAtk, battlerDef, move, healPercent)) score += 2; } @@ -3578,7 +3578,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (newHp > healthBenchmark && ShouldAbsorb(battlerAtk, battlerDef, move, AI_DATA->simulatedDmg[battlerAtk][battlerDef][AI_THINKING_STRUCT->movesetIndex])) score += 2; } - break; + break; case EFFECT_SLEEP_TALK: case EFFECT_SNORE: if (!IsWakeupTurn(battlerAtk) && gBattleMons[battlerAtk].status1 & STATUS1_SLEEP) @@ -3613,13 +3613,13 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_THIEF: { bool32 canSteal = FALSE; - + #if defined B_TRAINERS_KNOCK_OFF_ITEMS && B_TRAINERS_KNOCK_OFF_ITEMS == TRUE canSteal = TRUE; #endif if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER) canSteal = TRUE; - + if (canSteal && AI_DATA->items[battlerAtk] == ITEM_NONE && AI_DATA->items[battlerDef] != ITEM_NONE && CanBattlerGetOrLoseItem(battlerDef, AI_DATA->items[battlerDef]) @@ -3763,8 +3763,8 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (AI_DATA->abilities[battlerDef] == ABILITY_MAGIC_BOUNCE || CountUsablePartyMons(battlerDef) == 0) break; if (gDisableStructs[battlerAtk].isFirstTurn) - score += 2; - //TODO - track entire opponent party data to determine hazard effectiveness + score += 2; + //TODO - track entire opponent party data to determine hazard effectiveness break; case EFFECT_FORESIGHT: if (AI_DATA->abilities[battlerAtk] == ABILITY_SCRAPPY) @@ -3793,7 +3793,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN) || HasMoveEffect(battlerDef, EFFECT_SYNTHESIS) || HasMoveEffect(battlerDef, EFFECT_MOONLIGHT)) - score += 2; + score += 2; } break; case EFFECT_HAIL: @@ -3802,7 +3802,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL)) && ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL)) score += 3; - + score++; if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK) score++; @@ -3861,7 +3861,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SPECTRAL_THIEF: // Want to copy positive stat changes for (i = STAT_ATK; i < NUM_BATTLE_STATS; i++) - { + { if (gBattleMons[battlerDef].statStages[i] > gBattleMons[battlerAtk].statStages[i]) { switch (i) @@ -3920,7 +3920,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (HasMoveEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveEffect(battlerAtk, EFFECT_SPIT_UP)) score += 2; - + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_DEF, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); break; @@ -3937,20 +3937,20 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) || HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP) || HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) score++; - + if (AI_DATA->abilities[battlerDef] == ABILITY_CONTRARY) score += 2; - + IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_FLATTER: if (HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP) || HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF)) score += 2; - + if (AI_DATA->abilities[battlerDef] == ABILITY_CONTRARY) score += 2; - + IncreaseConfusionScore(battlerAtk, battlerDef, move, &score); break; case EFFECT_FURY_CUTTER: @@ -3991,7 +3991,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 3; break; } - + switch (move) { case MOVE_DEFOG: @@ -4007,7 +4007,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) && AI_WhoStrikesFirst(battlerAtk, BATTLE_PARTNER(battlerAtk), move) == AI_IS_SLOWER) // Partner going first break; // Don't use Defog if partner is going to set up hazards } - + // check defog lowering evasion if (ShouldLowerEvasion(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef])) { @@ -4179,10 +4179,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { u16 item = GetUsedHeldItem(battlerAtk); u16 toHeal = (ItemId_GetHoldEffectParam(item) == 10) ? 10 : gBattleMons[battlerAtk].maxHP / ItemId_GetHoldEffectParam(item); - + if (IsStatBoostingBerry(item) && AI_DATA->hpPercents[battlerAtk] > 60) score++; - else if (ShouldRestoreHpBerry(battlerAtk, item) && !CanAIFaintTarget(battlerAtk, battlerDef, 0) + else if (ShouldRestoreHpBerry(battlerAtk, item) && !CanAIFaintTarget(battlerAtk, battlerDef, 0) && ((GetWhoStrikesFirst(battlerAtk, battlerDef, TRUE) == 0 && CanTargetFaintAiWithMod(battlerDef, battlerAtk, 0, 0)) || !CanTargetFaintAiWithMod(battlerDef, battlerAtk, toHeal, 0))) score++; // Recycle healing berry if we can't otherwise faint the target and the target wont kill us after we activate the berry @@ -4229,7 +4229,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { if (AI_DATA->abilities[battlerDef] != AI_DATA->abilities[battlerAtk] && !(gStatuses3[battlerDef] & STATUS3_GASTRO_ACID)) score += 2; - } + } break; case EFFECT_IMPRISON: if (predictedMove != MOVE_NONE && HasMove(battlerAtk, predictedMove)) @@ -4300,7 +4300,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SHELL_SMASH: if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) score += 1; - + IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); @@ -4407,7 +4407,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gStatuses3[battlerAtk] & STATUS3_YAWN && IsBattlerGrounded(battlerAtk)) score += 10; //fallthrough - case EFFECT_GRASSY_TERRAIN: + case EFFECT_GRASSY_TERRAIN: case EFFECT_PSYCHIC_TERRAIN: score += 2; if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_TERRAIN_EXTENDER) @@ -4680,7 +4680,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) //case EFFECT_SKY_DROP //break; } // move effect checks - + return score; } @@ -4690,15 +4690,15 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (IsTargetingPartner(battlerAtk, battlerDef) || gBattleResults.battleTurnCounter != 0) return score; - - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING + + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER && CanTargetFaintAi(battlerDef, battlerAtk) && GetMovePriority(battlerAtk, move) == 0) { RETURN_SCORE_MINUS(20); // No point in setting up if you will faint. Should just switch if possible.. } - + // check effects to prioritize first turn switch (gBattleMoves[move].effect) { @@ -4787,7 +4787,7 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) default: break; } - + return score; } @@ -4796,10 +4796,10 @@ static s16 AI_Risky(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { if (IsTargetingPartner(battlerAtk, battlerDef)) return score; - + if (TestMoveFlags(move, FLAG_HIGH_CRIT)) score += 2; - + switch (gBattleMoves[move].effect) { case EFFECT_SLEEP: @@ -4826,7 +4826,7 @@ static s16 AI_Risky(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) default: break; } - + return score; } @@ -4835,10 +4835,10 @@ static s16 AI_PreferStrongestMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 sc { if (IsTargetingPartner(battlerAtk, battlerDef)) return score; - + if (GetMoveDamageResult(move) == MOVE_POWER_BEST) score += 2; - + return score; } @@ -4846,14 +4846,14 @@ static s16 AI_PreferStrongestMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 sc static s16 AI_PreferBatonPass(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { u32 i; - + if (IsTargetingPartner(battlerAtk, battlerDef) || CountUsablePartyMons(battlerAtk) == 0 || GetMoveDamageResult(move) != MOVE_POWER_OTHER || !HasMoveEffect(battlerAtk, EFFECT_BATON_PASS) || IsBattlerTrapped(battlerAtk, TRUE)) return score; - + if (IsStatRaisingEffect(gBattleMoves[move].effect)) { if (gBattleResults.battleTurnCounter == 0) @@ -4861,9 +4861,9 @@ static s16 AI_PreferBatonPass(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) else if (AI_DATA->hpPercents[battlerAtk] < 60) score -= 10; else - score++; + score++; } - + // other specific checks switch (gBattleMoves[move].effect) { @@ -4889,12 +4889,12 @@ static s16 AI_PreferBatonPass(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) if (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING)) score += 2; if (gStatuses3[battlerAtk] & STATUS3_LEECHSEED) - score -= 3; + score -= 3; break; default: break; } - + return score; } @@ -4914,11 +4914,11 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) return 0; - + if (CanTargetFaintAi(FOE(battlerAtk), BATTLE_PARTNER(battlerAtk)) || (CanTargetFaintAi(BATTLE_PARTNER(FOE(battlerAtk)), BATTLE_PARTNER(battlerAtk)))) score--; - + if (AI_DATA->hpPercents[battlerDef] <= 50) score++; } @@ -4957,7 +4957,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // med hp if (IsStatRaisingEffect(effect) || IsStatLoweringEffect(effect)) score -= 2; - + switch (effect) { case EFFECT_EXPLOSION: @@ -4980,7 +4980,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) // low hp if (IsStatRaisingEffect(effect) || IsStatLoweringEffect(effect)) score -= 2; - + // check other discouraged low hp effects switch (effect) { @@ -5013,7 +5013,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } } } - + // consider target HP if (CanIndexMoveFaintTarget(battlerAtk, battlerDef, AI_THINKING_STRUCT->movesetIndex, 0)) { @@ -5085,7 +5085,7 @@ static s16 AI_HPAware(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 2; // don't use status moves if target is at low health } } - + return score; } @@ -5104,7 +5104,7 @@ static s16 AI_Roaming(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) { if (IsBattlerTrapped(battlerAtk, FALSE)) return score; - + AI_Flee(); return score; } diff --git a/src/battle_main.c b/src/battle_main.c index 5c03a18b46..25a0b06135 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2981,10 +2981,10 @@ static void BattleStartClearSetData(void) gBattleStruct->arenaLostOpponentMons = 0; gBattleStruct->mega.triggerSpriteId = 0xFF; - + gBattleStruct->stickyWebUser = 0xFF; gBattleStruct->appearedInBattle = 0; - + for (i = 0; i < PARTY_SIZE; i++) { gBattleStruct->usedHeldItems[i][0] = 0; @@ -3084,7 +3084,7 @@ void SwitchInClearSetData(void) gBattleStruct->lastTakenMoveFrom[gActiveBattler][3] = 0; gBattleStruct->lastMoveFailed &= ~(gBitTable[gActiveBattler]); gBattleStruct->palaceFlags &= ~(gBitTable[gActiveBattler]); - + if (gActiveBattler == gBattleStruct->stickyWebUser) gBattleStruct->stickyWebUser = 0xFF; // Switched into sticky web user slot so reset it @@ -3100,7 +3100,7 @@ void SwitchInClearSetData(void) gBattleResources->flags->flags[gActiveBattler] = 0; gCurrentMove = MOVE_NONE; gBattleStruct->arenaTurnCounter = 0xFF; - + // Reset damage to prevent things like red card activating if the switched-in mon is holding it gSpecialStatuses[gActiveBattler].physicalDmg = 0; gSpecialStatuses[gActiveBattler].specialDmg = 0; @@ -3184,7 +3184,7 @@ void FaintClearSetData(void) gBattleStruct->lastTakenMoveFrom[gActiveBattler][3] = 0; gBattleStruct->palaceFlags &= ~(gBitTable[gActiveBattler]); - + if (gActiveBattler == gBattleStruct->stickyWebUser) gBattleStruct->stickyWebUser = 0xFF; // User of sticky web fainted, so reset the stored battler ID @@ -3342,7 +3342,7 @@ static void DoBattleIntro(void) MarkBattlerForControllerExec(gActiveBattler); } } - else // wild mon 2 + else if (IsBattlerAlive(gActiveBattler)) // wild mon 2 if alive { BtlController_EmitLoadMonSprite(BUFFER_A); MarkBattlerForControllerExec(gActiveBattler); @@ -3696,7 +3696,7 @@ static void TryDoEventsBeforeFirstTurn(void) gMoveResultFlags = 0; gRandomTurnNumber = Random(); - + GetAiLogicData(); // get assumed abilities, hold effects, etc of all battlers if (gBattleTypeFlags & BATTLE_TYPE_ARENA) @@ -3904,7 +3904,7 @@ static void HandleTurnActionSelectionState(void) case STATE_TURN_START_RECORD: // Recorded battle related action on start of every turn. RecordedBattle_CopyBattlerMoves(); gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; - + // Do AI score computations here so we can use them in AI_TrySwitchOrUseItem if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) && IsBattlerAIControlled(gActiveBattler)) { gBattleStruct->aiMoveOrAction[gActiveBattler] = ComputeBattleAiScores(gActiveBattler); @@ -4564,7 +4564,7 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) // QUICK CLAW / CUSTAP - always first // LAGGING TAIL - always last // STALL - always last - + if (gProtectStructs[battler1].quickDraw && !gProtectStructs[battler2].quickDraw) strikesFirst = 0; else if (!gProtectStructs[battler1].quickDraw && gProtectStructs[battler2].quickDraw) From 90f72a745adde802c9ab287a217b8c80b36b7d21 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 24 Aug 2022 17:01:36 -0300 Subject: [PATCH 091/271] Fixed switch syntax in Task_TryFieldPoisonWhiteOut --- src/field_poison.c | 62 +++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/field_poison.c b/src/field_poison.c index e29e1ac988..fcb47acdb8 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -67,40 +67,40 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) s16 *data = gTasks[taskId].data; switch (tState) { - case 0: - for (; tPartyIdx < PARTY_SIZE; tPartyIdx++) + case 0: + for (; tPartyIdx < PARTY_SIZE; tPartyIdx++) + { + if (MonFaintedFromPoison(tPartyIdx)) { - if (MonFaintedFromPoison(tPartyIdx)) - { - FaintFromFieldPoison(tPartyIdx); - ShowFieldMessage(gText_PkmnFainted_FldPsn); - tState++; - return; - } - } - tState = 2; // Finished checking party - break; - case 1: - // Wait for "{mon} fainted" message, then return to party loop - if (IsFieldMessageBoxHidden()) - tState--; - break; - case 2: - if (AllMonsFainted()) - { - // Battle facilities have their own white out script to handle the challenge loss - if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge()) - gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT; - else - gSpecialVar_Result = FLDPSN_WHITEOUT; + FaintFromFieldPoison(tPartyIdx); + ShowFieldMessage(gText_PkmnFainted_FldPsn); + tState++; + return; } + } + tState = 2; // Finished checking party + break; + case 1: + // Wait for "{mon} fainted" message, then return to party loop + if (IsFieldMessageBoxHidden()) + tState--; + break; + case 2: + if (AllMonsFainted()) + { + // Battle facilities have their own white out script to handle the challenge loss + if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge()) + gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT; else - { - gSpecialVar_Result = FLDPSN_NO_WHITEOUT; - } - ScriptContext_Enable(); - DestroyTask(taskId); - break; + gSpecialVar_Result = FLDPSN_WHITEOUT; + } + else + { + gSpecialVar_Result = FLDPSN_NO_WHITEOUT; + } + ScriptContext_Enable(); + DestroyTask(taskId); + break; } } From 940f9f17260c2c08f8e4808e663126f6bf5878f5 Mon Sep 17 00:00:00 2001 From: crater-git Date: Wed, 24 Aug 2022 16:10:32 -0400 Subject: [PATCH 092/271] Moved branch defs to config.h, now only for compat --- include/config.h | 10 ++++++++++ include/constants/battle_config.h | 2 -- include/constants/expansion_branches.h | 12 ------------ include/constants/item_config.h | 2 -- include/constants/pokemon_config.h | 2 -- include/global.h | 1 - 6 files changed, 10 insertions(+), 19 deletions(-) delete mode 100644 include/constants/expansion_branches.h diff --git a/include/config.h b/include/config.h index 5f2fa4d2cc..ab11a90adb 100644 --- a/include/config.h +++ b/include/config.h @@ -36,4 +36,14 @@ #endif #endif +// Compatibility definition for other projects to detect pokeemerald-expansion +#define RHH_EXPANSION + +// Legacy branch-based defines included for backwards compatibility +#ifdef RHH_EXPANSION + #define BATTLE_ENGINE + #define POKEMON_EXPANSION + #define ITEM_EXPANSION +#endif + #endif // GUARD_CONFIG_H diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 5e9984c550..fce87bd43d 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -1,8 +1,6 @@ #ifndef GUARD_CONSTANTS_BATTLE_CONFIG_H #define GUARD_CONSTANTS_BATTLE_CONFIG_H -#include "constants/expansion_branches.h" - #ifndef GEN_3 #define GEN_3 0 #define GEN_4 1 diff --git a/include/constants/expansion_branches.h b/include/constants/expansion_branches.h deleted file mode 100644 index 48af6bf1b9..0000000000 --- a/include/constants/expansion_branches.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef GUARD_CONSTANTS_EXPANSION_BRANCHES_H -#define GUARD_CONSTANTS_EXPANSION_BRANCHES_H - -// Branch defines: Used by other branches to detect each other. -// Each define must be here for each of RHH's branch you have pulled. -// e.g. If you have both the battle_engine and pokemon_expansion branch, -// then both BATTLE_ENGINE and POKEMON_EXPANSION must be defined here. -#define BATTLE_ENGINE -#define POKEMON_EXPANSION -#define ITEM_EXPANSION - -#endif diff --git a/include/constants/item_config.h b/include/constants/item_config.h index 01b5fa3587..70b4440c84 100644 --- a/include/constants/item_config.h +++ b/include/constants/item_config.h @@ -1,8 +1,6 @@ #ifndef GUARD_CONSTANTS_ITEM_CONFIG_H #define GUARD_CONSTANTS_ITEM_CONFIG_H -#include "constants/expansion_branches.h" - #ifndef GEN_3 #define GEN_3 0 #define GEN_4 1 diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h index 077c02e332..6540b6508b 100644 --- a/include/constants/pokemon_config.h +++ b/include/constants/pokemon_config.h @@ -1,8 +1,6 @@ #ifndef GUARD_CONSTANTS_POKEMON_CONFIG_H #define GUARD_CONSTANTS_POKEMON_CONFIG_H -#include "constants/expansion_branches.h" - #ifndef GEN_3 #define GEN_3 0 #define GEN_4 1 diff --git a/include/global.h b/include/global.h index 25b43db206..b27c1e91c0 100644 --- a/include/global.h +++ b/include/global.h @@ -15,7 +15,6 @@ #include "constants/pokemon.h" #include "constants/easy_chat.h" #include "constants/trainer_hill.h" -#include "constants/expansion_branches.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); From 3a6552929335551a214df051eb3a30434aefb22b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 24 Aug 2022 17:12:59 -0300 Subject: [PATCH 093/271] Fixed KeyInterCB_DeferToEventScript comment --- src/overworld.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/overworld.c b/src/overworld.c index cb0d1f06e1..4c4dd5217d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -2520,8 +2520,7 @@ static u16 KeyInterCB_Idle(u32 key) return LINK_KEY_CODE_EMPTY; } -// Ignore the player's inputs as long as there is an event script -// in ScriptContext2. +// Ignore the player's inputs as long as there is an event script being executed. static u16 KeyInterCB_DeferToEventScript(u32 key) { u16 retVal; From 015961c00ac46551408e8c43b6ce14a2b2ecb36e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 24 Aug 2022 17:19:24 -0300 Subject: [PATCH 094/271] Re-aligned READ_PTR_FROM_TASK's 2nd line EoL --- src/pokemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index 8786405c8b..4b22947cb0 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6675,7 +6675,7 @@ const u8 *GetTrainerPartnerName(void) } #define READ_PTR_FROM_TASK(taskId, dataId) \ - (void *)( \ + (void *)( \ ((u16)(gTasks[taskId].data[dataId]) | \ ((u16)(gTasks[taskId].data[dataId + 1]) << 16))) From 7aa55f2753cca1971c789569a4a1fe883ffddfcf Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 23:00:21 +0200 Subject: [PATCH 095/271] better interface 1 player mon in double --- include/battle_interface.h | 1 + src/battle_anim_mons.c | 11 +++++----- src/battle_gfx_sfx_util.c | 7 ++++++- src/battle_interface.c | 43 ++++++++++++++++++++++---------------- src/party_menu.c | 2 +- 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/include/battle_interface.h b/include/battle_interface.h index 29cb45b0fe..90184d75a9 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -72,6 +72,7 @@ enum HEALTHBOX_SAFARI_BALLS_TEXT }; +u32 WhichBattleCoords(u32 battlerId); u8 GetMegaIndicatorSpriteId(u32 healthboxSpriteId); u8 CreateBattlerHealthboxSprites(u8 battler); u8 CreateSafariPlayerHealthboxSprites(void); diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 21a3ed9027..b0a073e465 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "battle_anim.h" +#include "battle_interface.h" #include "bg.h" #include "contest.h" #include "data.h" @@ -134,10 +135,10 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) { case BATTLER_COORD_X: case BATTLER_COORD_X_2: - retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].x; + retVal = sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].x; break; case BATTLER_COORD_Y: - retVal = sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + retVal = sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].y; break; case BATTLER_COORD_Y_PIC_OFFSET: case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT: @@ -278,7 +279,7 @@ u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) offset = GetBattlerYDelta(battlerId, species); offset -= GetBattlerElevation(battlerId, species); } - y = offset + sBattlerCoords[IS_DOUBLE_BATTLE()][GetBattlerPosition(battlerId)].y; + y = offset + sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].y; if (a3) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) @@ -493,7 +494,7 @@ static void TranslateSpriteInWavePattern(struct Sprite *sprite) sprite->y2 = Cos(sprite->sCirclePosY, sprite->sAmplitude); sprite->sCirclePosX += sprite->sCircleSpeedX; sprite->sCirclePosY += sprite->sCircleSpeedY; - + if (sprite->sCirclePosX >= 0x100) sprite->sCirclePosX -= 0x100; else if (sprite->sCirclePosX < 0) @@ -2445,7 +2446,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) dest = (task->tPaletteNum + 16) * 16; src = (gSprites[task->tBattlerSpriteId].oam.paletteNum + 0x10) * 0x10; - + // Set trace's priority based on battler's subpriority task->tPriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (task->tPriority == 20 || task->tPriority == 40) diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8cd23098f2..747d087374 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -715,7 +715,12 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state) else { if (state == 2) - LoadCompressedSpriteSheet(&sSpriteSheets_DoublesPlayerHealthbox[0]); + { + if (WhichBattleCoords(0)) + LoadCompressedSpriteSheet(&sSpriteSheets_DoublesPlayerHealthbox[0]); + else + LoadCompressedSpriteSheet(&sSpriteSheet_SinglesPlayerHealthbox); + } else if (state == 3) LoadCompressedSpriteSheet(&sSpriteSheets_DoublesPlayerHealthbox[1]); else if (state == 4) diff --git a/src/battle_interface.c b/src/battle_interface.c index a504cf1c0e..cf935fdc6a 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -764,6 +764,15 @@ static void InitLastUsedBallAssets(void) gBattleStruct->ballSpriteIds[1] = MAX_SPRITES; } +// This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout. +u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles +{ + if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT && gPlayerPartyCount == 1) + return 0; + else + return IsDoubleBattle(); +} + u8 CreateBattlerHealthboxSprites(u8 battlerId) { s16 data6 = 0; @@ -771,7 +780,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId) u8 healthbarSpriteId, megaIndicatorSpriteId; struct Sprite *healthBarSpritePtr; - if (!IsDoubleBattle()) + if (WhichBattleCoords(battlerId) == 0) // Singles { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { @@ -1035,7 +1044,7 @@ void GetBattlerHealthboxCoords(u8 battler, s16 *x, s16 *y) { *x = 0, *y = 0; - if (!IsDoubleBattle()) + if (!WhichBattleCoords(battler)) { if (GetBattlerSide(battler) != B_SIDE_PLAYER) *x = 44, *y = 30; @@ -1102,7 +1111,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) if (GetBattlerSide(battler) == B_SIDE_PLAYER) { objVram = (void *)(OBJ_VRAM0); - if (!IsDoubleBattle()) + if (!WhichBattleCoords(battler)) objVram += spriteTileNum + 0x820; else objVram += spriteTileNum + 0x420; @@ -1118,12 +1127,13 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) { - u32 windowId, spriteTileNum; + u32 windowId, spriteTileNum, battler; u8 *windowTileData; u8 text[32]; void *objVram; - if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle()) + battler = gSprites[healthboxSpriteId].hMain_Battler; + if (GetBattlerSide(battler) == B_SIDE_PLAYER && !WhichBattleCoords(battler)) { spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; if (maxOrCurrent != HP_CURRENT) // singles, max @@ -1152,10 +1162,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) } else { - u8 battler; - memcpy(text, sEmptyWhiteText_GrayHighlight, sizeof(sEmptyWhiteText_GrayHighlight)); - battler = gSprites[healthboxSpriteId].hMain_Battler; if (IsDoubleBattle() == TRUE) { UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent); @@ -1362,7 +1369,7 @@ void SwapHpBarsWithHpText(void) { if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy && GetBattlerSide(i) != B_SIDE_OPPONENT - && (IsDoubleBattle() || GetBattlerSide(i) != B_SIDE_PLAYER)) + && (WhichBattleCoords(i) || GetBattlerSide(i) != B_SIDE_PLAYER)) { bool8 noBars; @@ -1370,7 +1377,7 @@ void SwapHpBarsWithHpText(void) noBars = gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars; if (GetBattlerSide(i) == B_SIDE_PLAYER) { - if (!IsDoubleBattle()) + if (!WhichBattleCoords(i)) continue; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) continue; @@ -1666,7 +1673,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { isOpponent = TRUE; - if (!skipPlayer || !IsDoubleBattle()) + if (!skipPlayer || !WhichBattleCoords(battlerId)) bar_X = 104, bar_Y = 40; else bar_X = 104, bar_Y = 16; @@ -2152,7 +2159,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) { TextIntoHealthboxObject((void *)(OBJ_VRAM0 + 0x40 + spriteTileNum), windowTileData, 6); ptr = (void *)(OBJ_VRAM0); - if (!IsDoubleBattle()) + if (!WhichBattleCoords(gSprites[healthboxSpriteId].data[6])) ptr += spriteTileNum + 0x800; else ptr += spriteTileNum + 0x400; @@ -2203,7 +2210,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS); - if (!IsDoubleBattle()) + if (!WhichBattleCoords(battlerId)) tileNumAdder = 0x1A; else tileNumAdder = 0x12; @@ -2259,7 +2266,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId) FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2); CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void *)(OBJ_PLTT + pltAdder * 2), 2); CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96); - if (IsDoubleBattle() == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) + if (WhichBattleCoords(battlerId) == 1 || GetBattlerSide(battlerId) == B_SIDE_OPPONENT) { if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) { @@ -2382,7 +2389,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0); MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0); } - isDoubles = IsDoubleBattle(); + isDoubles = WhichBattleCoords(battlerId); if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL)) { u16 species; @@ -3196,7 +3203,7 @@ void UpdateAbilityPopup(u8 battlerId) u8 spriteId1 = gBattleStruct->abilityPopUpSpriteIds[battlerId][0]; u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battlerId][1]; u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battlerId].ability; - + ClearAbilityName(spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); @@ -3382,7 +3389,7 @@ static void DestroyLastUsedBallGfx(struct Sprite *sprite) } static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_BALL_WIN_X_0) @@ -3399,7 +3406,7 @@ static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) } static void SpriteCB_LastUsedBall(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_USED_BALL_X_0) diff --git a/src/party_menu.c b/src/party_menu.c index db20e0932c..b2e6ea68d2 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6115,7 +6115,7 @@ void ChooseMonForWirelessMinigame(void) static u8 GetPartyLayoutFromBattleType(void) { - if (IsDoubleBattle() == FALSE) + if (!IsDoubleBattle() || gPlayerPartyCount == 1) // Draw the single layout in a double battle where the player has only one pokemon. return PARTY_LAYOUT_SINGLE; if (IsMultiBattle() == TRUE) return PARTY_LAYOUT_MULTI; From 91b76e2e4f6468b2d151a9c8524ae5277d121cb7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 23:39:34 +0200 Subject: [PATCH 096/271] quash pr clean up --- include/battle.h | 4 +- src/battle_main.c | 23 ++++--- src/battle_script_commands.c | 118 +++++++++++++++++------------------ 3 files changed, 72 insertions(+), 73 deletions(-) diff --git a/include/battle.h b/include/battle.h index 6472df3cb9..d2fc93f657 100644 --- a/include/battle.h +++ b/include/battle.h @@ -147,9 +147,9 @@ struct ProtectStruct u16 pranksterElevated:1; u16 quickDraw:1; u16 beakBlastCharge:1; + u16 quash:1; u32 physicalDmg; u32 specialDmg; - u8 quash : 1; u8 physicalBattlerId; u8 specialBattlerId; }; @@ -670,7 +670,7 @@ struct BattleStruct #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + ((stage) << 3) + (goesDown << 7)) #define SET_STATCHANGER2(dst, statId, stage, goesDown)(dst = (statId) + ((stage) << 3) + (goesDown << 7)) -// NOTE: The members of this struct have hard-coded offsets +// NOTE: The members of this struct have hard-coded offsets // in include/constants/battle_script_commands.h struct BattleScripting { diff --git a/src/battle_main.c b/src/battle_main.c index 4566dce4b6..b84854ffa2 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -2981,10 +2981,10 @@ static void BattleStartClearSetData(void) gBattleStruct->arenaLostOpponentMons = 0; gBattleStruct->mega.triggerSpriteId = 0xFF; - + gBattleStruct->stickyWebUser = 0xFF; gBattleStruct->appearedInBattle = 0; - + for (i = 0; i < PARTY_SIZE; i++) { gBattleStruct->usedHeldItems[i][0] = 0; @@ -3084,7 +3084,7 @@ void SwitchInClearSetData(void) gBattleStruct->lastTakenMoveFrom[gActiveBattler][3] = 0; gBattleStruct->lastMoveFailed &= ~(gBitTable[gActiveBattler]); gBattleStruct->palaceFlags &= ~(gBitTable[gActiveBattler]); - + if (gActiveBattler == gBattleStruct->stickyWebUser) gBattleStruct->stickyWebUser = 0xFF; // Switched into sticky web user slot so reset it @@ -3100,7 +3100,7 @@ void SwitchInClearSetData(void) gBattleResources->flags->flags[gActiveBattler] = 0; gCurrentMove = MOVE_NONE; gBattleStruct->arenaTurnCounter = 0xFF; - + // Reset damage to prevent things like red card activating if the switched-in mon is holding it gSpecialStatuses[gActiveBattler].physicalDmg = 0; gSpecialStatuses[gActiveBattler].specialDmg = 0; @@ -3184,7 +3184,7 @@ void FaintClearSetData(void) gBattleStruct->lastTakenMoveFrom[gActiveBattler][3] = 0; gBattleStruct->palaceFlags &= ~(gBitTable[gActiveBattler]); - + if (gActiveBattler == gBattleStruct->stickyWebUser) gBattleStruct->stickyWebUser = 0xFF; // User of sticky web fainted, so reset the stored battler ID @@ -3696,7 +3696,7 @@ static void TryDoEventsBeforeFirstTurn(void) gMoveResultFlags = 0; gRandomTurnNumber = Random(); - + GetAiLogicData(); // get assumed abilities, hold effects, etc of all battlers if (gBattleTypeFlags & BATTLE_TYPE_ARENA) @@ -3904,7 +3904,7 @@ static void HandleTurnActionSelectionState(void) case STATE_TURN_START_RECORD: // Recorded battle related action on start of every turn. RecordedBattle_CopyBattlerMoves(); gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN; - + // Do AI score computations here so we can use them in AI_TrySwitchOrUseItem if ((gBattleTypeFlags & BATTLE_TYPE_HAS_AI || IsWildMonSmart()) && IsBattlerAIControlled(gActiveBattler)) { gBattleStruct->aiMoveOrAction[gActiveBattler] = ComputeBattleAiScores(gActiveBattler); @@ -4515,10 +4515,9 @@ s8 GetMovePriority(u32 battlerId, u16 move) break; } } - if (gProtectStructs[battlerId].quash == 1) - { + + if (gProtectStructs[battlerId].quash) priority = -8; - } return priority; } @@ -4568,7 +4567,7 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) // QUICK CLAW / CUSTAP - always first // LAGGING TAIL - always last // STALL - always last - + if (gProtectStructs[battler1].quickDraw && !gProtectStructs[battler2].quickDraw) strikesFirst = 0; else if (!gProtectStructs[battler1].quickDraw && gProtectStructs[battler2].quickDraw) @@ -4740,7 +4739,7 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[gActiveBattler].spikyShielded = FALSE; gProtectStructs[gActiveBattler].kingsShielded = FALSE; gProtectStructs[gActiveBattler].banefulBunkered = FALSE; - gProtectStructs[gBattlerTarget].quash = FALSE; + gProtectStructs[gBattlerTarget].quash = FALSE; } else { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f551c39871..f71bbb1c33 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1422,7 +1422,7 @@ static void Cmd_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; - if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_ALLOW_NO_PP | HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) { @@ -1622,7 +1622,7 @@ static bool32 AccuracyCalcHelper(u16 move) RecordAbilityBattle(gBattlerTarget, ABILITY_NO_GUARD); return TRUE; } - + if (gBattleStruct->zmove.active && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { JumpIfMoveFailed(7, move); @@ -1765,7 +1765,7 @@ static void Cmd_accuracycheck(void) gMoveResultFlags |= MOVE_RESULT_MISSED; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_BLUNDER_POLICY) gBattleStruct->blunderPolicy = TRUE; // Only activates from missing through acc/evasion checks - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_ATK; @@ -2596,14 +2596,14 @@ static void CheckSetUnburden(u8 battlerId) // battlerStealer steals the item of battlerItem void StealTargetItem(u8 battlerStealer, u8 battlerItem) -{ +{ gLastUsedItem = gBattleMons[battlerItem].item; gBattleMons[battlerItem].item = 0; - + RecordItemEffectBattle(battlerItem, 0); RecordItemEffectBattle(battlerStealer, ItemId_GetHoldEffect(gLastUsedItem)); gBattleMons[battlerStealer].item = gLastUsedItem; - + CheckSetUnburden(battlerItem); gBattleResources->flags->flags[battlerStealer] &= ~RESOURCE_FLAG_UNBURDEN; @@ -2614,9 +2614,9 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem) gActiveBattler = battlerItem; BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[battlerItem].item); // remove target item MarkBattlerForControllerExec(battlerItem); - + gBattleStruct->choicedMove[battlerItem] = 0; - + TrySaveExchangedItem(battlerItem, gLastUsedItem); } @@ -2640,7 +2640,7 @@ void SetMoveEffect(bool32 primary, u32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u16 battlerAbility; - + switch (gBattleScripting.moveEffect) // Set move effects which happen later on { case MOVE_EFFECT_KNOCK_OFF: @@ -2749,7 +2749,7 @@ void SetMoveEffect(bool32 primary, u32 certain) case STATUS1_BURN: if (gCurrentMove == MOVE_BURNING_JEALOUSY && !gProtectStructs[gEffectBattler].statRaised) break; - + if ((battlerAbility == ABILITY_WATER_VEIL || battlerAbility == ABILITY_WATER_BUBBLE) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { @@ -2944,7 +2944,7 @@ void SetMoveEffect(bool32 primary, u32 certain) else { gBattleMons[gEffectBattler].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); // 2-5 turns - + // If the confusion is activating due to being released from Sky Drop, go to "confused due to fatigue" script. // Otherwise, do normal confusion script. if(gCurrentMove == MOVE_SKY_DROP) @@ -2956,7 +2956,7 @@ void SetMoveEffect(bool32 primary, u32 certain) else { BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; } } break; @@ -3091,7 +3091,7 @@ void SetMoveEffect(bool32 primary, u32 certain) flags = affectsUser; if (mirrorArmorReflected && !affectsUser) flags |= STAT_CHANGE_ALLOW_PTR; - + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_1 + 1, flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1)) @@ -3482,14 +3482,14 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleMons[gEffectBattler].item = 0; CheckSetUnburden(gEffectBattler); gActiveBattler = gEffectBattler; - + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item); MarkBattlerForControllerExec(gActiveBattler); - + // attacker temporarily gains their item gBattleStruct->changedItems[gBattlerAttacker] = gBattleMons[gBattlerAttacker].item; gBattleMons[gBattlerAttacker].item = gLastUsedItem; - + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite; } @@ -5257,13 +5257,13 @@ static void Cmd_moveend(void) if (gBattleStruct->skyDropTargets[targetId] == i) break; } - + // Set gBattlerAttacker to the battler id of the target gBattlerAttacker = targetId; - + // Jump to "confused due to fatigue" script gBattlescriptCurrInstr = BattleScript_ThrashConfuses; - + // Clear skyDropTargets data gBattleStruct->skyDropTargets[i] = 0xFF; gBattleStruct->skyDropTargets[targetId] = 0xFF; @@ -5380,7 +5380,7 @@ static void Cmd_moveend(void) if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) gProtectStructs[gBattlerAttacker].targetAffected = TRUE; - + if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !gProtectStructs[gBattlerAttacker].chargingTurn @@ -5482,7 +5482,7 @@ static void Cmd_moveend(void) && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RED_CARD && (gSpecialStatuses[battler].physicalDmg != 0 || gSpecialStatuses[battler].specialDmg != 0) && CanBattlerSwitch(gBattlerAttacker)) - { + { gLastUsedItem = gBattleMons[battler].item; gActiveBattler = gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card gEffectBattler = gBattlerAttacker; @@ -5554,7 +5554,7 @@ static void Cmd_moveend(void) // Battle scripting is super brittle so we shall do the item exchange now (if possible) if (GetBattlerAbility(gBattlerAttacker) != ABILITY_STICKY_HOLD) StealTargetItem(gBattlerTarget, gBattlerAttacker); // Target takes attacker's item - + gEffectBattler = gBattlerAttacker; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_Pickpocket; // Includes sticky hold check to print separate string @@ -7109,7 +7109,7 @@ static void Cmd_removeitem(void) // Popped Air Balloon cannot be restored by any means. if (GetBattlerHoldEffect(gActiveBattler, TRUE) != HOLD_EFFECT_AIR_BALLOON) gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gActiveBattler]][GetBattlerSide(gActiveBattler)] = itemId; // Remember if switched out - + gBattleMons[gActiveBattler].item = ITEM_NONE; CheckSetUnburden(gActiveBattler); @@ -8103,7 +8103,7 @@ static void Cmd_various(void) break; case VARIOUS_ARENA_JUDGMENT_WINDOW: i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]); - + // BattleArena_ShowJudgmentWindow's last state was an intermediate step. // Return without advancing the current instruction so that it will be called again. if (i == ARENA_RESULT_RUNNING) @@ -8454,13 +8454,13 @@ static void Cmd_various(void) } return; case VARIOUS_TRY_QUASH: - if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) // is true if foe is faster, has a bigger priority, or switches + if (GetBattlerTurnOrderNum(gBattlerAttacker) > GetBattlerTurnOrderNum(gBattlerTarget)) // It's true if foe is faster, has a bigger priority, or switches { - gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); // This replaces the current battlescript with the "fail" script, if the condition - } // we checked is true + gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); // This replaces the current battlescript with the "fail" script. + } else // If the condition is not true, it means we are faster than the foe, so we can set the quash bit { - gProtectStructs[gBattlerTarget].quash = 1; + gProtectStructs[gBattlerTarget].quash = TRUE; gBattlescriptCurrInstr += 7; // and then we proceed with the rest of our battlescript } return; @@ -8554,7 +8554,7 @@ static void Cmd_various(void) } return; case VARIOUS_TRY_SOAK: - if (gBattleMons[gBattlerTarget].type1 == gBattleMoves[gCurrentMove].type + if (gBattleMons[gBattlerTarget].type1 == gBattleMoves[gCurrentMove].type && gBattleMons[gBattlerTarget].type2 == gBattleMoves[gCurrentMove].type) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); @@ -9082,7 +9082,7 @@ static void Cmd_various(void) case VARIOUS_MAKE_INVISIBLE: if (gBattleControllerExecFlags) break; - + BtlController_EmitSpriteInvisibility(BUFFER_A, TRUE); MarkBattlerForControllerExec(gActiveBattler); break; @@ -9123,10 +9123,10 @@ static void Cmd_various(void) BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gActiveBattler].pp[i]), &gBattleMons[gActiveBattler].pp[i]); MarkBattlerForControllerExec(gActiveBattler); } - + if (gBattleMons[gActiveBattler].pp[i] == 0 && gBattleStruct->skyDropTargets[gActiveBattler] == 0xFF) CancelMultiTurnMoves(gActiveBattler); - + gBattlescriptCurrInstr += 7; // continue } else @@ -9200,19 +9200,19 @@ static void Cmd_various(void) return; case VARIOUS_SET_SKY_DROP: gStatuses3[gBattlerTarget] |= (STATUS3_SKY_DROPPED | STATUS3_ON_AIR); - /* skyDropTargets holds the information of who is in a particular instance of Sky Drop. + /* skyDropTargets holds the information of who is in a particular instance of Sky Drop. This is needed in the case that multiple Pokemon use Sky Drop in the same turn or if the target of a Sky Drop faints while in the air.*/ gBattleStruct->skyDropTargets[gBattlerAttacker] = gBattlerTarget; gBattleStruct->skyDropTargets[gBattlerTarget] = gBattlerAttacker; - + // End any multiturn effects caused by the target except STATUS2_LOCK_CONFUSE gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_MULTIPLETURNS); gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_UPROAR); gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_BIDE); gDisableStructs[gBattlerTarget].rolloutTimer = 0; gDisableStructs[gBattlerTarget].furyCutterCounter = 0; - + // End any Follow Me/Rage Powder effects caused by the target if (gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTimer != 0 && gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTarget == gBattlerTarget) gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTimer = 0; @@ -9225,12 +9225,12 @@ static void Cmd_various(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else { - gBattleStruct->skyDropTargets[gBattlerAttacker] = 0xFF; + gBattleStruct->skyDropTargets[gBattlerAttacker] = 0xFF; gBattleStruct->skyDropTargets[gBattlerTarget] = 0xFF; gStatuses3[gBattlerTarget] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); gBattlescriptCurrInstr += 7; } - + // Confuse target if they were in the middle of Petal Dance/Outrage/Thrash when targeted. if (gBattleMons[gBattlerTarget].status2 & STATUS2_LOCK_CONFUSE) gBattleScripting.moveEffect = (MOVE_EFFECT_CONFUSION | MOVE_EFFECT_CERTAIN); @@ -9244,7 +9244,7 @@ static void Cmd_various(void) // Clear skyDropTargets data gBattleStruct->skyDropTargets[gBattleStruct->skyDropTargets[gEffectBattler]] = 0xFF; gBattleStruct->skyDropTargets[gEffectBattler] = 0xFF; - + // If the target was in the middle of Outrage/Thrash/etc. when targeted by Sky Drop, confuse them on release and do proper animation if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE && CanBeConfused(gEffectBattler)) { @@ -9317,7 +9317,7 @@ static void Cmd_various(void) count++; } } - + if (count == 0) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); // Rototiller fails else @@ -9354,19 +9354,19 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 4; return; } - + gBattleScripting.battler = gEffectBattler = gBattlerTarget = gActiveBattler; // Cover all berry effect battlerId cases. e.g. ChangeStatBuffs uses target ID // Do move end berry effects for just a single battler, instead of looping through all battlers if (ItemBattleEffects(ITEMEFFECT_BATTLER_MOVE_END, gActiveBattler, FALSE)) return; - + if (gBattlescriptCurrInstr[3]) { gBattleMons[gActiveBattler].item = gBattleStruct->changedItems[gActiveBattler]; gBattleStruct->changedItems[gActiveBattler] = ITEM_NONE; gBattleResources->flags->flags[gActiveBattler] &= ~RESOURCE_FLAG_UNBURDEN; } - + gBattlescriptCurrInstr += 4; return; case VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL: @@ -9538,7 +9538,7 @@ static void Cmd_various(void) return; case VARIOUS_CAN_TAR_SHOT_WORK: // Tar Shot will fail if it's already been used on the target and its speed can't be lowered further - if (!gDisableStructs[gActiveBattler].tarShot + if (!gDisableStructs[gActiveBattler].tarShot && CompareStat(gActiveBattler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN)) gBattlescriptCurrInstr += 7; else @@ -9636,7 +9636,7 @@ static void Cmd_various(void) case VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM: gBattleMons[gActiveBattler].item = gLastUsedItem; break; - case VARIOUS_SET_BEAK_BLAST: + case VARIOUS_SET_BEAK_BLAST: gProtectStructs[gBattlerAttacker].beakBlastCharge = TRUE; break; case VARIOUS_SWAP_SIDE_STATUSES: @@ -10254,7 +10254,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gActiveBattler = gBattlerAttacker; else gActiveBattler = gBattlerTarget; - + activeBattlerAbility = GetBattlerAbility(gActiveBattler); gSpecialStatuses[gActiveBattler].changedStatsBattlerId = gBattlerAttacker; @@ -10418,7 +10418,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattleTextBuff2[index++] = STRINGID_STATFELL; gBattleTextBuff2[index++] = STRINGID_STATFELL >> 8; gBattleTextBuff2[index] = B_BUFF_EOS; - + if (gBattleMons[gActiveBattler].statStages[statId] == MIN_STAT_STAGE) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_WONT_DECREASE; @@ -10605,9 +10605,9 @@ static void Cmd_forcerandomswitch(void) struct Pokemon *party = NULL; s32 validMons = 0; s32 minNeeded; - + bool32 redCardForcedSwitch = FALSE; - + // Red card checks against wild pokemon. If we have reached here, the player has a mon to switch into // Red card swaps attacker with target to get the animation correct, so here we check attacker which is really the target. Thanks GF... if (gBattleScripting.switchCase == B_SWITCH_RED_CARD @@ -10650,7 +10650,7 @@ static void Cmd_forcerandomswitch(void) && GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) || redCardForcedSwitch ) - { + { if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) party = gPlayerParty; else @@ -12175,7 +12175,7 @@ static void Cmd_maxattackhalvehp(void) if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) halfHp = 1; - + // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < MAX_STAT_STAGE && gBattleMons[gBattlerAttacker].hp > halfHp) @@ -12671,7 +12671,7 @@ static void Cmd_tryswapitems(void) gBattleMons[gBattlerAttacker].item = ITEM_NONE; gBattleMons[gBattlerTarget].item = oldItemAtk; - + RecordItemEffectBattle(gBattlerAttacker, 0); RecordItemEffectBattle(gBattlerTarget, ItemId_GetHoldEffect(oldItemAtk)); @@ -12690,7 +12690,7 @@ static void Cmd_tryswapitems(void) PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk) PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk) - + if (!(sideAttacker == sideTarget && IsPartnerMonFromSameTrainer(gBattlerAttacker))) { // if targeting your own side and you aren't in a multi battle, don't save items as stolen @@ -12767,7 +12767,7 @@ static void Cmd_trywish(void) #else gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); #endif - + gBattleMoveDamage *= -1; if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); @@ -13163,7 +13163,7 @@ u16 GetSecretPowerMoveEffect(void) } } else - { + { switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -13386,7 +13386,7 @@ static void Cmd_settypebasedhalvers(void) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC; worked = TRUE; } - #else + #else if (!(gStatuses4[gBattlerAttacker] & STATUS4_MUD_SPORT)) { gStatuses4[gBattlerAttacker] |= STATUS4_MUD_SPORT; @@ -13561,20 +13561,20 @@ static void Cmd_removelightscreenreflect(void) { u8 side; bool32 failed; - + #if B_BRICK_BREAK >= GEN_4 // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally side = GetBattlerSide(gBattlerTarget); #else side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; #endif - + #if B_BRICK_BREAK >= GEN_5 failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); #else failed = FALSE; #endif - + if (!failed && (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer @@ -13633,7 +13633,7 @@ static void Cmd_handleballthrow(void) { u32 odds, i; u8 catchRate; - + gLastThrownBall = gLastUsedItem; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) catchRate = gBattleStruct->safariCatchFactor * 1275 / 100; From 4f790a6ec025d5a5aeec820fe5dc744aa5cdac2a Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 24 Aug 2022 23:47:42 +0200 Subject: [PATCH 097/271] spaces --- src/battle_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index b84854ffa2..6320770eb8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4739,7 +4739,7 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[gActiveBattler].spikyShielded = FALSE; gProtectStructs[gActiveBattler].kingsShielded = FALSE; gProtectStructs[gActiveBattler].banefulBunkered = FALSE; - gProtectStructs[gBattlerTarget].quash = FALSE; + gProtectStructs[gBattlerTarget].quash = FALSE; } else { From 1d512ed57d8cd198a09e113a7192db6abdef9c2a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 1 Aug 2022 07:39:51 -0300 Subject: [PATCH 098/271] Updated Serene Grace checks in AI_CheckViability --- src/battle_ai_main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 732dea7807..59faecd182 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2974,6 +2974,8 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) u16 predictedMove = AI_DATA->predictedMoves[battlerDef]; bool32 isDoubleBattle = IsValidDoubleBattle(battlerAtk); u32 i; + // We only check for moves that have a 20% chance or more for their secondary effect to happen because moves with a smaller chance are rather worthless. We don't want the AI to use those. + bool32 sereneGraceBoost = (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && (gBattleMoves[move].secondaryEffectChance >= 20 && gBattleMoves[move].secondaryEffectChance < 100)); // Targeting partner, check benefits of doing that instead if (IsTargetingPartner(battlerAtk, battlerDef)) @@ -3432,7 +3434,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score += 2; break; case EFFECT_CONFUSE_HIT: - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE) + if (sereneGraceBoost) score++; //fallthrough case EFFECT_CONFUSE: @@ -3451,7 +3453,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) case EFFECT_SPECIAL_DEFENSE_DOWN_HIT: case EFFECT_ACCURACY_DOWN_HIT: case EFFECT_EVASION_DOWN_HIT: - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY) + if (sereneGraceBoost && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY) score += 2; break; case EFFECT_SPEED_DOWN_HIT: @@ -3459,12 +3461,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score -= 2; else if (!AI_RandLessThan(70)) score++; - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY) - score++; if (ShouldLowerSpeed(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef])) { - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY) - score += 4; + if (sereneGraceBoost && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY) + score += 5; else score += 2; } @@ -3595,7 +3595,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) score++; break; case EFFECT_SPEED_UP_HIT: - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY && !WillAIStrikeFirst()) + if (sereneGraceBoost && AI_DATA->abilities[battlerDef] != ABILITY_CONTRARY && !WillAIStrikeFirst()) score += 3; break; case EFFECT_DESTINY_BOND: @@ -3839,7 +3839,7 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) } break; case EFFECT_ATTACK_UP_HIT: - if (AI_DATA->abilities[battlerAtk] == ABILITY_SERENE_GRACE) + if (sereneGraceBoost) IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); break; case EFFECT_FELL_STINGER: From 6012731f274427e9f615dca0d738812d7b14cb56 Mon Sep 17 00:00:00 2001 From: crater-git Date: Wed, 24 Aug 2022 19:31:55 -0400 Subject: [PATCH 099/271] Removed redundant ifdef --- include/config.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/include/config.h b/include/config.h index ab11a90adb..3f67d043c7 100644 --- a/include/config.h +++ b/include/config.h @@ -40,10 +40,8 @@ #define RHH_EXPANSION // Legacy branch-based defines included for backwards compatibility -#ifdef RHH_EXPANSION - #define BATTLE_ENGINE - #define POKEMON_EXPANSION - #define ITEM_EXPANSION -#endif +#define BATTLE_ENGINE +#define POKEMON_EXPANSION +#define ITEM_EXPANSION #endif // GUARD_CONFIG_H From 7b7ba93d45e9f513e9715acb8828e40383cf8ada Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 24 Aug 2022 20:35:13 -0300 Subject: [PATCH 100/271] Fixed P_UPDATED_ABILITIES's comment --- include/constants/pokemon_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h index 077c02e332..9e177ef901 100644 --- a/include/constants/pokemon_config.h +++ b/include/constants/pokemon_config.h @@ -14,7 +14,7 @@ #define P_UPDATED_TYPES GEN_8 // Since Gen 6, several Pokémon were changed to be partially or fully Fairy type. #define P_UPDATED_STATS GEN_8 // Since Gen 6, Pokémon stats are updated with each passing generation. -#define P_UPDATED_ABILITIES GEN_8 // Since Gen 6, certain Pokémon have their abilities changed. Requires BATTLE_ENGINE for Gen4+ abilities. +#define P_UPDATED_ABILITIES GEN_8 // Since Gen 6, certain Pokémon have their abilities changed. #define P_UPDATED_EGG_GROUPS GEN_8 // Since Gen 8, certain Pokémon have gained new egg groups. #define P_SHEDINJA_BALL GEN_8 // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. #define P_LEGENDARY_PERFECT_IVS GEN_8 // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. From d719510d3219b58008d07f14e4bf683df1bfbf0f Mon Sep 17 00:00:00 2001 From: gruxor <95389790+gruxor@users.noreply.github.com> Date: Wed, 24 Aug 2022 22:31:52 -0400 Subject: [PATCH 101/271] Apply suggestions from code review Co-authored-by: Eduardo Quezada D'Ottone --- src/daycare.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/daycare.c b/src/daycare.c index 11c89b8cb0..1f95706e75 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -695,7 +695,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru { for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { - u16 moveId = ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j); + u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j); if (sHatchedEggFatherMoves[i] == moveId && CanMonLearnTMHM(egg, moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) From 5659f6178fa557f45d8d006f8ef566cc92a33364 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Thu, 25 Aug 2022 00:03:43 -0400 Subject: [PATCH 102/271] Optimized x adjustment --- src/battle_interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index 720bff809d..e94e9c7d1a 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2928,8 +2928,8 @@ static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTi if (alignAbilityChars && i == MAX_CHARS_PRINTED) { u32 width = GetStringWidth(FONT_SMALL, text1, 0); - while (x1 + width < 64) - x1++; + if (x1 + width < 64) + x1 += 64 - (x1 + width); } windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(text1, x1, y, color1, color2, color3, &windowId); From 045dbcf81eb325a8af516ac9b60ef966cdd5a4df Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 00:48:35 -0400 Subject: [PATCH 103/271] Fixed creation trio orbs not boosting power for non-base forms. --- src/battle_util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 645d282bad..73865bd793 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -8477,15 +8477,15 @@ static u32 CalcMoveBasePowerAfterModifiers(u16 move, u8 battlerAtk, u8 battlerDe MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_LUSTROUS_ORB: - if (gBattleMons[battlerAtk].species == SPECIES_PALKIA && (moveType == TYPE_WATER || moveType == TYPE_DRAGON)) + if (GET_BASE_SPECIES_ID(gBattleMons[battlerAtk].species) == SPECIES_PALKIA && (moveType == TYPE_WATER || moveType == TYPE_DRAGON)) MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_ADAMANT_ORB: - if (gBattleMons[battlerAtk].species == SPECIES_DIALGA && (moveType == TYPE_STEEL || moveType == TYPE_DRAGON)) + if (GET_BASE_SPECIES_ID(gBattleMons[battlerAtk].species) == SPECIES_DIALGA && (moveType == TYPE_STEEL || moveType == TYPE_DRAGON)) MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_GRISEOUS_ORB: - if (gBattleMons[battlerAtk].species == SPECIES_GIRATINA && (moveType == TYPE_GHOST || moveType == TYPE_DRAGON)) + if (GET_BASE_SPECIES_ID(gBattleMons[battlerAtk].species) == SPECIES_GIRATINA && (moveType == TYPE_GHOST || moveType == TYPE_DRAGON)) MulModifier(&modifier, holdEffectModifier); break; case HOLD_EFFECT_SOUL_DEW: From b2af7a1b4751f60676bd082b1f408c48457f754b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 01:17:17 -0400 Subject: [PATCH 104/271] Fixed critical capture fields not using TRUE or FALSE --- src/battle_script_commands.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 420d5790ce..7af4fa9667 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13870,13 +13870,13 @@ static void Cmd_handleballthrow(void) u8 shakes; u8 maxShakes; - gBattleSpritesDataPtr->animationData->isCriticalCapture = 0; - gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = 0; + gBattleSpritesDataPtr->animationData->isCriticalCapture = FALSE; + gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = FALSE; if (CriticalCapture(odds)) { maxShakes = BALL_1_SHAKE; // critical capture doesn't guarantee capture - gBattleSpritesDataPtr->animationData->isCriticalCapture = 1; + gBattleSpritesDataPtr->animationData->isCriticalCapture = TRUE; } else { @@ -13900,7 +13900,7 @@ static void Cmd_handleballthrow(void) if (shakes == maxShakes) // mon caught, copy of the code above { if (IsCriticalCapture()) - gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = 1; + gBattleSpritesDataPtr->animationData->criticalCaptureSuccess = TRUE; UndoFormChange(gBattlerPartyIndexes[gBattlerTarget], GET_BATTLER_SIDE(gBattlerTarget), FALSE); gBattlescriptCurrInstr = BattleScript_SuccessBallThrow; From af137c9b9d1ed990b8d68a5a6bb41b6bbeb7cfca Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 03:42:41 -0400 Subject: [PATCH 105/271] Multiple changes - Simplified LoadSpecialPokePic - Changed all checks flag checks to houldShowFemaleDifferences --- include/decompress.h | 5 ++- include/pokemon.h | 1 + include/pokemon_icon.h | 1 - src/battle_anim_mons.c | 6 ++-- src/battle_gfx_sfx_util.c | 10 +++--- src/contest.c | 2 +- src/contest_painting.c | 18 +++++----- src/contest_util.c | 11 +++---- src/decompress.c | 62 ++++++++--------------------------- src/egg_hatch.c | 2 +- src/menu_specialized.c | 2 +- src/pokeblock_feed.c | 2 +- src/pokemon.c | 13 +++++--- src/pokemon_debug.c | 15 +++++---- src/pokemon_icon.c | 60 ++++----------------------------- src/pokemon_jump.c | 9 +++-- src/pokemon_storage_system.c | 6 ++-- src/pokemon_summary_screen.c | 6 ++-- src/pokenav_conditions.c | 2 +- src/trade.c | 6 ++-- src/trainer_pokemon_sprites.c | 4 +-- 21 files changed, 81 insertions(+), 162 deletions(-) diff --git a/include/decompress.h b/include/decompress.h index bea2788abc..ef2ec43b0f 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -19,10 +19,9 @@ bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffer, s32 species); void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality); -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); -void HandleLoadSpecialPokePicCustom(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFemale); +void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality); -void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); +void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic); u32 GetDecompressedDataSize(const u32 *ptr); diff --git a/include/pokemon.h b/include/pokemon.h index d7de38c61f..c05628a598 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -558,5 +558,6 @@ u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId); u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg); u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg); u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove); +bool32 ShouldShowFemaleDifferences(u16 species, u32 personality); #endif // GUARD_POKEMON_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 952db1ed12..fba6a6740a 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -21,7 +21,6 @@ u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s1 void FreeMonIconPalette(u16 species); void FreeAndDestroyMonIconSprite(struct Sprite *sprite); u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality); -u8 CreateMonIconCustom(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool8 isFemale, bool8 isShiny); u8 UpdateMonIconFrame(struct Sprite *sprite); void LoadMonIconPalette(u16 species); void SpriteCB_MonIcon(struct Sprite *sprite); diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 21a3ed9027..cef93bf965 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -2149,8 +2149,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 if (!isBackpic) { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); - LoadSpecialPokePic(&gMonFrontPicTable[species], - gMonSpritesGfxPtr->buffer, + LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, TRUE); @@ -2158,8 +2157,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 else { LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20); - LoadSpecialPokePic(&gMonBackPicTable[species], - gMonSpritesGfxPtr->buffer, + LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, FALSE); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8cd23098f2..27d7c7e354 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -578,13 +578,13 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op position = GetBattlerPosition(battlerId); if (opponent) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[position], species, currentPersonality); } else { - HandleLoadSpecialPokePic(&gMonBackPicTable[species], + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[position], species, currentPersonality); } @@ -860,7 +860,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo personalityValue = gContestResources->moveAnim->personality; otId = gContestResources->moveAnim->otId; - HandleLoadSpecialPokePic(&gMonBackPicTable[targetSpecies], + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[position], targetSpecies, gContestResources->moveAnim->targetPersonality); @@ -879,7 +879,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); - HandleLoadSpecialPokePic(&gMonBackPicTable[targetSpecies], + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[position], targetSpecies, gTransformedPersonalities[battlerAtk]); @@ -889,7 +889,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); - HandleLoadSpecialPokePic(&gMonFrontPicTable[targetSpecies], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[position], targetSpecies, gTransformedPersonalities[battlerAtk]); diff --git a/src/contest.c b/src/contest.c index 0c525ed3ab..0b5eda51b9 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3121,7 +3121,7 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind u8 spriteId; species = SanitizeSpecies(species); - HandleLoadSpecialPokePic(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], species, personality); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], species, personality); LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_PLAYER_LEFT); diff --git a/src/contest_painting.c b/src/contest_painting.c index 48021e28cd..f891946d67 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -367,20 +367,18 @@ static void InitContestMonPixels(u16 species, bool8 backPic) LZDecompressVram(pal, gContestPaintingMonPalette); if (!backPic) { - HandleLoadSpecialPokePic( - &gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], - species, - gContestPaintingWinner->personality); + HandleLoadSpecialPokePic(TRUE, + gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + species, + gContestPaintingWinner->personality); _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); } else { - HandleLoadSpecialPokePic( - &gMonBackPicTable[species], - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], - species, - gContestPaintingWinner->personality); + HandleLoadSpecialPokePic(FALSE, + gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], + species, + gContestPaintingWinner->personality); _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], gContestPaintingMonPalette, (void *)gContestMonPixels); } } diff --git a/src/contest_util.c b/src/contest_util.c index 79bf09eb2e..dfd69a2857 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -892,11 +892,10 @@ static void Task_ShowWinnerMonBanner(u8 taskId) species = gContestMons[i].species; personality = gContestMons[i].personality; otId = gContestMons[i].otId; - HandleLoadSpecialPokePic( - &gMonFrontPicTable[species], - gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], - species, - personality); + HandleLoadSpecialPokePic(TRUE, + gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], + species, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); LoadCompressedSpritePalette(pokePal); @@ -2572,7 +2571,7 @@ void ShowContestEntryMonPic(void) taskId = CreateTask(Task_ShowContestEntryMonPic, 0x50); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); LoadCompressedSpritePalette(palette); diff --git a/src/decompress.c b/src/decompress.c index 4f17edcf86..c94f748629 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -70,25 +70,18 @@ void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void *buffe void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality) { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) DecompressPicFromTable(&gMonFrontPicTableFemale[species], buffer, species); else DecompressPicFromTable(&gMonFrontPicTable[species], buffer, species); } -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality) +void HandleLoadSpecialPokePic(bool32 isFrontPic, void *dest, s32 species, u32 personality) { - bool8 isFrontPic; - - if (src == &gMonFrontPicTable[species]) - isFrontPic = TRUE; // frontPic - else - isFrontPic = FALSE; // backPic - - LoadSpecialPokePic(src, dest, species, personality, isFrontPic); + LoadSpecialPokePic(dest, species, personality, isFrontPic); } -void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic) +void LoadSpecialPokePic(void *dest, s32 species, u32 personality, bool8 isFrontPic) { if (species == SPECIES_UNOWN) { @@ -100,8 +93,13 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 LZ77UnCompWram(gMonFrontPicTable[id].data, dest); } else if (species > NUM_SPECIES) // is species unknown? draw the ? icon - LZ77UnCompWram(gMonFrontPicTable[0].data, dest); - else if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + { + if (isFrontPic) + LZ77UnCompWram(gMonFrontPicTable[0].data, dest); + else + LZ77UnCompWram(gMonBackPicTable[0].data, dest); + } + else if (ShouldShowFemaleDifferences(species, personality)) { if (isFrontPic) LZ77UnCompWram(gMonFrontPicTableFemale[species].data, dest); @@ -109,49 +107,15 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 LZ77UnCompWram(gMonBackPicTableFemale[species].data, dest); } else - LZ77UnCompWram(src->data, dest); - - DrawSpindaSpots(species, personality, dest, isFrontPic); -} - -#if P_ENABLE_DEBUG == TRUE -static void LoadSpecialPokePicCustom(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic, bool8 isFemale) -{ - if (species == SPECIES_UNOWN) - { - u32 id = GetUnownSpeciesId(personality); - - if (!isFrontPic) - LZ77UnCompWram(gMonBackPicTable[id].data, dest); - else - LZ77UnCompWram(gMonFrontPicTable[id].data, dest); - } - else if (species > NUM_SPECIES) // is species unknown? draw the ? icon - LZ77UnCompWram(gMonFrontPicTable[0].data, dest); - else if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) { if (isFrontPic) - LZ77UnCompWram(gMonFrontPicTableFemale[species].data, dest); + LZ77UnCompWram(gMonFrontPicTable[species].data, dest); else - LZ77UnCompWram(gMonBackPicTableFemale[species].data, dest); + LZ77UnCompWram(gMonBackPicTable[species].data, dest); } - else - LZ77UnCompWram(src->data, dest); DrawSpindaSpots(species, personality, dest, isFrontPic); } -void HandleLoadSpecialPokePicCustom(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFemale) -{ - bool8 isFrontPic; - - if (src == &gMonFrontPicTable[species]) - isFrontPic = TRUE; // frontPic - else - isFrontPic = FALSE; // backPic - - LoadSpecialPokePicCustom(src, dest, species, personality, isFrontPic, isFemale); -} -#endif void Unused_LZDecompressWramIndirect(const void **src, void *dest) { diff --git a/src/egg_hatch.c b/src/egg_hatch.c index e280ef315b..b7ae2e2ceb 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -444,7 +444,7 @@ static u8 EggHatchCreateMonSprite(u8 useAlt, u8 state, u8 partyId, u16 *speciesL { u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 pid = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[(useAlt * 2) + B_POSITION_OPPONENT_LEFT], species, pid); LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 42c80b5ee3..7c856b5163 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -1075,7 +1075,7 @@ void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, u32 trainerId = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); - LoadSpecialPokePic(&gMonFrontPicTable[species], tilesDst, species, personality, TRUE); + LoadSpecialPokePic(tilesDst, species, personality, TRUE); LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst); } } diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 00597e8d38..46355e1464 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -727,7 +727,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) // Load mon gfx species = GetMonData(mon, MON_DATA_SPECIES2); personality = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); sPokeblockFeed->loadGfxState++; break; case 1: diff --git a/src/pokemon.c b/src/pokemon.c index c781a80078..9ebab1a46e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7520,14 +7520,14 @@ const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 p shinyValue = GET_SHINY_VALUE(otId, personality); if (shinyValue < SHINY_ODDS) { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) return gMonShinyPaletteTableFemale[species].data; else return gMonShinyPaletteTable[species].data; } else { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) return gMonPaletteTableFemale[species].data; else return gMonPaletteTable[species].data; @@ -7549,14 +7549,14 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u shinyValue = GET_SHINY_VALUE(otId, personality); if (shinyValue < SHINY_ODDS) { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) return &gMonShinyPaletteTableFemale[species]; else return &gMonShinyPaletteTable[species]; } else { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) return &gMonPaletteTableFemale[species]; else return &gMonPaletteTable[species]; @@ -8359,3 +8359,8 @@ void TrySpecialOverworldEvo(void) sTriedEvolving = 0; SetMainCallback2(CB2_ReturnToField); } + +bool32 ShouldShowFemaleDifferences(u16 species, u32 personality) +{ + return (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; +} diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index fa4460ed83..8775889fdf 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -1107,6 +1107,9 @@ static void ResetPokemonDebugWindows(void) } } +#define MALE_PERSONALITY 0xFE +#define FEMALE_PERSONALITY 0X0 + void CB2_Debug_Pokemon(void) { u8 taskId; @@ -1180,7 +1183,7 @@ void CB2_Debug_Pokemon(void) palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); LoadCompressedSpritePalette(palette); //Front - HandleLoadSpecialPokePicCustom(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, 0, data->isFemale); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); data->isShiny = FALSE; data->isFemale = FALSE; BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); @@ -1195,7 +1198,7 @@ void CB2_Debug_Pokemon(void) LoadAndCreateEnemyShadowSpriteCustom(data, species); //Back - HandleLoadSpecialPokePicCustom(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[2], species, 0, data->isFemale); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 4); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gMonBackPicCoords[species].y_offset; @@ -1205,7 +1208,7 @@ void CB2_Debug_Pokemon(void) gSprites[data->backspriteId].oam.priority = 0; //Icon Sprite - data->iconspriteId = CreateMonIconCustom(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, data->isShiny, data->isFemale, data->isShiny); + data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); gSprites[data->iconspriteId].oam.priority = 0; //Modify Arrows @@ -1692,7 +1695,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) palette = GetMonSpritePalStructCustom(species, data->isFemale, data->isShiny); LoadCompressedSpritePalette(palette); //Front - HandleLoadSpecialPokePicCustom(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, 0, data->isFemale); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[1], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 1); SetMultiuseSpriteTemplateToPokemon(species, 1); gMultiuseSpriteTemplate.paletteTag = palette->tag; @@ -1705,7 +1708,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) LoadAndCreateEnemyShadowSpriteCustom(data, species); //Back - HandleLoadSpecialPokePicCustom(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[2], species, 0, data->isFemale); + HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5); SetMultiuseSpriteTemplateToPokemon(species, 2); offset_y = gMonBackPicCoords[species].y_offset; @@ -1715,7 +1718,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) gSprites[data->backspriteId].oam.priority = 0; //Icon Sprite - data->iconspriteId = CreateMonIconCustom(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, data->isShiny, data->isFemale, data->isShiny); + data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); gSprites[data->iconspriteId].oam.priority = 0; //Modify Arrows diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 6a0c8385ac..51e1809aab 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -23,10 +23,6 @@ struct MonIconSpriteTemplate static u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8); static void FreeAndDestroyMonIconSprite_(struct Sprite *sprite); -#if P_ENABLE_DEBUG == TRUE -static const u8 *GetMonIconPtrCustom(u16 species, u32 personality, bool8 isFemale); -static const u8 *GetMonIconTilesCustom(u16 species, bool8 isFemale); -#endif const u8 *const gMonIconTable[] = { @@ -2596,7 +2592,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u if (species > NUM_SPECIES) iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; - else if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + else if (ShouldShowFemaleDifferences(species, personality)) iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndicesFemale[species]; spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); @@ -2606,32 +2602,6 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u return spriteId; } -#if P_ENABLE_DEBUG == TRUE -u8 CreateMonIconCustom(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality, bool8 isFemale, bool8 isShiny) -{ - u8 spriteId; - struct MonIconSpriteTemplate iconTemplate = - { - .oam = &sMonIconOamData, - .image = GetMonIconPtrCustom(species, personality, isFemale), - .anims = sMonIconAnims, - .affineAnims = sMonIconAffineAnims, - .callback = callback, - .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species], - }; - - if (species > NUM_SPECIES) - iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG; - else if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) - iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndicesFemale[species]; - - spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); - - UpdateMonIconFrame(&gSprites[spriteId]); - - return spriteId; -} -#endif u8 CreateMonIconNoPersonality(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { @@ -2704,13 +2674,6 @@ const u8 *GetMonIconPtr(u16 species, u32 personality) return GetMonIconTiles(GetIconSpecies(species, personality), personality); } -#if P_ENABLE_DEBUG == TRUE -static const u8 *GetMonIconPtrCustom(u16 species, u32 personality, bool8 isFemale) -{ - return GetMonIconTilesCustom(GetIconSpecies(species, personality), isFemale); -} -#endif - void FreeAndDestroyMonIconSprite(struct Sprite *sprite) { FreeAndDestroyMonIconSprite_(sprite); @@ -2772,24 +2735,15 @@ void SpriteCB_MonIcon(struct Sprite *sprite) const u8 *GetMonIconTiles(u16 species, u32 personality) { - const u8 *iconSprite = gMonIconTable[species]; - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) - { + const u8 *iconSprite; + + if (ShouldShowFemaleDifferences(species, personality)) iconSprite = gMonIconTableFemale[species]; - } + else + iconSprite = gMonIconTable[species]; + return iconSprite; } -#if P_ENABLE_DEBUG == TRUE -static const u8 *GetMonIconTilesCustom(u16 species, bool8 isFemale) -{ - const u8 *iconSprite = gMonIconTable[species]; - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) - { - iconSprite = gMonIconTableFemale[species]; - } - return iconSprite; -} -#endif void TryLoadAllMonIconPalettesAtOffset(u16 offset) { diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index e3ae6623c3..ccd3125e4c 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -2905,11 +2905,10 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu if (buffer && unusedBuffer) { - HandleLoadSpecialPokePic( - &gMonFrontPicTable[monInfo->species], - buffer, - monInfo->species, - monInfo->personality); + HandleLoadSpecialPokePic(TRUE, + buffer, + monInfo->species, + monInfo->personality); spriteSheet.data = buffer; spriteSheet.tag = multiplayerId; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 39b55463c5..7f515eba7a 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -3991,7 +3991,7 @@ static void LoadDisplayMonGfx(u16 species, u32 pid) if (species != SPECIES_NONE) { - LoadSpecialPokePic(&gMonFrontPicTable[species], sStorage->tileBuffer, species, pid, TRUE); + LoadSpecialPokePic(sStorage->tileBuffer, species, pid, TRUE); LZ77UnCompWram(sStorage->displayMonPalette, sStorage->displayMonPalBuffer); CpuCopy32(sStorage->tileBuffer, sStorage->displayMonTilePtr, MON_PIC_SIZE); LoadPalette(sStorage->displayMonPalBuffer, sStorage->displayMonPalOffset, 0x20); @@ -5109,7 +5109,7 @@ static u16 TryLoadMonIconTiles(u16 species, u32 personality) u16 i, offset; // Treat female mons as a seperate species as they may have a different icon than males - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) species |= 0x8000; // 1 << 15 // Search icon list for this species @@ -5176,7 +5176,7 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s struct SpriteTemplate template = sSpriteTemplate_MonIcon; species = GetIconSpecies(species, personality); - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + if (ShouldShowFemaleDifferences(species, personality)) { template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndicesFemale[species]; } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2befc159f5..c124358ef5 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3980,7 +3980,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) case 0: if (gMain.inBattle) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[summary->species2], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], summary->species2, summary->pid); @@ -3989,14 +3989,14 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) { if (gMonSpritesGfxPtr != NULL) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[summary->species2], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], summary->species2, summary->pid); } else { - HandleLoadSpecialPokePic(&gMonFrontPicTable[summary->species2], + HandleLoadSpecialPokePic(TRUE, MonSpritesGfxManager_GetSpritePtr(MON_SPR_GFX_MANAGER_A, B_POSITION_OPPONENT_LEFT), summary->species2, summary->pid); diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index e0645bac0b..0477ebbf52 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -534,7 +534,7 @@ static void ConditionGraphDrawMonPic(s16 listId, u8 loadId) species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL); tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); - LoadSpecialPokePic(&gMonFrontPicTable[species], menu->monPicGfx[loadId], species, personality, TRUE); + LoadSpecialPokePic(menu->monPicGfx[loadId], species, personality, TRUE); LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), menu->monPal[loadId]); } diff --git a/src/trade.c b/src/trade.c index ad990e980b..abf35f26a4 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2734,7 +2734,7 @@ static void LoadTradeMonPic(u8 whichParty, u8 state) species = GetMonData(mon, MON_DATA_SPECIES2); personality = GetMonData(mon, MON_DATA_PERSONALITY); - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + B_POSITION_OPPONENT_LEFT], species, personality); LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); sTradeData->monSpecies[whichParty] = species; @@ -3727,7 +3727,7 @@ static bool8 AnimateTradeSequenceCable(void) case TS_STATE_POKEBALL_ARRIVE_WAIT: if (gSprites[sTradeData->bouncingPokeballSpriteId].callback == SpriteCallbackDummy) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); sTradeData->state++; } break; @@ -4224,7 +4224,7 @@ static bool8 AnimateTradeSequenceWireless(void) case TS_STATE_POKEBALL_ARRIVE_WAIT: if (gSprites[sTradeData->bouncingPokeballSpriteId].callback == SpriteCallbackDummy) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], + HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]); diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 36cf70dcef..dcc6647182 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -59,11 +59,11 @@ static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 * { if (isFrontPic) { - LoadSpecialPokePic(&gMonFrontPicTable[species], dest, species, personality, isFrontPic); + LoadSpecialPokePic(dest, species, personality, isFrontPic); } else { - LoadSpecialPokePic(&gMonBackPicTable[species], dest, species, personality, isFrontPic); + LoadSpecialPokePic(dest, species, personality, isFrontPic); } } else From 1f4ef2a0fb26f10f37686aa9c0da6b356f898721 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 10:32:14 -0300 Subject: [PATCH 106/271] Added constants for GetLeadMonFriendshipScore --- data/maps/PacifidlogTown_House2/scripts.inc | 4 ++-- .../maps/SlateportCity_PokemonFanClub/scripts.inc | 2 +- .../scripts.inc | 14 +++++++------- include/constants/pokemon.h | 9 +++++++++ src/field_specials.c | 15 ++++++++------- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/data/maps/PacifidlogTown_House2/scripts.inc b/data/maps/PacifidlogTown_House2/scripts.inc index 3dedcec30f..b5868625f0 100644 --- a/data/maps/PacifidlogTown_House2/scripts.inc +++ b/data/maps/PacifidlogTown_House2/scripts.inc @@ -11,9 +11,9 @@ PacifidlogTown_House2_EventScript_FanClubYoungerBrother:: call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, 4, PacifidlogTown_House2_EventScript_GiveReturn + goto_if_ge VAR_RESULT, FRIENDSHIP_GE_150, PacifidlogTown_House2_EventScript_GiveReturn specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, 2, PacifidlogTown_House2_EventScript_PutInEffort + goto_if_ge VAR_RESULT, FRIENDSHIP_GE_50, PacifidlogTown_House2_EventScript_PutInEffort goto PacifidlogTown_House2_EventScript_GiveFrustration end diff --git a/data/maps/SlateportCity_PokemonFanClub/scripts.inc b/data/maps/SlateportCity_PokemonFanClub/scripts.inc index b97e29a028..22145e774b 100644 --- a/data/maps/SlateportCity_PokemonFanClub/scripts.inc +++ b/data/maps/SlateportCity_PokemonFanClub/scripts.inc @@ -192,7 +192,7 @@ SlateportCity_PokemonFanClub_EventScript_SootheBellWoman:: goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, 4, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell + goto_if_ge VAR_RESULT, FRIENDSHIP_GE_150, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell release end diff --git a/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc b/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc index 84cdef029e..98ac7273e0 100644 --- a/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc +++ b/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc @@ -7,13 +7,13 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater:: msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT specialvar VAR_RESULT, GetLeadMonFriendshipScore switch VAR_RESULT - case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou - case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary - case 2, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou - case 3, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou - case 4, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot - case 5, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy - case 6, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou + case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou + case FRIENDSHIP_GE_1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary + case FRIENDSHIP_GE_50, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou + case FRIENDSHIP_GE_100, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou + case FRIENDSHIP_GE_150, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot + case FRIENDSHIP_GE_200, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy + case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou release end diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 40af999fde..01449fab90 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -181,6 +181,15 @@ #define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7 #define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint +// Constants for GetLeadMonFriendshipScore +#define FRIENDSHIP_NONE 0 +#define FRIENDSHIP_GE_1 1 +#define FRIENDSHIP_GE_50 2 +#define FRIENDSHIP_GE_100 3 +#define FRIENDSHIP_GE_150 4 +#define FRIENDSHIP_GE_200 5 +#define FRIENDSHIP_MAX 6 + #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 #define MAX_CONDITION 255 diff --git a/src/field_specials.c b/src/field_specials.c index 7c226e7a39..41f84dff70 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -65,6 +65,7 @@ #include "constants/weather.h" #include "constants/metatile_labels.h" #include "palette.h" +#include "constants/pokemon.h" EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; EWRAM_DATA u8 gBikeCollisions = 0; @@ -941,19 +942,19 @@ u8 GetLeadMonFriendshipScore(void) { struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) - return 6; + return FRIENDSHIP_MAX; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) - return 5; + return FRIENDSHIP_GE_200; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) - return 4; + return FRIENDSHIP_GE_150; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) - return 3; + return FRIENDSHIP_GE_100; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) - return 2; + return FRIENDSHIP_GE_50; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) - return 1; + return FRIENDSHIP_GE_1; - return 0; + return FRIENDSHIP_NONE; } static void CB2_FieldShowRegionMap(void) From e792fae415303310a27f06797a5273463dc2589f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 09:37:42 -0300 Subject: [PATCH 107/271] Review corrections -Simplified the affection mechanics' battle scripts. -Corrected the value seting inside CalcCritChanceStage. -Simplified the checks inside Cmd_adjustdamage -Simplified the contents of GetLeadMonFriendshipScore now that a more general function to do the same thing was added. -Added constants for the values returned by GetMonFriendshipScore. --- data/battle_scripts_1.s | 52 ++++++++++++------------------------ include/constants/pokemon.h | 9 +++++++ src/battle_script_commands.c | 31 +++++++++++---------- src/battle_util.c | 21 ++++++++------- src/field_specials.c | 17 ++---------- 5 files changed, 54 insertions(+), 76 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 236e5d41dd..5cdb44597e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -421,47 +421,29 @@ BattleScript_AffectionBasedEndurance:: return BattleScript_AffectionBasedStatusHeal:: - jumpifstatus BS_ATTACKER, STATUS1_POISON, BattleScript_AffectionBasedStatusHeal_Poison - jumpifstatus BS_ATTACKER, STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatusHeal_Poison - jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_AffectionBasedStatusHeal_Sleep - jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatusHeal_Paralysis - jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatusHeal_Burn - jumpifstatus BS_ATTACKER, STATUS1_FREEZE, BattleScript_AffectionBasedStatusHeal_Freeze + jumpifstatus BS_ATTACKER, STATUS1_POISON, BattleScript_AffectionBasedStatus_HealPoisonString + jumpifstatus BS_ATTACKER, STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatus_HealPoisonString + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_AffectionBasedStatus_HealSleepString + jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatus_HealParalysisString + jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatus_HealBurnString + jumpifstatus BS_ATTACKER, STATUS1_FREEZE, BattleScript_AffectionBasedStatus_HealFreezeString end2 -BattleScript_AffectionBasedStatusHeal_Poison: +BattleScript_AffectionBasedStatus_HealPoisonString: printstring STRINGID_ATTACKEREXPELLEDTHEPOISON - waitmessage B_WAIT_TIME_LONG - clearstatus BS_ATTACKER - waitstate - updatestatusicon BS_ATTACKER - waitstate - end2 -BattleScript_AffectionBasedStatusHeal_Sleep: + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealSleepString: printstring STRINGID_ATTACKERSHOOKITSELFAWAKE - waitmessage B_WAIT_TIME_LONG - clearstatus BS_ATTACKER - waitstate - updatestatusicon BS_ATTACKER - waitstate - end2 -BattleScript_AffectionBasedStatusHeal_Paralysis: + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealParalysisString: printstring STRINGID_ATTACKERBROKETHROUGHPARALYSIS - waitmessage B_WAIT_TIME_LONG - clearstatus BS_ATTACKER - waitstate - updatestatusicon BS_ATTACKER - waitstate - end2 -BattleScript_AffectionBasedStatusHeal_Burn: + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealBurnString: printstring STRINGID_ATTACKERHEALEDITSBURN - waitmessage B_WAIT_TIME_LONG - clearstatus BS_ATTACKER - waitstate - updatestatusicon BS_ATTACKER - waitstate - end2 -BattleScript_AffectionBasedStatusHeal_Freeze: + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE + goto BattleScript_AffectionBasedStatusHeal_Continue +BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER waitstate diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 13db5644ef..dc8955656c 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -273,6 +273,15 @@ #define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7 #define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint +// Constants for GetLeadMonFriendshipScore +#define FRIENDSHIP_NONE 0 +#define FRIENDSHIP_GE_1 1 +#define FRIENDSHIP_GE_50 2 +#define FRIENDSHIP_GE_100 3 +#define FRIENDSHIP_GE_150 4 +#define FRIENDSHIP_GE_200 5 +#define FRIENDSHIP_MAX 6 + #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 #define MAX_CONDITION 255 diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5d3f8772ec..6182e09bab 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -59,6 +59,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "battle_util.h" +#include "constants/pokemon.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; @@ -1732,7 +1733,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u #if B_AFFECTION_MECHANICS == TRUE // With high affection/friendship there's a chance to evade a move by substracting 10% of its accuracy. // I can't find exact information about that chance, so I'm just gonna write it as a 20% chance for now. - if (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[battlerDef]]) >= 4 && (Random() % 100) <= 20) + if (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[battlerDef]]) >= FRIENDSHIP_GE_150 && (Random() % 100) <= 20) calc = (calc * 90) / 100; #endif @@ -1904,11 +1905,9 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) #if B_AFFECTION_MECHANICS == TRUE - + (abilityAtk == ABILITY_SUPER_LUCK) - + 2 * (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= 5); - #else - + (abilityAtk == ABILITY_SUPER_LUCK); + + 2 * (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_GE_200) #endif + + (abilityAtk == ABILITY_SUPER_LUCK); if (critChance >= ARRAY_COUNT(sCriticalHitChance)) critChance = ARRAY_COUNT(sCriticalHitChance) - 1; @@ -1976,6 +1975,8 @@ static void Cmd_adjustdamage(void) { u8 holdEffect, param; u32 moveType; + u32 friendshipScore = GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]); + u32 rand = Random() % 100; GET_MOVE_TYPE(gCurrentMove, moveType); @@ -1991,7 +1992,7 @@ static void Cmd_adjustdamage(void) gPotentialItemEffectBattler = gBattlerTarget; - if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param) + if (holdEffect == HOLD_EFFECT_FOCUS_BAND && rand < param) { RecordItemEffectBattle(gBattlerTarget, holdEffect); gSpecialStatuses[gBattlerTarget].focusBanded = TRUE; @@ -2009,12 +2010,12 @@ static void Cmd_adjustdamage(void) gSpecialStatuses[gBattlerTarget].focusSashed = TRUE; } #if B_AFFECTION_MECHANICS == TRUE - else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) >= 3) + else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && friendshipScore >= FRIENDSHIP_GE_100) { - if ((GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 6 && (Random() % 100) < 25) - || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 5 && (Random() % 100) < 20) - || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 4 && (Random() % 100) < 15) - || (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]) == 3 && (Random() % 100) < 10)) + if ((friendshipScore == FRIENDSHIP_MAX && rand < 25) + || (friendshipScore == FRIENDSHIP_GE_200 && rand < 20) + || (friendshipScore == FRIENDSHIP_GE_150 && rand < 15) + || (friendshipScore == FRIENDSHIP_GE_100 && rand < 10)) gSpecialStatuses[gBattlerTarget].affectionEndured = TRUE; } #endif @@ -2024,11 +2025,9 @@ static void Cmd_adjustdamage(void) && !gSpecialStatuses[gBattlerTarget].focusBanded && !gSpecialStatuses[gBattlerTarget].focusSashed #if B_AFFECTION_MECHANICS == TRUE - && !gSpecialStatuses[gBattlerTarget].sturdied - && !gSpecialStatuses[gBattlerTarget].affectionEndured) -#else - && !gSpecialStatuses[gBattlerTarget].sturdied) + && !gSpecialStatuses[gBattlerTarget].affectionEndured #endif + && !gSpecialStatuses[gBattlerTarget].sturdied) goto END; // Handle reducing the dmg to 1 hp. @@ -4063,7 +4062,7 @@ static void Cmd_getexp(void) } #endif #if B_AFFECTION_MECHANICS == TRUE - if (GetMonFriendshipScore(&gPlayerParty[gBattleStruct->expGetterMonId]) >= 2) + if (GetMonFriendshipScore(&gPlayerParty[gBattleStruct->expGetterMonId]) >= FRIENDSHIP_GE_50) gBattleMoveDamage = (gBattleMoveDamage * 120) / 100; #endif diff --git a/src/battle_util.c b/src/battle_util.c index 5a7f445ac2..b5d55df055 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -45,6 +45,7 @@ #include "constants/species.h" #include "constants/trainers.h" #include "constants/weather.h" +#include "constants/pokemon.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; @@ -2084,22 +2085,22 @@ void TryToRevertMimicry(void) } } -u32 GetMonFriendshipScore(struct Pokemon *pokemon) // Based on GetLeadMonFriendshipScore +u32 GetMonFriendshipScore(struct Pokemon *pokemon) { - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255) - return 6; + if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) + return FRIENDSHIP_MAX; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) - return 5; + return FRIENDSHIP_GE_200; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) - return 4; + return FRIENDSHIP_GE_150; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) - return 3; + return FRIENDSHIP_GE_100; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) - return 2; + return FRIENDSHIP_GE_50; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) - return 1; + return FRIENDSHIP_GE_1; - return 0; + return FRIENDSHIP_NONE; } enum @@ -2585,7 +2586,7 @@ u8 DoFieldEndTurnEffects(void) for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= 4 + && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_GE_150 && (Random() % 100 < 20)) { gBattleCommunication[MULTISTRING_CHOOSER] = 1; diff --git a/src/field_specials.c b/src/field_specials.c index 4ed2a2e03d..9305083726 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -65,6 +65,7 @@ #include "constants/weather.h" #include "constants/metatile_labels.h" #include "palette.h" +#include "battle_util.h" EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; EWRAM_DATA u8 gBikeCollisions = 0; @@ -939,21 +940,7 @@ u16 GetWeekCount(void) u8 GetLeadMonFriendshipScore(void) { - struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) - return 6; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) - return 5; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) - return 4; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) - return 3; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) - return 2; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) - return 1; - - return 0; + return GetMonFriendshipScore(&gPlayerParty[GetLeadMonIndex()]); } static void CB2_FieldShowRegionMap(void) From 8a1130d0461aac5e29fc1966f5ae6405bf2d2afe Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 25 Aug 2022 10:21:41 -0400 Subject: [PATCH 108/271] Missing constant in friendshiptodamagecalculation --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7c009e0775..09535e0794 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -8520,7 +8520,7 @@ static void Cmd_friendshiptodamagecalculation(void) if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25; else // EFFECT_FRUSTRATION - gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25; + gDynamicBasePower = 10 * (MAX_FRIENDSHIP - gBattleMons[gBattlerAttacker].friendship) / 25; gBattlescriptCurrInstr++; } From 11d6ae48205d01710d4fc8c961bd29f053272678 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 11:34:37 -0300 Subject: [PATCH 109/271] Renamed the GetLeadMonFriendshipScore constants --- data/maps/PacifidlogTown_House2/scripts.inc | 4 ++-- data/maps/SlateportCity_PokemonFanClub/scripts.inc | 2 +- .../scripts.inc | 10 +++++----- include/constants/pokemon.h | 14 +++++++------- src/field_specials.c | 10 +++++----- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/data/maps/PacifidlogTown_House2/scripts.inc b/data/maps/PacifidlogTown_House2/scripts.inc index b5868625f0..175b477e7a 100644 --- a/data/maps/PacifidlogTown_House2/scripts.inc +++ b/data/maps/PacifidlogTown_House2/scripts.inc @@ -11,9 +11,9 @@ PacifidlogTown_House2_EventScript_FanClubYoungerBrother:: call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, FRIENDSHIP_GE_150, PacifidlogTown_House2_EventScript_GiveReturn + goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, PacifidlogTown_House2_EventScript_GiveReturn specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, FRIENDSHIP_GE_50, PacifidlogTown_House2_EventScript_PutInEffort + goto_if_ge VAR_RESULT, FRIENDSHIP_50_TO_99, PacifidlogTown_House2_EventScript_PutInEffort goto PacifidlogTown_House2_EventScript_GiveFrustration end diff --git a/data/maps/SlateportCity_PokemonFanClub/scripts.inc b/data/maps/SlateportCity_PokemonFanClub/scripts.inc index 22145e774b..3b50428614 100644 --- a/data/maps/SlateportCity_PokemonFanClub/scripts.inc +++ b/data/maps/SlateportCity_PokemonFanClub/scripts.inc @@ -192,7 +192,7 @@ SlateportCity_PokemonFanClub_EventScript_SootheBellWoman:: goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT specialvar VAR_RESULT, GetLeadMonFriendshipScore - goto_if_ge VAR_RESULT, FRIENDSHIP_GE_150, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell + goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell release end diff --git a/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc b/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc index 98ac7273e0..97e522471f 100644 --- a/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc +++ b/data/maps/VerdanturfTown_FriendshipRatersHouse/scripts.inc @@ -8,11 +8,11 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater:: specialvar VAR_RESULT, GetLeadMonFriendshipScore switch VAR_RESULT case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou - case FRIENDSHIP_GE_1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary - case FRIENDSHIP_GE_50, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou - case FRIENDSHIP_GE_100, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou - case FRIENDSHIP_GE_150, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot - case FRIENDSHIP_GE_200, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy + case FRIENDSHIP_1_TO_49, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary + case FRIENDSHIP_50_TO_99, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou + case FRIENDSHIP_100_TO_149, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou + case FRIENDSHIP_150_TO_199, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot + case FRIENDSHIP_200_TO_254, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou release end diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 01449fab90..0e17357a32 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -182,13 +182,13 @@ #define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint // Constants for GetLeadMonFriendshipScore -#define FRIENDSHIP_NONE 0 -#define FRIENDSHIP_GE_1 1 -#define FRIENDSHIP_GE_50 2 -#define FRIENDSHIP_GE_100 3 -#define FRIENDSHIP_GE_150 4 -#define FRIENDSHIP_GE_200 5 -#define FRIENDSHIP_MAX 6 +#define FRIENDSHIP_NONE 0 +#define FRIENDSHIP_1_TO_49 1 +#define FRIENDSHIP_50_TO_99 2 +#define FRIENDSHIP_100_TO_149 3 +#define FRIENDSHIP_150_TO_199 4 +#define FRIENDSHIP_200_TO_254 5 +#define FRIENDSHIP_MAX 6 #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 diff --git a/src/field_specials.c b/src/field_specials.c index 41f84dff70..9a2742b70b 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -944,15 +944,15 @@ u8 GetLeadMonFriendshipScore(void) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) return FRIENDSHIP_MAX; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) - return FRIENDSHIP_GE_200; + return FRIENDSHIP_200_TO_254; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) - return FRIENDSHIP_GE_150; + return FRIENDSHIP_150_TO_199; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) - return FRIENDSHIP_GE_100; + return FRIENDSHIP_100_TO_149; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) - return FRIENDSHIP_GE_50; + return FRIENDSHIP_50_TO_99; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) - return FRIENDSHIP_GE_1; + return FRIENDSHIP_1_TO_49; return FRIENDSHIP_NONE; } From a0ec8a5a802ba7cfc9a3ea15ba55b78c7876616e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 25 Aug 2022 16:40:56 +0200 Subject: [PATCH 110/271] 4 digit hp in battle --- include/battle_interface.h | 5 +- src/battle_controller_player.c | 20 +-- src/battle_interface.c | 312 +++++++++++++++------------------ src/party_menu.c | 4 +- 4 files changed, 160 insertions(+), 181 deletions(-) diff --git a/include/battle_interface.h b/include/battle_interface.h index 29cb45b0fe..63b6386bea 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -6,7 +6,8 @@ enum { HP_CURRENT, - HP_MAX + HP_MAX, + HP_BOTH }; enum @@ -82,7 +83,7 @@ void DestoryHealthboxSprite(u8 healthboxSpriteId); void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly); void UpdateOamPriorityInAllHealthboxes(u8 priority, bool32 hideHpBoxes); void InitBattlerHealthboxCoords(u8 battler); -void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); +void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); void SwapHpBarsWithHpText(void); void ChangeMegaTriggerSprite(u8 spriteId, u8 animId); void CreateMegaTriggerSprite(u8 battlerId, u8 palId); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 8195414955..ea3bf2915b 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -248,7 +248,7 @@ static void HandleInputChooseAction(void) { PlaySE(SE_SELECT); TryHideLastUsedBall(); - + switch (gActionSelectionCursor[gActiveBattler]) { case 0: // Top left @@ -614,17 +614,17 @@ static void HandleInputChooseMove(void) { moveTarget = GetBattlerMoveTargetType(gActiveBattler, moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]); } - + if (gBattleStruct->zmove.viewing) { u16 chosenMove = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]; - + QueueZMove(gActiveBattler, chosenMove); gBattleStruct->zmove.viewing = FALSE; if (gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].split != SPLIT_STATUS) moveTarget = MOVE_TARGET_SELECTED; //damaging z moves always have selected target } - + if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = gActiveBattler; else @@ -660,7 +660,7 @@ static void HandleInputChooseMove(void) u32 i = 0; for (i = 0; i < gBattlersCount; i++) TryShowAsTarget(i); - + canSelectTarget = 3; } else if (moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_BOTH | MOVE_TARGET_FOES_AND_ALLY)) @@ -673,7 +673,7 @@ static void HandleInputChooseMove(void) } } } - + switch (canSelectTarget) { case 0: @@ -1346,7 +1346,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { @@ -2858,7 +2858,7 @@ static void PlayerHandleChooseMove(void) else { struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]); - + InitMoveSelectionsVarsAndStrings(); gBattleStruct->mega.playerSelect = FALSE; if (!IsMegaTriggerSpriteActive()) @@ -2867,7 +2867,7 @@ static void PlayerHandleChooseMove(void) CreateMegaTriggerSprite(gActiveBattler, 0); if (!IsZMoveTriggerSpriteActive()) gBattleStruct->zmove.triggerSpriteId = 0xFF; - + GetUsableZMoves(gActiveBattler, moveInfo->moves); gBattleStruct->zmove.viable = IsZMoveUsable(gActiveBattler, gMoveSelectionCursor[gActiveBattler]); CreateZMoveTriggerSprite(gActiveBattler, gBattleStruct->zmove.viable); @@ -2952,7 +2952,7 @@ static void PlayerHandleHealthBarUpdate(void) u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, 0, maxHP); } gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; diff --git a/src/battle_interface.c b/src/battle_interface.c index a504cf1c0e..83fb268de8 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -161,7 +161,7 @@ static const u8 *GetHealthboxElementGfxPtr(u8); static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *, u32, u32, u32, u32 *); static void RemoveWindowOnHealthbox(u32 windowId); -static void UpdateHpTextInHealthboxInDoubles(u8, s16, u8); +static void UpdateHpTextInHealthboxInDoubles(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp); static void UpdateStatusIconInHealthbox(u8); static void TextIntoHealthboxObject(void *, u8 *, s32); @@ -1116,175 +1116,148 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) RemoveWindowOnHealthbox(windowId); } -void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) +static void PrintHpOnHealthbox(u32 spriteId, s16 currHp, s16 maxHp, u32 bgColor, u32 rightTile, u32 leftTile) { - u32 windowId, spriteTileNum; u8 *windowTileData; - u8 text[32]; - void *objVram; + u32 windowId, tilesCount, x, healthboxTileNum; + u8 text[28], *txtPtr; + void *objVram = (void *)(OBJ_VRAM0) + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP; - if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle()) - { - spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; - if (maxOrCurrent != HP_CURRENT) // singles, max - { - ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 2, &windowId); - objVram = (void *)(OBJ_VRAM0); - objVram += spriteTileNum + 0xB40; - HpTextIntoHealthboxObject(objVram, windowTileData, 2); - RemoveWindowOnHealthbox(windowId); - } - else // singles, current - { - ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - text[3] = CHAR_SLASH; - text[4] = EOS; - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 2, &windowId); - objVram = (void *)(OBJ_VRAM0); - objVram += spriteTileNum + 0x3E0; - HpTextIntoHealthboxObject(objVram, windowTileData, 1); - objVram = (void *)(OBJ_VRAM0); - objVram += spriteTileNum + 0xB00; - HpTextIntoHealthboxObject(objVram, windowTileData + 0x20, 2); - RemoveWindowOnHealthbox(windowId); - } - } + // To fit 4 digit HP values we need to modify a bit the way hp is printed on Healthbox. + // 6 chars can fit on the right healthbox, the rest goes to the left one + txtPtr = ConvertIntToDecimalStringN(text, currHp, STR_CONV_MODE_RIGHT_ALIGN, 4); + *txtPtr++ = CHAR_SLASH; + txtPtr = ConvertIntToDecimalStringN(txtPtr, maxHp, STR_CONV_MODE_LEFT_ALIGN, 4); + // Print last 6 chars on the right window + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(txtPtr - 6, 0, 5, bgColor, &windowId); + HpTextIntoHealthboxObject(objVram + rightTile, windowTileData, 4); + RemoveWindowOnHealthbox(windowId); + // Print the rest of the chars on the left window + txtPtr[-6] = EOS; + // if max hp is 3 digits print on block closer to the right window, if 4 digits print further from the right window + if (maxHp >= 1000) + x = 9, tilesCount = 3; else + x = 6, tilesCount = 2, leftTile += 0x20; + windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, x, 5, bgColor, &windowId); + HpTextIntoHealthboxObject(objVram + leftTile, windowTileData, tilesCount); + RemoveWindowOnHealthbox(windowId); +} + +// Note: this is only possible to trigger via debug, it was an unused GF function. +static void UpdateOpponentHpTextDoubles(u32 healthboxSpriteId, u32 barSpriteId, s16 value, u8 maxOrCurrent) +{ + u8 text[32], *txtPtr; + u32 i, var; + u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler; + + if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) // don't print text if only bars are visible { - u8 battler; + memcpy(text, sEmptyWhiteText_TransparentHighlight, sizeof(sEmptyWhiteText_TransparentHighlight)); + if (maxOrCurrent == HP_CURRENT) + var = 0; + else + var = 4; - memcpy(text, sEmptyWhiteText_GrayHighlight, sizeof(sEmptyWhiteText_GrayHighlight)); - battler = gSprites[healthboxSpriteId].hMain_Battler; - if (IsDoubleBattle() == TRUE) - { - UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent); - } - else if (gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars) // don't print text if only bars are visible - { - u32 var; - u8 i; + txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); + if (!maxOrCurrent) + StringCopy(txtPtr, gText_Slash); + RenderTextHandleBold(gMonSpritesGfxPtr->barFontGfx, FONT_BOLD, text); - if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER) + for (i = var; i < var + 3; i++) + { + if (i < 3) { - if (maxOrCurrent == HP_CURRENT) - var = 29; - else - var = 89; + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], + (void *)((OBJ_VRAM0) + 32 * (1 + gSprites[barSpriteId].oam.tileNum + i)), + 0x20); } else { - if (maxOrCurrent == HP_CURRENT) - var = 21; - else - var = 49; + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], + (void *)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[barSpriteId].oam.tileNum)), + 0x20); } + } - ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_LEADING_ZEROS, 3); - RenderTextHandleBold(gMonSpritesGfxPtr->barFontGfx, FONT_BOLD, text); - - for (i = 0; i < 3; i++) - { - CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32], - (void *)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), - 0x20); - } + if (maxOrCurrent == HP_CURRENT) + { + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224], + (void *)((OBJ_VRAM0) + ((gSprites[barSpriteId].oam.tileNum + 4) * TILE_SIZE_4BPP)), + 0x20); + CpuFill32(0, (void *)((OBJ_VRAM0) + (gSprites[barSpriteId].oam.tileNum * TILE_SIZE_4BPP)), 0x20); } } } -static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) +// Same with this one. +static void UpdateOpponentHpTextSingles(u32 healthboxSpriteId, s16 value, u32 maxOrCurrent) { - u32 windowId, spriteTileNum; - u8 *windowTileData; u8 text[32]; - void *objVram; + u32 var, i; + u32 battler = gSprites[healthboxSpriteId].hMain_Battler; + + memcpy(text, sEmptyWhiteText_GrayHighlight, sizeof(sEmptyWhiteText_GrayHighlight)); + if (gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars) // don't print text if only bars are visible + { + if (maxOrCurrent == HP_CURRENT) + var = 21; + else + var = 49; + + ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_LEADING_ZEROS, 3); + RenderTextHandleBold(gMonSpritesGfxPtr->barFontGfx, FONT_BOLD, text); + + for (i = 0; i < 3; i++) + { + CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32], + (void *)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)), + 0x20); + } + } +} + +void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp) +{ + if (IsDoubleBattle()) + { + UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, maxOrCurrent, currHp, maxHp); + } + else // Single Battle + { + if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) // Player + { + PrintHpOnHealthbox(healthboxSpriteId, currHp, maxHp, 2, 0xB00, 0x3A0); + } + else // Opponent + { + UpdateOpponentHpTextSingles(healthboxSpriteId, currHp, HP_CURRENT); + UpdateOpponentHpTextSingles(healthboxSpriteId, maxHp, HP_MAX); + } + } +} + +static void UpdateHpTextInHealthboxInDoubles(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp) +{ + u32 barSpriteId = gSprites[healthboxSpriteId].data[5]; if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) { if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible { - spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * TILE_SIZE_4BPP; - objVram = (void *)(OBJ_VRAM0) + spriteTileNum; - - if (maxOrCurrent != HP_CURRENT) // doubles, max hp - { - ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId); - HpTextIntoHealthboxObject((void *)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2); - RemoveWindowOnHealthbox(windowId); - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END), + PrintHpOnHealthbox(barSpriteId, currHp, maxHp, 0, 0x80, 0x20); + // Clears the end of the healthbar gfx. + CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END), (void *)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x20); - } - else - { - ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - text[3] = CHAR_SLASH; - text[4] = EOS; - windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId); - FillHealthboxObject(objVram, 0, 3); // Erases HP bar leftover. - HpTextIntoHealthboxObject((void *)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3); - RemoveWindowOnHealthbox(windowId); - } + // Erases HP bar leftover. + FillHealthboxObject((void *)(OBJ_VRAM0) + (gSprites[barSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0, 2); } } - else + else // Opponent { - u8 battlerId; - - memcpy(text, sEmptyWhiteText_TransparentHighlight, sizeof(sEmptyWhiteText_TransparentHighlight)); - battlerId = gSprites[healthboxSpriteId].hMain_Battler; - - if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) // don't print text if only bars are visible - { - u8 var = 4; - u8 r7; - u8 *txtPtr; - u8 i; - - if (maxOrCurrent == HP_CURRENT) - var = 0; - - r7 = gSprites[healthboxSpriteId].data[5]; - txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); - if (!maxOrCurrent) - StringCopy(txtPtr, gText_Slash); - RenderTextHandleBold(gMonSpritesGfxPtr->barFontGfx, FONT_BOLD, text); - - for (i = var; i < var + 3; i++) - { - if (i < 3) - { - CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], - (void *)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)), - 0x20); - } - else - { - CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32], - (void *)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)), - 0x20); - } - } - - if (maxOrCurrent == HP_CURRENT) - { - CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224], - (void *)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)), - 0x20); - CpuFill32(0, (void *)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20); - } - else - { - if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side. - { - CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END), - (void *)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP), - 0x20); - } - } - } + UpdateOpponentHpTextDoubles(healthboxSpriteId, barSpriteId, maxHp, HP_MAX); + UpdateOpponentHpTextDoubles(healthboxSpriteId, barSpriteId, currHp, HP_CURRENT); } } @@ -1355,8 +1328,7 @@ static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon) void SwapHpBarsWithHpText(void) { - s32 i; - u8 healthBarSpriteId; + u32 healthBarSpriteId, i; for (i = 0; i < gBattlersCount; i++) { @@ -1364,6 +1336,8 @@ void SwapHpBarsWithHpText(void) && GetBattlerSide(i) != B_SIDE_OPPONENT && (IsDoubleBattle() || GetBattlerSide(i) != B_SIDE_PLAYER)) { + s32 currHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP); + s32 maxHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP); bool8 noBars; gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1; @@ -1380,8 +1354,7 @@ void SwapHpBarsWithHpText(void) healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId; CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x100); - UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT); - UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX); + UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], HP_BOTH, currHp, maxHp); } else // text to bars { @@ -1404,8 +1377,7 @@ void SwapHpBarsWithHpText(void) healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId; CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 0x100); - UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT); - UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX); + UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], HP_BOTH, currHp, maxHp); } } else // text to bars @@ -2361,28 +2333,31 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId) void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId) { - s32 maxHp, currHp; - u8 battlerId = gSprites[healthboxSpriteId].hMain_Battler; + u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler; + s32 maxHp = GetMonData(mon, MON_DATA_MAX_HP); + s32 currHp = GetMonData(mon, MON_DATA_HP); - if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) { - u8 isDoubles; + u8 isDoubles = IsDoubleBattle(); if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); - if (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT); - if (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX); + + if (elementId == HEALTHBOX_ALL) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_BOTH, currHp, maxHp); + else if (elementId == HEALTHBOX_MAX_HP) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_MAX, currHp, maxHp); + else if (elementId == HEALTHBOX_CURRENT_HP) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_CURRENT, currHp, maxHp); + if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) { LoadBattleBarGfx(0); - maxHp = GetMonData(mon, MON_DATA_MAX_HP); - currHp = GetMonData(mon, MON_DATA_HP); SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0); MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0); } - isDoubles = IsDoubleBattle(); + if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL)) { u16 species; @@ -2413,15 +2388,18 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem { if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); - if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars && (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL)) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT); - if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars && (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL)) - UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX); + if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) + { + if (elementId == HEALTHBOX_ALL) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_BOTH, currHp, maxHp); + else if (elementId == HEALTHBOX_MAX_HP) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_MAX, currHp, maxHp); + else if (elementId == HEALTHBOX_CURRENT_HP) + UpdateHpTextInHealthbox(healthboxSpriteId, HP_CURRENT, currHp, maxHp); + } if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) { LoadBattleBarGfx(0); - maxHp = GetMonData(mon, MON_DATA_MAX_HP); - currHp = GetMonData(mon, MON_DATA_HP); SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0); MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0); } @@ -3196,7 +3174,7 @@ void UpdateAbilityPopup(u8 battlerId) u8 spriteId1 = gBattleStruct->abilityPopUpSpriteIds[battlerId][0]; u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battlerId][1]; u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battlerId].ability; - + ClearAbilityName(spriteId1, spriteId2); PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2); RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32)); @@ -3382,7 +3360,7 @@ static void DestroyLastUsedBallGfx(struct Sprite *sprite) } static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_BALL_WIN_X_0) @@ -3399,7 +3377,7 @@ static void SpriteCB_LastUsedBallWin(struct Sprite *sprite) } static void SpriteCB_LastUsedBall(struct Sprite *sprite) -{ +{ if (sprite->sHide) { if (sprite->x != LAST_USED_BALL_X_0) diff --git a/src/party_menu.c b/src/party_menu.c index db20e0932c..34a95d5e33 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2365,7 +2365,7 @@ static void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox static void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) { - u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 3); + u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 4); strOut[0] = CHAR_SLASH; strOut[1] = EOS; @@ -2386,7 +2386,7 @@ static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuB static void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) { - ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 4); StringCopy(gStringVar1, gText_Slash); StringAppend(gStringVar1, gStringVar2); DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); From 23bf67c63ffd46258f8a435314c8fb67213cd9b6 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 11:43:01 -0300 Subject: [PATCH 111/271] Removed unnecessary inclusion of header in src/field_specials.c --- src/field_specials.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/field_specials.c b/src/field_specials.c index 9a2742b70b..6aa62d22f4 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -65,7 +65,6 @@ #include "constants/weather.h" #include "constants/metatile_labels.h" #include "palette.h" -#include "constants/pokemon.h" EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; EWRAM_DATA u8 gBikeCollisions = 0; From 1fc63c34313a4d7ec4f44b57d928ffa95c5c10d6 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 11:52:21 -0300 Subject: [PATCH 112/271] More review corrections --- data/battle_anim_scripts.s | 8 ++++---- include/constants/battle.h | 2 +- include/constants/battle_anim.h | 2 +- src/battle_util.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 572052f5d2..da1e45b232 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -868,7 +868,7 @@ gBattleAnims_General:: .4byte General_AquaRingHeal @ B_ANIM_AQUA_RING_HEAL .4byte General_BeakBlastSetUp @ B_ANIM_BEAK_BLAST_SETUP .4byte General_ShellTrapSetUp @ B_ANIM_SHELL_TRAP_SETUP - .4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE + .4byte General_ZMoveActivate @ B_ANIM_ZMOVE_ACTIVATE .4byte General_AffectionHangedOn @ B_ANIM_AFFECTION_HANGED_ON .align 2 @@ -24885,12 +24885,12 @@ PrimalReversionParticles: delay 3 return -General_AffectionHangedOn:: @ Shameless copy of General_HangedOn - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, RGB_RED +General_AffectionHangedOn:: @ TODO: Make new animation, currenty a copy of General_HangedOn. + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, RGB_RED + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 diff --git a/include/constants/battle.h b/include/constants/battle.h index 7019befc32..048c98dfcb 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -259,8 +259,8 @@ #define MOVE_RESULT_FOE_ENDURED (1 << 6) #define MOVE_RESULT_FOE_HUNG_ON (1 << 7) #define MOVE_RESULT_STURDIED (1 << 8) -#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) #define MOVE_RESULT_FOE_ENDURED_AFFECTION (1 << 9) +#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED) // Battle Weather flags #define B_WEATHER_RAIN_TEMPORARY (1 << 0) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 28bcb283d4..f6e1bed716 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -536,7 +536,7 @@ #define B_ANIM_BEAK_BLAST_SETUP 33 #define B_ANIM_SHELL_TRAP_SETUP 34 #define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves -#define B_ANIM_AFFECTION_HANGED_ON 36 +#define B_ANIM_AFFECTION_HANGED_ON 36 // TODO: Make new animation, currently a copy of B_ANIM_HANGED_ON. // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 diff --git a/src/battle_util.c b/src/battle_util.c index b5d55df055..e473b02f69 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2581,10 +2581,10 @@ u8 DoFieldEndTurnEffects(void) gSideTimers[B_SIDE_OPPONENT].retaliateTimer--; gBattleStruct->turnCountersTracker++; break; - #if B_AFFECTION_MECHANICS == TRUE case ENDTURN_STATUS_HEAL: for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { + #if B_AFFECTION_MECHANICS == TRUE if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_GE_150 && (Random() % 100 < 20)) @@ -2593,10 +2593,10 @@ u8 DoFieldEndTurnEffects(void) BattleScriptExecute(BattleScript_AffectionBasedStatusHeal); break; } + #endif } gBattleStruct->turnCountersTracker++; break; - #endif case ENDTURN_FIELD_COUNT: effect++; break; From 63370b065d633cc2ca21293e9b31a4ec1fb1081b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 25 Aug 2022 17:31:14 +0200 Subject: [PATCH 113/271] Party menu supports 4digit hp --- src/party_menu.c | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index 34a95d5e33..ca770f93bd 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -270,7 +270,7 @@ static u8 CanMonLearnTMTutor(struct Pokemon *, u16, u8); static void DisplayPartyPokemonBarDetail(u8, const u8 *, u8, const u8 *); static void DisplayPartyPokemonLevel(u8, struct PartyMenuBox *); static void DisplayPartyPokemonGender(u8, u16, u8 *, struct PartyMenuBox *); -static void DisplayPartyPokemonHP(u16, struct PartyMenuBox *); +static void DisplayPartyPokemonHP(u16 hp, u16 maxHp, struct PartyMenuBox *menuBox); static void DisplayPartyPokemonMaxHP(u16, struct PartyMenuBox *); static void DisplayPartyPokemonHPBar(u16, u16, struct PartyMenuBox *); static void CreatePartyMonIconSpriteParameterized(u16, u32, struct PartyMenuBox *, u8); @@ -1032,7 +1032,7 @@ static void DisplayPartyPokemonDataForMultiBattle(u8 slot) DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, menuBox->infoRects->dimensions); DisplayPartyPokemonLevel(gMultiPartnerParty[actualSlot].level, menuBox); DisplayPartyPokemonGender(gMultiPartnerParty[actualSlot].gender, gMultiPartnerParty[actualSlot].species, gMultiPartnerParty[actualSlot].nickname, menuBox); - DisplayPartyPokemonHP(gMultiPartnerParty[actualSlot].hp, menuBox); + DisplayPartyPokemonHP(gMultiPartnerParty[actualSlot].hp, gMultiPartnerParty[actualSlot].maxhp, menuBox); DisplayPartyPokemonMaxHP(gMultiPartnerParty[actualSlot].maxhp, menuBox); DisplayPartyPokemonHPBar(gMultiPartnerParty[actualSlot].hp, gMultiPartnerParty[actualSlot].maxhp, menuBox); } @@ -2359,18 +2359,31 @@ static void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox if (c != 0) menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[12] >> 3, (menuBox->infoRects->dimensions[13] >> 3) + 1, menuBox->infoRects->dimensions[14] >> 3, menuBox->infoRects->dimensions[15] >> 3, FALSE); if (c != 2) - DisplayPartyPokemonHP(GetMonData(mon, MON_DATA_HP), menuBox); + DisplayPartyPokemonHP(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), menuBox); } } -static void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) +static void DisplayParty4DigitsHP(struct PartyMenuBox *menuBox, const u8 *str, const u8 *origAlings, u32 toSub) { - u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 4); + u8 newAligns[4]; + + memcpy(newAligns, origAlings, sizeof(newAligns)); + newAligns[0] -= toSub; // x, so that the hp fits + DisplayPartyPokemonBarDetail(menuBox->windowId, str, 0, newAligns); +} + +static void DisplayPartyPokemonHP(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) +{ + bool32 fourDigits = (maxhp >= 1000); + u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, fourDigits ? 4 : 3); strOut[0] = CHAR_SLASH; strOut[1] = EOS; - DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[12]); + if (fourDigits) + DisplayParty4DigitsHP(menuBox, gStringVar1, &menuBox->infoRects->dimensions[12], 10); + else + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[12]); } static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) @@ -2386,10 +2399,16 @@ static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuB static void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) { - ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 4); + bool32 fourDigits = (maxhp >= 1000); + + ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, fourDigits ? 4 : 3); StringCopy(gStringVar1, gText_Slash); StringAppend(gStringVar1, gStringVar2); - DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); + + if (fourDigits) + DisplayParty4DigitsHP(menuBox, gStringVar1, &menuBox->infoRects->dimensions[16], 5); + else + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); } static void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox) From 1b9c2816c28ca31e5e7e100500ea1360459b4465 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 25 Aug 2022 17:37:47 +0200 Subject: [PATCH 114/271] fix updatehptextinhealthbox arguments --- src/battle_controller_link_opponent.c | 2 +- src/battle_controller_link_partner.c | 2 +- src/battle_controller_opponent.c | 8 ++++---- src/battle_controller_player_partner.c | 4 ++-- src/battle_controller_recorded_opponent.c | 2 +- src/battle_controller_recorded_player.c | 4 ++-- src/battle_controller_wally.c | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 833925550a..26ee356c34 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -392,7 +392,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 6a0ecb2976..4afa2cb18e 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -278,7 +278,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index a503c1c7aa..760fbf3203 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -410,7 +410,7 @@ static void CompleteOnHealthbarDone(void) SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else OpponentBufferExecCompleted(); @@ -1588,9 +1588,9 @@ static void OpponentHandleChooseMove(void) gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - } + } if (ShouldUseZMove(gActiveBattler, gBattlerTarget, chosenMove)) - QueueZMove(gActiveBattler, chosenMove); + QueueZMove(gActiveBattler, chosenMove); if (CanMegaEvolve(gActiveBattler)) // If opponent can mega evolve, do it. BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8)); else @@ -1617,7 +1617,7 @@ static void OpponentHandleChooseMove(void) do { target = GetBattlerAtPosition(Random() & 2); } while (!CanTargetBattler(gActiveBattler, target, move)); - + #if B_WILD_NATURAL_ENEMIES == TRUE // Don't bother to loop through table if the move can't attack ally if (!(gBattleMoves[move].target & MOVE_TARGET_BOTH)) diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index a868d09c03..f29bd1b871 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -292,7 +292,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { @@ -1528,7 +1528,7 @@ static void PlayerPartnerHandleChooseMove(void) if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); } - + if (ShouldUseZMove(gActiveBattler, gBattlerTarget, moveInfo->moves[chosenMoveId])) QueueZMove(gActiveBattler, moveInfo->moves[chosenMoveId]); diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 3f5e1cf7f9..14efa76c22 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -376,7 +376,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index b02f171f98..0d531db92c 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -351,7 +351,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { @@ -1481,7 +1481,7 @@ static void RecordedPlayerHandleHealthBarUpdate(void) u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, 0, maxHP); } gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 9728376df2..0b480a23ac 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -352,7 +352,7 @@ static void CompleteOnHealthbarDone(void) if (hpValue != -1) { - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, hpValue, gBattleMons[gActiveBattler].maxHP); } else { @@ -1277,7 +1277,7 @@ static void WallyHandleHealthBarUpdate(void) u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); - UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], HP_CURRENT, 0, maxHP); } gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; From 1bfff42ad2c0afa88f13694812747b92d156acfc Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 12:38:47 -0300 Subject: [PATCH 115/271] Fixed ENDTURN_STATUS_HEAL --- src/battle_util.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index e473b02f69..eb93f45eec 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2131,9 +2131,7 @@ enum ENDTURN_ION_DELUGE, ENDTURN_FAIRY_LOCK, ENDTURN_RETALIATE, -#if B_AFFECTION_MECHANICS == TRUE ENDTURN_STATUS_HEAL, -#endif ENDTURN_FIELD_COUNT, }; From 5dd143f19d4da6d7de2f88bbdea2281e3b9d7f8a Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 13:07:52 -0300 Subject: [PATCH 116/271] Applied Blackforest's changes to General_AffectionHangedOn --- data/battle_anim_scripts.s | 19 +++++++++++-------- include/constants/battle_anim.h | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index da1e45b232..a84796cc55 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24885,15 +24885,18 @@ PrimalReversionParticles: delay 3 return -General_AffectionHangedOn:: @ TODO: Make new animation, currenty a copy of General_HangedOn. - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED - playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER - createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 +General_AffectionHangedOn:: + loadspritegfx ANIM_TAG_RED_HEART + loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 + createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER + delay 15 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -384, -31 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED - waitforvisualfinish - delay 6 - createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 end SnatchMoveTrySwapFromSubstitute: diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index f6e1bed716..28bcb283d4 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -536,7 +536,7 @@ #define B_ANIM_BEAK_BLAST_SETUP 33 #define B_ANIM_SHELL_TRAP_SETUP 34 #define B_ANIM_ZMOVE_ACTIVATE 35 // Using Z Moves -#define B_ANIM_AFFECTION_HANGED_ON 36 // TODO: Make new animation, currently a copy of B_ANIM_HANGED_ON. +#define B_ANIM_AFFECTION_HANGED_ON 36 // special animations table (gBattleAnims_Special) #define B_ANIM_LVL_UP 0 From 75390519425008f54d48e1a7ab8ba948e42a3f46 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 13:28:13 -0300 Subject: [PATCH 117/271] Further tweaked the affection animation --- data/battle_anim_scripts.s | 28 ++++++++++++++++++++++++++++ src/battle_anim_new.c | 26 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index a84796cc55..b00cd0aaf3 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24890,6 +24890,13 @@ General_AffectionHangedOn:: loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 + launchtask AnimTask_AffectionHangedOn 0x5 0x0 + jumpargeq 0x0, FRIENDSHIP_MAX, General_AffectionHangedOn_6Hearts + jumpargeq 0x0, FRIENDSHIP_GE_200, General_AffectionHangedOn_5Hearts + jumpargeq 0x0, FRIENDSHIP_GE_150, General_AffectionHangedOn_4Hearts + jumpargeq 0x0, FRIENDSHIP_GE_100, General_AffectionHangedOn_3Hearts + end +General_AffectionHangedOn_6Hearts: createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 @@ -24898,6 +24905,27 @@ General_AffectionHangedOn:: createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -384, -31 waitforvisualfinish end +General_AffectionHangedOn_5Hearts: + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22 + waitforvisualfinish + end +General_AffectionHangedOn_4Hearts: + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 + waitforvisualfinish + end +General_AffectionHangedOn_3Hearts: + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 + createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 + waitforvisualfinish + end SnatchMoveTrySwapFromSubstitute: createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 96faf23dd7..6079889d1b 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -18,6 +18,7 @@ #include "constants/moves.h" #include "constants/hold_effects.h" #include "constants/items.h" +#include "constants/pokemon.h" // function declarations static void SpriteCB_SpriteToCentreOfSide(struct Sprite* sprite); @@ -7895,3 +7896,28 @@ void AnimTask_TerrainPulse(u8 taskId) } DestroyAnimVisualTask(taskId); } + +void AnimTask_AffectionHangedOn(u8 taskId) +{ + int side = GetBattlerSide(gBattleAnimTarget); + struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; + + switch (GetMonFriendshipScore(&party[gBattlerPartyIndexes[gBattleAnimTarget]])) + { + case FRIENDSHIP_MAX: + gBattleAnimArgs[0] = FRIENDSHIP_MAX; + break; + case FRIENDSHIP_GE_200: + gBattleAnimArgs[0] = FRIENDSHIP_GE_200; + break; + case FRIENDSHIP_GE_150: + gBattleAnimArgs[0] = FRIENDSHIP_GE_150; + break; + case FRIENDSHIP_GE_100: + gBattleAnimArgs[0] = FRIENDSHIP_GE_100; + break; + default: + break; + } + DestroyAnimVisualTask(taskId); +} From 2cf2c00b29dfe058a6c81eadab71d1788aa1c5a9 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 17:10:11 -0300 Subject: [PATCH 118/271] Updated friendship labels --- data/battle_anim_scripts.s | 6 +++--- include/constants/pokemon.h | 14 +++++++------- src/battle_anim_new.c | 12 ++++++------ src/battle_script_commands.c | 14 +++++++------- src/battle_util.c | 12 ++++++------ 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index b00cd0aaf3..0649fe50b1 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24892,9 +24892,9 @@ General_AffectionHangedOn:: delay 15 launchtask AnimTask_AffectionHangedOn 0x5 0x0 jumpargeq 0x0, FRIENDSHIP_MAX, General_AffectionHangedOn_6Hearts - jumpargeq 0x0, FRIENDSHIP_GE_200, General_AffectionHangedOn_5Hearts - jumpargeq 0x0, FRIENDSHIP_GE_150, General_AffectionHangedOn_4Hearts - jumpargeq 0x0, FRIENDSHIP_GE_100, General_AffectionHangedOn_3Hearts + jumpargeq 0x0, FRIENDSHIP_200_TO_254, General_AffectionHangedOn_5Hearts + jumpargeq 0x0, FRIENDSHIP_150_TO_199, General_AffectionHangedOn_4Hearts + jumpargeq 0x0, FRIENDSHIP_100_TO_149, General_AffectionHangedOn_3Hearts end General_AffectionHangedOn_6Hearts: createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index dc8955656c..355b43b1a3 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -274,13 +274,13 @@ #define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint // Constants for GetLeadMonFriendshipScore -#define FRIENDSHIP_NONE 0 -#define FRIENDSHIP_GE_1 1 -#define FRIENDSHIP_GE_50 2 -#define FRIENDSHIP_GE_100 3 -#define FRIENDSHIP_GE_150 4 -#define FRIENDSHIP_GE_200 5 -#define FRIENDSHIP_MAX 6 +#define FRIENDSHIP_NONE 0 +#define FRIENDSHIP_1_TO_49 1 +#define FRIENDSHIP_50_TO_99 2 +#define FRIENDSHIP_100_TO_149 3 +#define FRIENDSHIP_150_TO_199 4 +#define FRIENDSHIP_200_TO_254 5 +#define FRIENDSHIP_MAX 6 #define MAX_FRIENDSHIP 255 #define MAX_SHEEN 255 diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 6079889d1b..4e47def939 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7907,14 +7907,14 @@ void AnimTask_AffectionHangedOn(u8 taskId) case FRIENDSHIP_MAX: gBattleAnimArgs[0] = FRIENDSHIP_MAX; break; - case FRIENDSHIP_GE_200: - gBattleAnimArgs[0] = FRIENDSHIP_GE_200; + case FRIENDSHIP_200_TO_254: + gBattleAnimArgs[0] = FRIENDSHIP_200_TO_254; break; - case FRIENDSHIP_GE_150: - gBattleAnimArgs[0] = FRIENDSHIP_GE_150; + case FRIENDSHIP_150_TO_199: + gBattleAnimArgs[0] = FRIENDSHIP_150_TO_199; break; - case FRIENDSHIP_GE_100: - gBattleAnimArgs[0] = FRIENDSHIP_GE_100; + case FRIENDSHIP_100_TO_149: + gBattleAnimArgs[0] = FRIENDSHIP_100_TO_149; break; default: break; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6182e09bab..47b0b2cab7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1733,7 +1733,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u #if B_AFFECTION_MECHANICS == TRUE // With high affection/friendship there's a chance to evade a move by substracting 10% of its accuracy. // I can't find exact information about that chance, so I'm just gonna write it as a 20% chance for now. - if (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[battlerDef]]) >= FRIENDSHIP_GE_150 && (Random() % 100) <= 20) + if (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[battlerDef]]) >= FRIENDSHIP_150_TO_199 && (Random() % 100) <= 20) calc = (calc * 90) / 100; #endif @@ -1905,7 +1905,7 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi + 2 * (holdEffectAtk == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY) + 2 * BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk) #if B_AFFECTION_MECHANICS == TRUE - + 2 * (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_GE_200) + + 2 * (GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_200_TO_254) #endif + (abilityAtk == ABILITY_SUPER_LUCK); @@ -2010,12 +2010,12 @@ static void Cmd_adjustdamage(void) gSpecialStatuses[gBattlerTarget].focusSashed = TRUE; } #if B_AFFECTION_MECHANICS == TRUE - else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && friendshipScore >= FRIENDSHIP_GE_100) + else if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER && friendshipScore >= FRIENDSHIP_100_TO_149) { if ((friendshipScore == FRIENDSHIP_MAX && rand < 25) - || (friendshipScore == FRIENDSHIP_GE_200 && rand < 20) - || (friendshipScore == FRIENDSHIP_GE_150 && rand < 15) - || (friendshipScore == FRIENDSHIP_GE_100 && rand < 10)) + || (friendshipScore == FRIENDSHIP_200_TO_254 && rand < 20) + || (friendshipScore == FRIENDSHIP_150_TO_199 && rand < 15) + || (friendshipScore == FRIENDSHIP_100_TO_149 && rand < 10)) gSpecialStatuses[gBattlerTarget].affectionEndured = TRUE; } #endif @@ -4062,7 +4062,7 @@ static void Cmd_getexp(void) } #endif #if B_AFFECTION_MECHANICS == TRUE - if (GetMonFriendshipScore(&gPlayerParty[gBattleStruct->expGetterMonId]) >= FRIENDSHIP_GE_50) + if (GetMonFriendshipScore(&gPlayerParty[gBattleStruct->expGetterMonId]) >= FRIENDSHIP_50_TO_99) gBattleMoveDamage = (gBattleMoveDamage * 120) / 100; #endif diff --git a/src/battle_util.c b/src/battle_util.c index eb93f45eec..74893a7099 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2090,15 +2090,15 @@ u32 GetMonFriendshipScore(struct Pokemon *pokemon) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) return FRIENDSHIP_MAX; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) - return FRIENDSHIP_GE_200; + return FRIENDSHIP_200_TO_254; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) - return FRIENDSHIP_GE_150; + return FRIENDSHIP_150_TO_199; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) - return FRIENDSHIP_GE_100; + return FRIENDSHIP_100_TO_149; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) - return FRIENDSHIP_GE_50; + return FRIENDSHIP_50_TO_99; if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) - return FRIENDSHIP_GE_1; + return FRIENDSHIP_1_TO_49; return FRIENDSHIP_NONE; } @@ -2584,7 +2584,7 @@ u8 DoFieldEndTurnEffects(void) { #if B_AFFECTION_MECHANICS == TRUE if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER - && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_GE_150 + && GetMonFriendshipScore(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]) >= FRIENDSHIP_150_TO_199 && (Random() % 100 < 20)) { gBattleCommunication[MULTISTRING_CHOOSER] = 1; From 8bd7103b9d7a39c04775d63c3cc1307ab4b2252f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 17:29:02 -0300 Subject: [PATCH 119/271] Even more review corrections --- data/battle_scripts_1.s | 4 +--- include/battle.h | 2 +- src/battle_anim_new.c | 18 +----------------- src/battle_util.c | 14 ++++++++------ 4 files changed, 11 insertions(+), 27 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 5cdb44597e..4ba190c5c4 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -421,8 +421,7 @@ BattleScript_AffectionBasedEndurance:: return BattleScript_AffectionBasedStatusHeal:: - jumpifstatus BS_ATTACKER, STATUS1_POISON, BattleScript_AffectionBasedStatus_HealPoisonString - jumpifstatus BS_ATTACKER, STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatus_HealPoisonString + jumpifstatus BS_ATTACKER, STATUS1_POISON | STATUS1_TOXIC_POISON, BattleScript_AffectionBasedStatus_HealPoisonString jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_AffectionBasedStatus_HealSleepString jumpifstatus BS_ATTACKER, STATUS1_PARALYSIS, BattleScript_AffectionBasedStatus_HealParalysisString jumpifstatus BS_ATTACKER, STATUS1_BURN, BattleScript_AffectionBasedStatus_HealBurnString @@ -442,7 +441,6 @@ BattleScript_AffectionBasedStatus_HealBurnString: goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatus_HealFreezeString: printstring STRINGID_ATTACKERMELTEDTHEICE - goto BattleScript_AffectionBasedStatusHeal_Continue BattleScript_AffectionBasedStatusHeal_Continue: waitmessage B_WAIT_TIME_LONG clearstatus BS_ATTACKER diff --git a/include/battle.h b/include/battle.h index 7176b73780..ed77992ab5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -178,13 +178,13 @@ struct SpecialStatus u8 dancerOriginalTarget:3; u8 announceNeutralizingGas:1; // See Cmd_switchineffects u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS + u8 affectionEndured:1; s32 dmg; s32 physicalDmg; s32 specialDmg; u8 physicalBattlerId; u8 specialBattlerId; u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. - bool8 affectionEndured:1; }; struct SideTimer diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 4e47def939..b6cc48b918 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -7902,22 +7902,6 @@ void AnimTask_AffectionHangedOn(u8 taskId) int side = GetBattlerSide(gBattleAnimTarget); struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - switch (GetMonFriendshipScore(&party[gBattlerPartyIndexes[gBattleAnimTarget]])) - { - case FRIENDSHIP_MAX: - gBattleAnimArgs[0] = FRIENDSHIP_MAX; - break; - case FRIENDSHIP_200_TO_254: - gBattleAnimArgs[0] = FRIENDSHIP_200_TO_254; - break; - case FRIENDSHIP_150_TO_199: - gBattleAnimArgs[0] = FRIENDSHIP_150_TO_199; - break; - case FRIENDSHIP_100_TO_149: - gBattleAnimArgs[0] = FRIENDSHIP_100_TO_149; - break; - default: - break; - } + gBattleAnimArgs[0] = GetMonFriendshipScore(&party[gBattlerPartyIndexes[gBattleAnimTarget]]); DestroyAnimVisualTask(taskId); } diff --git a/src/battle_util.c b/src/battle_util.c index 74893a7099..dbdecfb178 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -2087,17 +2087,19 @@ void TryToRevertMimicry(void) u32 GetMonFriendshipScore(struct Pokemon *pokemon) { - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) + u32 friendshipScore = GetMonData(pokemon, MON_DATA_FRIENDSHIP); + + if (friendshipScore == MAX_FRIENDSHIP) return FRIENDSHIP_MAX; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) + if (friendshipScore >= 200) return FRIENDSHIP_200_TO_254; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) + if (friendshipScore >= 150) return FRIENDSHIP_150_TO_199; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) + if (friendshipScore >= 100) return FRIENDSHIP_100_TO_149; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) + if (friendshipScore >= 50) return FRIENDSHIP_50_TO_99; - if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) + if (friendshipScore >= 1) return FRIENDSHIP_1_TO_49; return FRIENDSHIP_NONE; From e204527f439824689bb873e2f451cf2321e5025f Mon Sep 17 00:00:00 2001 From: AgustinGDLV Date: Thu, 25 Aug 2022 15:52:47 -0700 Subject: [PATCH 120/271] changed candy item parameters --- include/constants/items.h | 7 +++++++ src/data/items.h | 12 ++++++------ src/party_menu.c | 2 +- src/pokemon.c | 15 +++++++++++---- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/include/constants/items.h b/include/constants/items.h index 5413a7afef..b6dbc7329b 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -973,6 +973,13 @@ #define MACH_BIKE 0 #define ACRO_BIKE 1 +// Item parameters for EXP Candies +#define EXP_100 1 +#define EXP_800 2 +#define EXP_3000 3 +#define EXP_10000 4 +#define EXP_30000 5 + // Item type IDs (used to determine the exit callback) #define ITEM_USE_MAIL 0 #define ITEM_USE_PARTY_MENU 1 diff --git a/src/data/items.h b/src/data/items.h index 8d08f0fde8..f4be3c6dcb 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1359,7 +1359,7 @@ const struct Item gItems[] = .name = _("Rare Candy"), .itemId = ITEM_RARE_CANDY, .price = 10000, - .holdEffectParam = 0xFF, + .holdEffectParam = 0, .description = sRareCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1372,7 +1372,7 @@ const struct Item gItems[] = .name = _("Exp.Candy XS"), .itemId = ITEM_EXP_CANDY_XS, .price = 20, - .holdEffectParam = 0, + .holdEffectParam = EXP_100, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1385,7 +1385,7 @@ const struct Item gItems[] = .name = _("Exp.Candy S"), .itemId = ITEM_EXP_CANDY_S, .price = 240, - .holdEffectParam = 1, + .holdEffectParam = EXP_800, .description = sExpCandyXSDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1398,7 +1398,7 @@ const struct Item gItems[] = .name = _("Exp.Candy M"), .itemId = ITEM_EXP_CANDY_M, .price = 1000, - .holdEffectParam = 2, + .holdEffectParam = EXP_3000, .description = sExpCandyMDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1411,7 +1411,7 @@ const struct Item gItems[] = .name = _("Exp.Candy L"), .itemId = ITEM_EXP_CANDY_L, .price = 3000, - .holdEffectParam = 3, + .holdEffectParam = EXP_10000, .description = sExpCandyLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1424,7 +1424,7 @@ const struct Item gItems[] = .name = _("Exp.Candy XL"), .itemId = ITEM_EXP_CANDY_XL, .price = 10000, - .holdEffectParam = 4, + .holdEffectParam = EXP_30000, .description = sExpCandyXLDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, diff --git a/src/party_menu.c b/src/party_menu.c index 07d4d9a155..abfcc05512 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5012,7 +5012,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) if (sFinalLevel > sInitialLevel) { PlayFanfareByFanfareNum(FANFARE_LEVEL_UP); - ConvertIntToDecimalStringN(gStringVar2, GetMonData(mon, MON_DATA_LEVEL), STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, sFinalLevel, STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); diff --git a/src/pokemon.c b/src/pokemon.c index ca519729d5..956a870686 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4709,7 +4709,13 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } // EXP candies store an index for this table in their holdEffectParam. -static const u32 sExpCandyExperienceTable[] = {100, 800, 3000, 10000, 30000}; +static const u32 sExpCandyExperienceTable[] = { + [EXP_100 - 1] = 100, + [EXP_800 - 1] = 800, + [EXP_3000 - 1] = 3000, + [EXP_10000 - 1] = 10000, + [EXP_30000 - 1] = 30000, +}; // Returns TRUE if the item has no effect on the Pokémon, FALSE otherwise bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, bool8 usedByAI) @@ -4881,15 +4887,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { u8 param = ItemId_GetHoldEffectParam(item); - if (param == 0xFF) // Rare Candy + if (param == 0) // Rare Candy { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; } else if (param < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies { + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); dataUnsigned = sExpCandyExperienceTable[param] + GetMonData(mon, MON_DATA_EXP, NULL); - if (dataUnsigned > gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]) - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][MAX_LEVEL]; + if (dataUnsigned > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) + dataUnsigned = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; } SetMonData(mon, MON_DATA_EXP, &dataUnsigned); CalculateMonStats(mon); From 410045028ab765cf9006e3f3c75b2d5b15440f48 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 25 Aug 2022 20:01:14 -0300 Subject: [PATCH 121/271] Optimized General_AffectionHangedOn --- data/battle_anim_scripts.s | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 0649fe50b1..a7e3f34612 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24891,35 +24891,14 @@ General_AffectionHangedOn:: createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 launchtask AnimTask_AffectionHangedOn 0x5 0x0 - jumpargeq 0x0, FRIENDSHIP_MAX, General_AffectionHangedOn_6Hearts - jumpargeq 0x0, FRIENDSHIP_200_TO_254, General_AffectionHangedOn_5Hearts - jumpargeq 0x0, FRIENDSHIP_150_TO_199, General_AffectionHangedOn_4Hearts jumpargeq 0x0, FRIENDSHIP_100_TO_149, General_AffectionHangedOn_3Hearts - end -General_AffectionHangedOn_6Hearts: - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22 + jumpargeq 0x0, FRIENDSHIP_150_TO_199, General_AffectionHangedOn_4Hearts + jumpargeq 0x0, FRIENDSHIP_200_TO_254, General_AffectionHangedOn_5Hearts createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -384, -31 - waitforvisualfinish - end General_AffectionHangedOn_5Hearts: - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -128, -22 - waitforvisualfinish - end General_AffectionHangedOn_4Hearts: - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 - createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 128, -16 createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 416, -38 - waitforvisualfinish - end General_AffectionHangedOn_3Hearts: createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, 160, -32 createsprite gRedHeartBurstSpriteTemplate, ANIM_ATTACKER, 3, -256, -40 From ed02c4b425028a4fe2cf622653f352ec10914736 Mon Sep 17 00:00:00 2001 From: crater-git Date: Thu, 25 Aug 2022 19:56:47 -0400 Subject: [PATCH 122/271] Removed tutor move distinction, combined llists --- data/scripts/move_tutors.inc | 20 +- include/constants/party_menu.h | 32 +- include/party_menu.h | 2 - include/pokemon.h | 6 +- src/apprentice.c | 2 +- src/data/pokemon/teach_learnset_pointers.h | 1279 + src/data/pokemon/teach_learnsets.h | 33464 +++++++++++++++++++ src/data/pokemon/tmhm_learnset_pointers.h | 1279 - src/data/pokemon/tmhm_learnsets.h | 28121 ---------------- src/data/pokemon/tutor_learnsets.h | 10595 ------ src/daycare.c | 2 +- src/field_specials.c | 4 +- src/party_menu.c | 75 +- src/pokemon.c | 16 +- 14 files changed, 34790 insertions(+), 40107 deletions(-) create mode 100644 src/data/pokemon/teach_learnset_pointers.h create mode 100644 src/data/pokemon/teach_learnsets.h delete mode 100644 src/data/pokemon/tmhm_learnset_pointers.h delete mode 100644 src/data/pokemon/tmhm_learnsets.h delete mode 100644 src/data/pokemon/tutor_learnsets.h diff --git a/data/scripts/move_tutors.inc b/data/scripts/move_tutors.inc index 4155969a02..afb772bb10 100644 --- a/data/scripts/move_tutors.inc +++ b/data/scripts/move_tutors.inc @@ -7,7 +7,7 @@ SlateportCity_PokemonFanClub_EventScript_SwaggerTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SwaggerDeclined msgbox MoveTutor_Text_SwaggerWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_SWAGGER + setvar VAR_0x8005, MOVE_SWAGGER call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SwaggerDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_SWAGGER @@ -33,7 +33,7 @@ MauvilleCity_EventScript_RolloutTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_RolloutDeclined msgbox MoveTutor_Text_RolloutWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_ROLLOUT + setvar VAR_0x8005, MOVE_ROLLOUT call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_RolloutDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_ROLLOUT @@ -59,7 +59,7 @@ VerdanturfTown_PokemonCenter_1F_EventScript_FuryCutterTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_FuryCutterDeclined msgbox MoveTutor_Text_FuryCutterWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_FURY_CUTTER + setvar VAR_0x8005, MOVE_FURY_CUTTER call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_FuryCutterDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_FURY_CUTTER @@ -85,7 +85,7 @@ LavaridgeTown_House_EventScript_MimicTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MimicDeclined msgbox MoveTutor_Text_MimicWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_MIMIC + setvar VAR_0x8005, MOVE_MIMIC call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_MimicDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_MIMIC @@ -111,7 +111,7 @@ FallarborTown_Mart_EventScript_MetronomeTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MetronomeDeclined msgbox MoveTutor_Text_MetronomeWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_METRONOME + setvar VAR_0x8005, MOVE_METRONOME call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_MetronomeDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_METRONOME @@ -137,7 +137,7 @@ FortreeCity_House2_EventScript_SleepTalkTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SleepTalkDeclined msgbox MoveTutor_Text_SleepTalkWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_SLEEP_TALK + setvar VAR_0x8005, MOVE_SLEEP_TALK call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SleepTalkDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_SLEEP_TALK @@ -163,7 +163,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_SubstituteTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SubstituteDeclined msgbox MoveTutor_Text_SubstituteWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_SUBSTITUTE + setvar VAR_0x8005, MOVE_SUBSTITUTE call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SubstituteDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_SUBSTITUTE @@ -189,7 +189,7 @@ MossdeepCity_EventScript_DynamicPunchTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DynamicPunchDeclined msgbox MoveTutor_Text_DynamicPunchWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_DYNAMIC_PUNCH + setvar VAR_0x8005, MOVE_DYNAMIC_PUNCH call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_DynamicPunchDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_DYNAMICPUNCH @@ -215,7 +215,7 @@ SootopolisCity_PokemonCenter_1F_EventScript_DoubleEdgeTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DoubleEdgeDeclined msgbox MoveTutor_Text_DoubleEdgeWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_DOUBLE_EDGE + setvar VAR_0x8005, MOVE_DOUBLE_EDGE call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_DoubleEdgeDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_DOUBLE_EDGE @@ -241,7 +241,7 @@ PacifidlogTown_PokemonCenter_1F_EventScript_ExplosionTutor:: call MoveTutor_EventScript_CanOnlyBeLearnedOnce goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_ExplosionDeclined msgbox MoveTutor_Text_ExplosionWhichMon, MSGBOX_DEFAULT - setvar VAR_0x8005, TUTOR_MOVE_EXPLOSION + setvar VAR_0x8005, MOVE_EXPLOSION call MoveTutor_EventScript_OpenPartyMenu goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_ExplosionDeclined setflag FLAG_MOVE_TUTOR_TAUGHT_EXPLOSION diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index f95bfa90ff..36b68f0631 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -12,37 +12,7 @@ #define AILMENT_PKRS 6 #define AILMENT_FNT 7 -#define TUTOR_MOVE_MEGA_PUNCH 0 -#define TUTOR_MOVE_SWORDS_DANCE 1 -#define TUTOR_MOVE_MEGA_KICK 2 -#define TUTOR_MOVE_BODY_SLAM 3 -#define TUTOR_MOVE_DOUBLE_EDGE 4 -#define TUTOR_MOVE_COUNTER 5 -#define TUTOR_MOVE_SEISMIC_TOSS 6 -#define TUTOR_MOVE_MIMIC 7 -#define TUTOR_MOVE_METRONOME 8 -#define TUTOR_MOVE_SOFT_BOILED 9 -#define TUTOR_MOVE_DREAM_EATER 10 -#define TUTOR_MOVE_THUNDER_WAVE 11 -#define TUTOR_MOVE_EXPLOSION 12 -#define TUTOR_MOVE_ROCK_SLIDE 13 -#define TUTOR_MOVE_SUBSTITUTE 14 -#define TUTOR_MOVE_DYNAMIC_PUNCH 15 -#define TUTOR_MOVE_ROLLOUT 16 -#define TUTOR_MOVE_PSYCH_UP 17 -#define TUTOR_MOVE_SNORE 18 -#define TUTOR_MOVE_ICY_WIND 19 -#define TUTOR_MOVE_ENDURE 20 -#define TUTOR_MOVE_MUD_SLAP 21 -#define TUTOR_MOVE_ICE_PUNCH 22 -#define TUTOR_MOVE_SWAGGER 23 -#define TUTOR_MOVE_SLEEP_TALK 24 -#define TUTOR_MOVE_SWIFT 25 -#define TUTOR_MOVE_DEFENSE_CURL 26 -#define TUTOR_MOVE_THUNDER_PUNCH 27 -#define TUTOR_MOVE_FIRE_PUNCH 28 -#define TUTOR_MOVE_FURY_CUTTER 29 -#define TUTOR_MOVE_COUNT 30 +#define TUTOR_MOVE_COUNT 30 #define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_DOUBLE 1 diff --git a/include/party_menu.h b/include/party_menu.h index 02f7b30b10..b00fd73240 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -29,8 +29,6 @@ extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; extern void (*gItemUseCB)(u8, TaskFunc); -extern const u16 gTutorMoves[]; - void AnimatePartySlot(u8 slot, u8 animNum); bool8 IsMultiBattle(void); u8 GetCursorSelectionMonId(void); diff --git a/include/pokemon.h b/include/pokemon.h index 302b2931ed..92057e9b78 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -397,7 +397,7 @@ extern const struct BaseStats gBaseStats[]; extern const u8 *const gItemEffectTable[]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const struct LevelUpMove *const gLevelUpLearnsets[]; -extern const u16 *const gTMHMLearnsets[]; +extern const u16 *const gTeachLearnsets[]; extern const u8 gPPUpGetMask[]; extern const u8 gPPUpClearMask[]; extern const u8 gPPUpAddValues[]; @@ -510,8 +510,8 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); -u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move); -u32 CanSpeciesLearnTMHM(u16 species, u16 move); +u32 CanMonLearnTaughtMove(struct Pokemon *mon, u16 move); +u32 CanSpeciesLearnTaughtMove(u16 species, u16 move); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); diff --git a/src/apprentice.c b/src/apprentice.c index cceeedb68b..71536065fa 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -376,7 +376,7 @@ static u16 GetRandomAlternateMove(u8 monId) do { id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES); - shouldUseMove = CanSpeciesLearnTMHM(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); + shouldUseMove = CanSpeciesLearnTaughtMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); } while (!shouldUseMove); diff --git a/src/data/pokemon/teach_learnset_pointers.h b/src/data/pokemon/teach_learnset_pointers.h new file mode 100644 index 0000000000..cdb9e1b56d --- /dev/null +++ b/src/data/pokemon/teach_learnset_pointers.h @@ -0,0 +1,1279 @@ +const u16 *const gTeachLearnsets[NUM_SPECIES] = +{ + [SPECIES_NONE] = sBulbasaurTeachLearnset, + [SPECIES_BULBASAUR] = sBulbasaurTeachLearnset, + [SPECIES_IVYSAUR] = sIvysaurTeachLearnset, + [SPECIES_VENUSAUR] = sVenusaurTeachLearnset, + [SPECIES_CHARMANDER] = sCharmanderTeachLearnset, + [SPECIES_CHARMELEON] = sCharmeleonTeachLearnset, + [SPECIES_CHARIZARD] = sCharizardTeachLearnset, + [SPECIES_SQUIRTLE] = sSquirtleTeachLearnset, + [SPECIES_WARTORTLE] = sWartortleTeachLearnset, + [SPECIES_BLASTOISE] = sBlastoiseTeachLearnset, + [SPECIES_CATERPIE] = sCaterpieTeachLearnset, + [SPECIES_METAPOD] = sMetapodTeachLearnset, + [SPECIES_BUTTERFREE] = sButterfreeTeachLearnset, + [SPECIES_WEEDLE] = sWeedleTeachLearnset, + [SPECIES_KAKUNA] = sKakunaTeachLearnset, + [SPECIES_BEEDRILL] = sBeedrillTeachLearnset, + [SPECIES_PIDGEY] = sPidgeyTeachLearnset, + [SPECIES_PIDGEOTTO] = sPidgeottoTeachLearnset, + [SPECIES_PIDGEOT] = sPidgeotTeachLearnset, + [SPECIES_RATTATA] = sRattataTeachLearnset, + [SPECIES_RATICATE] = sRaticateTeachLearnset, + [SPECIES_SPEAROW] = sSpearowTeachLearnset, + [SPECIES_FEAROW] = sFearowTeachLearnset, + [SPECIES_EKANS] = sEkansTeachLearnset, + [SPECIES_ARBOK] = sArbokTeachLearnset, + [SPECIES_PIKACHU] = sPikachuTeachLearnset, + [SPECIES_RAICHU] = sRaichuTeachLearnset, + [SPECIES_SANDSHREW] = sSandshrewTeachLearnset, + [SPECIES_SANDSLASH] = sSandslashTeachLearnset, + [SPECIES_NIDORAN_F] = sNidoranFTeachLearnset, + [SPECIES_NIDORINA] = sNidorinaTeachLearnset, + [SPECIES_NIDOQUEEN] = sNidoqueenTeachLearnset, + [SPECIES_NIDORAN_M] = sNidoranMTeachLearnset, + [SPECIES_NIDORINO] = sNidorinoTeachLearnset, + [SPECIES_NIDOKING] = sNidokingTeachLearnset, + [SPECIES_CLEFAIRY] = sClefairyTeachLearnset, + [SPECIES_CLEFABLE] = sClefableTeachLearnset, + [SPECIES_VULPIX] = sVulpixTeachLearnset, + [SPECIES_NINETALES] = sNinetalesTeachLearnset, + [SPECIES_JIGGLYPUFF] = sJigglypuffTeachLearnset, + [SPECIES_WIGGLYTUFF] = sWigglytuffTeachLearnset, + [SPECIES_ZUBAT] = sZubatTeachLearnset, + [SPECIES_GOLBAT] = sGolbatTeachLearnset, + [SPECIES_ODDISH] = sOddishTeachLearnset, + [SPECIES_GLOOM] = sGloomTeachLearnset, + [SPECIES_VILEPLUME] = sVileplumeTeachLearnset, + [SPECIES_PARAS] = sParasTeachLearnset, + [SPECIES_PARASECT] = sParasectTeachLearnset, + [SPECIES_VENONAT] = sVenonatTeachLearnset, + [SPECIES_VENOMOTH] = sVenomothTeachLearnset, + [SPECIES_DIGLETT] = sDiglettTeachLearnset, + [SPECIES_DUGTRIO] = sDugtrioTeachLearnset, + [SPECIES_MEOWTH] = sMeowthTeachLearnset, + [SPECIES_PERSIAN] = sPersianTeachLearnset, + [SPECIES_PSYDUCK] = sPsyduckTeachLearnset, + [SPECIES_GOLDUCK] = sGolduckTeachLearnset, + [SPECIES_MANKEY] = sMankeyTeachLearnset, + [SPECIES_PRIMEAPE] = sPrimeapeTeachLearnset, + [SPECIES_GROWLITHE] = sGrowlitheTeachLearnset, + [SPECIES_ARCANINE] = sArcanineTeachLearnset, + [SPECIES_POLIWAG] = sPoliwagTeachLearnset, + [SPECIES_POLIWHIRL] = sPoliwhirlTeachLearnset, + [SPECIES_POLIWRATH] = sPoliwrathTeachLearnset, + [SPECIES_ABRA] = sAbraTeachLearnset, + [SPECIES_KADABRA] = sKadabraTeachLearnset, + [SPECIES_ALAKAZAM] = sAlakazamTeachLearnset, + [SPECIES_MACHOP] = sMachopTeachLearnset, + [SPECIES_MACHOKE] = sMachokeTeachLearnset, + [SPECIES_MACHAMP] = sMachampTeachLearnset, + [SPECIES_BELLSPROUT] = sBellsproutTeachLearnset, + [SPECIES_WEEPINBELL] = sWeepinbellTeachLearnset, + [SPECIES_VICTREEBEL] = sVictreebelTeachLearnset, + [SPECIES_TENTACOOL] = sTentacoolTeachLearnset, + [SPECIES_TENTACRUEL] = sTentacruelTeachLearnset, + [SPECIES_GEODUDE] = sGeodudeTeachLearnset, + [SPECIES_GRAVELER] = sGravelerTeachLearnset, + [SPECIES_GOLEM] = sGolemTeachLearnset, + [SPECIES_PONYTA] = sPonytaTeachLearnset, + [SPECIES_RAPIDASH] = sRapidashTeachLearnset, + [SPECIES_SLOWPOKE] = sSlowpokeTeachLearnset, + [SPECIES_SLOWBRO] = sSlowbroTeachLearnset, + [SPECIES_MAGNEMITE] = sMagnemiteTeachLearnset, + [SPECIES_MAGNETON] = sMagnetonTeachLearnset, + [SPECIES_FARFETCHD] = sFarfetchdTeachLearnset, + [SPECIES_DODUO] = sDoduoTeachLearnset, + [SPECIES_DODRIO] = sDodrioTeachLearnset, + [SPECIES_SEEL] = sSeelTeachLearnset, + [SPECIES_DEWGONG] = sDewgongTeachLearnset, + [SPECIES_GRIMER] = sGrimerTeachLearnset, + [SPECIES_MUK] = sMukTeachLearnset, + [SPECIES_SHELLDER] = sShellderTeachLearnset, + [SPECIES_CLOYSTER] = sCloysterTeachLearnset, + [SPECIES_GASTLY] = sGastlyTeachLearnset, + [SPECIES_HAUNTER] = sHaunterTeachLearnset, + [SPECIES_GENGAR] = sGengarTeachLearnset, + [SPECIES_ONIX] = sOnixTeachLearnset, + [SPECIES_DROWZEE] = sDrowzeeTeachLearnset, + [SPECIES_HYPNO] = sHypnoTeachLearnset, + [SPECIES_KRABBY] = sKrabbyTeachLearnset, + [SPECIES_KINGLER] = sKinglerTeachLearnset, + [SPECIES_VOLTORB] = sVoltorbTeachLearnset, + [SPECIES_ELECTRODE] = sElectrodeTeachLearnset, + [SPECIES_EXEGGCUTE] = sExeggcuteTeachLearnset, + [SPECIES_EXEGGUTOR] = sExeggutorTeachLearnset, + [SPECIES_CUBONE] = sCuboneTeachLearnset, + [SPECIES_MAROWAK] = sMarowakTeachLearnset, + [SPECIES_HITMONLEE] = sHitmonleeTeachLearnset, + [SPECIES_HITMONCHAN] = sHitmonchanTeachLearnset, + [SPECIES_LICKITUNG] = sLickitungTeachLearnset, + [SPECIES_KOFFING] = sKoffingTeachLearnset, + [SPECIES_WEEZING] = sWeezingTeachLearnset, + [SPECIES_RHYHORN] = sRhyhornTeachLearnset, + [SPECIES_RHYDON] = sRhydonTeachLearnset, + [SPECIES_CHANSEY] = sChanseyTeachLearnset, + [SPECIES_TANGELA] = sTangelaTeachLearnset, + [SPECIES_KANGASKHAN] = sKangaskhanTeachLearnset, + [SPECIES_HORSEA] = sHorseaTeachLearnset, + [SPECIES_SEADRA] = sSeadraTeachLearnset, + [SPECIES_GOLDEEN] = sGoldeenTeachLearnset, + [SPECIES_SEAKING] = sSeakingTeachLearnset, + [SPECIES_STARYU] = sStaryuTeachLearnset, + [SPECIES_STARMIE] = sStarmieTeachLearnset, + [SPECIES_MR_MIME] = sMrMimeTeachLearnset, + [SPECIES_SCYTHER] = sScytherTeachLearnset, + [SPECIES_JYNX] = sJynxTeachLearnset, + [SPECIES_ELECTABUZZ] = sElectabuzzTeachLearnset, + [SPECIES_MAGMAR] = sMagmarTeachLearnset, + [SPECIES_PINSIR] = sPinsirTeachLearnset, + [SPECIES_TAUROS] = sTaurosTeachLearnset, + [SPECIES_MAGIKARP] = sMagikarpTeachLearnset, + [SPECIES_GYARADOS] = sGyaradosTeachLearnset, + [SPECIES_LAPRAS] = sLaprasTeachLearnset, + [SPECIES_DITTO] = sDittoTeachLearnset, + [SPECIES_EEVEE] = sEeveeTeachLearnset, + [SPECIES_VAPOREON] = sVaporeonTeachLearnset, + [SPECIES_JOLTEON] = sJolteonTeachLearnset, + [SPECIES_FLAREON] = sFlareonTeachLearnset, + [SPECIES_PORYGON] = sPorygonTeachLearnset, + [SPECIES_OMANYTE] = sOmanyteTeachLearnset, + [SPECIES_OMASTAR] = sOmastarTeachLearnset, + [SPECIES_KABUTO] = sKabutoTeachLearnset, + [SPECIES_KABUTOPS] = sKabutopsTeachLearnset, + [SPECIES_AERODACTYL] = sAerodactylTeachLearnset, + [SPECIES_SNORLAX] = sSnorlaxTeachLearnset, + [SPECIES_ARTICUNO] = sArticunoTeachLearnset, + [SPECIES_ZAPDOS] = sZapdosTeachLearnset, + [SPECIES_MOLTRES] = sMoltresTeachLearnset, + [SPECIES_DRATINI] = sDratiniTeachLearnset, + [SPECIES_DRAGONAIR] = sDragonairTeachLearnset, + [SPECIES_DRAGONITE] = sDragoniteTeachLearnset, + [SPECIES_MEWTWO] = sMewtwoTeachLearnset, + [SPECIES_MEW] = sMewTeachLearnset, + [SPECIES_CHIKORITA] = sChikoritaTeachLearnset, + [SPECIES_BAYLEEF] = sBayleefTeachLearnset, + [SPECIES_MEGANIUM] = sMeganiumTeachLearnset, + [SPECIES_CYNDAQUIL] = sCyndaquilTeachLearnset, + [SPECIES_QUILAVA] = sQuilavaTeachLearnset, + [SPECIES_TYPHLOSION] = sTyphlosionTeachLearnset, + [SPECIES_TOTODILE] = sTotodileTeachLearnset, + [SPECIES_CROCONAW] = sCroconawTeachLearnset, + [SPECIES_FERALIGATR] = sFeraligatrTeachLearnset, + [SPECIES_SENTRET] = sSentretTeachLearnset, + [SPECIES_FURRET] = sFurretTeachLearnset, + [SPECIES_HOOTHOOT] = sHoothootTeachLearnset, + [SPECIES_NOCTOWL] = sNoctowlTeachLearnset, + [SPECIES_LEDYBA] = sLedybaTeachLearnset, + [SPECIES_LEDIAN] = sLedianTeachLearnset, + [SPECIES_SPINARAK] = sSpinarakTeachLearnset, + [SPECIES_ARIADOS] = sAriadosTeachLearnset, + [SPECIES_CROBAT] = sCrobatTeachLearnset, + [SPECIES_CHINCHOU] = sChinchouTeachLearnset, + [SPECIES_LANTURN] = sLanturnTeachLearnset, + [SPECIES_PICHU] = sPichuTeachLearnset, + [SPECIES_CLEFFA] = sCleffaTeachLearnset, + [SPECIES_IGGLYBUFF] = sIgglybuffTeachLearnset, + [SPECIES_TOGEPI] = sTogepiTeachLearnset, + [SPECIES_TOGETIC] = sTogeticTeachLearnset, + [SPECIES_NATU] = sNatuTeachLearnset, + [SPECIES_XATU] = sXatuTeachLearnset, + [SPECIES_MAREEP] = sMareepTeachLearnset, + [SPECIES_FLAAFFY] = sFlaaffyTeachLearnset, + [SPECIES_AMPHAROS] = sAmpharosTeachLearnset, + [SPECIES_BELLOSSOM] = sBellossomTeachLearnset, + [SPECIES_MARILL] = sMarillTeachLearnset, + [SPECIES_AZUMARILL] = sAzumarillTeachLearnset, + [SPECIES_SUDOWOODO] = sSudowoodoTeachLearnset, + [SPECIES_POLITOED] = sPolitoedTeachLearnset, + [SPECIES_HOPPIP] = sHoppipTeachLearnset, + [SPECIES_SKIPLOOM] = sSkiploomTeachLearnset, + [SPECIES_JUMPLUFF] = sJumpluffTeachLearnset, + [SPECIES_AIPOM] = sAipomTeachLearnset, + [SPECIES_SUNKERN] = sSunkernTeachLearnset, + [SPECIES_SUNFLORA] = sSunfloraTeachLearnset, + [SPECIES_YANMA] = sYanmaTeachLearnset, + [SPECIES_WOOPER] = sWooperTeachLearnset, + [SPECIES_QUAGSIRE] = sQuagsireTeachLearnset, + [SPECIES_ESPEON] = sEspeonTeachLearnset, + [SPECIES_UMBREON] = sUmbreonTeachLearnset, + [SPECIES_MURKROW] = sMurkrowTeachLearnset, + [SPECIES_SLOWKING] = sSlowkingTeachLearnset, + [SPECIES_MISDREAVUS] = sMisdreavusTeachLearnset, + [SPECIES_UNOWN] = sUnownTeachLearnset, + [SPECIES_WOBBUFFET] = sWobbuffetTeachLearnset, + [SPECIES_GIRAFARIG] = sGirafarigTeachLearnset, + [SPECIES_PINECO] = sPinecoTeachLearnset, + [SPECIES_FORRETRESS] = sForretressTeachLearnset, + [SPECIES_DUNSPARCE] = sDunsparceTeachLearnset, + [SPECIES_GLIGAR] = sGligarTeachLearnset, + [SPECIES_STEELIX] = sSteelixTeachLearnset, + [SPECIES_SNUBBULL] = sSnubbullTeachLearnset, + [SPECIES_GRANBULL] = sGranbullTeachLearnset, + [SPECIES_QWILFISH] = sQwilfishTeachLearnset, + [SPECIES_SCIZOR] = sScizorTeachLearnset, + [SPECIES_SHUCKLE] = sShuckleTeachLearnset, + [SPECIES_HERACROSS] = sHeracrossTeachLearnset, + [SPECIES_SNEASEL] = sSneaselTeachLearnset, + [SPECIES_TEDDIURSA] = sTeddiursaTeachLearnset, + [SPECIES_URSARING] = sUrsaringTeachLearnset, + [SPECIES_SLUGMA] = sSlugmaTeachLearnset, + [SPECIES_MAGCARGO] = sMagcargoTeachLearnset, + [SPECIES_SWINUB] = sSwinubTeachLearnset, + [SPECIES_PILOSWINE] = sPiloswineTeachLearnset, + [SPECIES_CORSOLA] = sCorsolaTeachLearnset, + [SPECIES_REMORAID] = sRemoraidTeachLearnset, + [SPECIES_OCTILLERY] = sOctilleryTeachLearnset, + [SPECIES_DELIBIRD] = sDelibirdTeachLearnset, + [SPECIES_MANTINE] = sMantineTeachLearnset, + [SPECIES_SKARMORY] = sSkarmoryTeachLearnset, + [SPECIES_HOUNDOUR] = sHoundourTeachLearnset, + [SPECIES_HOUNDOOM] = sHoundoomTeachLearnset, + [SPECIES_KINGDRA] = sKingdraTeachLearnset, + [SPECIES_PHANPY] = sPhanpyTeachLearnset, + [SPECIES_DONPHAN] = sDonphanTeachLearnset, + [SPECIES_PORYGON2] = sPorygon2TeachLearnset, + [SPECIES_STANTLER] = sStantlerTeachLearnset, + [SPECIES_SMEARGLE] = sSmeargleTeachLearnset, + [SPECIES_TYROGUE] = sTyrogueTeachLearnset, + [SPECIES_HITMONTOP] = sHitmontopTeachLearnset, + [SPECIES_SMOOCHUM] = sSmoochumTeachLearnset, + [SPECIES_ELEKID] = sElekidTeachLearnset, + [SPECIES_MAGBY] = sMagbyTeachLearnset, + [SPECIES_MILTANK] = sMiltankTeachLearnset, + [SPECIES_BLISSEY] = sBlisseyTeachLearnset, + [SPECIES_RAIKOU] = sRaikouTeachLearnset, + [SPECIES_ENTEI] = sEnteiTeachLearnset, + [SPECIES_SUICUNE] = sSuicuneTeachLearnset, + [SPECIES_LARVITAR] = sLarvitarTeachLearnset, + [SPECIES_PUPITAR] = sPupitarTeachLearnset, + [SPECIES_TYRANITAR] = sTyranitarTeachLearnset, + [SPECIES_LUGIA] = sLugiaTeachLearnset, + [SPECIES_HO_OH] = sHoOhTeachLearnset, + [SPECIES_CELEBI] = sCelebiTeachLearnset, + [SPECIES_TREECKO] = sTreeckoTeachLearnset, + [SPECIES_GROVYLE] = sGrovyleTeachLearnset, + [SPECIES_SCEPTILE] = sSceptileTeachLearnset, + [SPECIES_TORCHIC] = sTorchicTeachLearnset, + [SPECIES_COMBUSKEN] = sCombuskenTeachLearnset, + [SPECIES_BLAZIKEN] = sBlazikenTeachLearnset, + [SPECIES_MUDKIP] = sMudkipTeachLearnset, + [SPECIES_MARSHTOMP] = sMarshtompTeachLearnset, + [SPECIES_SWAMPERT] = sSwampertTeachLearnset, + [SPECIES_POOCHYENA] = sPoochyenaTeachLearnset, + [SPECIES_MIGHTYENA] = sMightyenaTeachLearnset, + [SPECIES_ZIGZAGOON] = sZigzagoonTeachLearnset, + [SPECIES_LINOONE] = sLinooneTeachLearnset, + [SPECIES_WURMPLE] = sWurmpleTeachLearnset, + [SPECIES_SILCOON] = sSilcoonTeachLearnset, + [SPECIES_BEAUTIFLY] = sBeautiflyTeachLearnset, + [SPECIES_CASCOON] = sCascoonTeachLearnset, + [SPECIES_DUSTOX] = sDustoxTeachLearnset, + [SPECIES_LOTAD] = sLotadTeachLearnset, + [SPECIES_LOMBRE] = sLombreTeachLearnset, + [SPECIES_LUDICOLO] = sLudicoloTeachLearnset, + [SPECIES_SEEDOT] = sSeedotTeachLearnset, + [SPECIES_NUZLEAF] = sNuzleafTeachLearnset, + [SPECIES_SHIFTRY] = sShiftryTeachLearnset, + [SPECIES_NINCADA] = sNincadaTeachLearnset, + [SPECIES_NINJASK] = sNinjaskTeachLearnset, + [SPECIES_SHEDINJA] = sShedinjaTeachLearnset, + [SPECIES_TAILLOW] = sTaillowTeachLearnset, + [SPECIES_SWELLOW] = sSwellowTeachLearnset, + [SPECIES_SHROOMISH] = sShroomishTeachLearnset, + [SPECIES_BRELOOM] = sBreloomTeachLearnset, + [SPECIES_SPINDA] = sSpindaTeachLearnset, + [SPECIES_WINGULL] = sWingullTeachLearnset, + [SPECIES_PELIPPER] = sPelipperTeachLearnset, + [SPECIES_SURSKIT] = sSurskitTeachLearnset, + [SPECIES_MASQUERAIN] = sMasquerainTeachLearnset, + [SPECIES_WAILMER] = sWailmerTeachLearnset, + [SPECIES_WAILORD] = sWailordTeachLearnset, + [SPECIES_SKITTY] = sSkittyTeachLearnset, + [SPECIES_DELCATTY] = sDelcattyTeachLearnset, + [SPECIES_KECLEON] = sKecleonTeachLearnset, + [SPECIES_BALTOY] = sBaltoyTeachLearnset, + [SPECIES_CLAYDOL] = sClaydolTeachLearnset, + [SPECIES_NOSEPASS] = sNosepassTeachLearnset, + [SPECIES_TORKOAL] = sTorkoalTeachLearnset, + [SPECIES_SABLEYE] = sSableyeTeachLearnset, + [SPECIES_BARBOACH] = sBarboachTeachLearnset, + [SPECIES_WHISCASH] = sWhiscashTeachLearnset, + [SPECIES_LUVDISC] = sLuvdiscTeachLearnset, + [SPECIES_CORPHISH] = sCorphishTeachLearnset, + [SPECIES_CRAWDAUNT] = sCrawdauntTeachLearnset, + [SPECIES_FEEBAS] = sFeebasTeachLearnset, + [SPECIES_MILOTIC] = sMiloticTeachLearnset, + [SPECIES_CARVANHA] = sCarvanhaTeachLearnset, + [SPECIES_SHARPEDO] = sSharpedoTeachLearnset, + [SPECIES_TRAPINCH] = sTrapinchTeachLearnset, + [SPECIES_VIBRAVA] = sVibravaTeachLearnset, + [SPECIES_FLYGON] = sFlygonTeachLearnset, + [SPECIES_MAKUHITA] = sMakuhitaTeachLearnset, + [SPECIES_HARIYAMA] = sHariyamaTeachLearnset, + [SPECIES_ELECTRIKE] = sElectrikeTeachLearnset, + [SPECIES_MANECTRIC] = sManectricTeachLearnset, + [SPECIES_NUMEL] = sNumelTeachLearnset, + [SPECIES_CAMERUPT] = sCameruptTeachLearnset, + [SPECIES_SPHEAL] = sSphealTeachLearnset, + [SPECIES_SEALEO] = sSealeoTeachLearnset, + [SPECIES_WALREIN] = sWalreinTeachLearnset, + [SPECIES_CACNEA] = sCacneaTeachLearnset, + [SPECIES_CACTURNE] = sCacturneTeachLearnset, + [SPECIES_SNORUNT] = sSnoruntTeachLearnset, + [SPECIES_GLALIE] = sGlalieTeachLearnset, + [SPECIES_LUNATONE] = sLunatoneTeachLearnset, + [SPECIES_SOLROCK] = sSolrockTeachLearnset, + [SPECIES_AZURILL] = sAzurillTeachLearnset, + [SPECIES_SPOINK] = sSpoinkTeachLearnset, + [SPECIES_GRUMPIG] = sGrumpigTeachLearnset, + [SPECIES_PLUSLE] = sPlusleTeachLearnset, + [SPECIES_MINUN] = sMinunTeachLearnset, + [SPECIES_MAWILE] = sMawileTeachLearnset, + [SPECIES_MEDITITE] = sMedititeTeachLearnset, + [SPECIES_MEDICHAM] = sMedichamTeachLearnset, + [SPECIES_SWABLU] = sSwabluTeachLearnset, + [SPECIES_ALTARIA] = sAltariaTeachLearnset, + [SPECIES_WYNAUT] = sWynautTeachLearnset, + [SPECIES_DUSKULL] = sDuskullTeachLearnset, + [SPECIES_DUSCLOPS] = sDusclopsTeachLearnset, + [SPECIES_ROSELIA] = sRoseliaTeachLearnset, + [SPECIES_SLAKOTH] = sSlakothTeachLearnset, + [SPECIES_VIGOROTH] = sVigorothTeachLearnset, + [SPECIES_SLAKING] = sSlakingTeachLearnset, + [SPECIES_GULPIN] = sGulpinTeachLearnset, + [SPECIES_SWALOT] = sSwalotTeachLearnset, + [SPECIES_TROPIUS] = sTropiusTeachLearnset, + [SPECIES_WHISMUR] = sWhismurTeachLearnset, + [SPECIES_LOUDRED] = sLoudredTeachLearnset, + [SPECIES_EXPLOUD] = sExploudTeachLearnset, + [SPECIES_CLAMPERL] = sClamperlTeachLearnset, + [SPECIES_HUNTAIL] = sHuntailTeachLearnset, + [SPECIES_GOREBYSS] = sGorebyssTeachLearnset, + [SPECIES_ABSOL] = sAbsolTeachLearnset, + [SPECIES_SHUPPET] = sShuppetTeachLearnset, + [SPECIES_BANETTE] = sBanetteTeachLearnset, + [SPECIES_SEVIPER] = sSeviperTeachLearnset, + [SPECIES_ZANGOOSE] = sZangooseTeachLearnset, + [SPECIES_RELICANTH] = sRelicanthTeachLearnset, + [SPECIES_ARON] = sAronTeachLearnset, + [SPECIES_LAIRON] = sLaironTeachLearnset, + [SPECIES_AGGRON] = sAggronTeachLearnset, + [SPECIES_CASTFORM] = sCastformTeachLearnset, + [SPECIES_VOLBEAT] = sVolbeatTeachLearnset, + [SPECIES_ILLUMISE] = sIllumiseTeachLearnset, + [SPECIES_LILEEP] = sLileepTeachLearnset, + [SPECIES_CRADILY] = sCradilyTeachLearnset, + [SPECIES_ANORITH] = sAnorithTeachLearnset, + [SPECIES_ARMALDO] = sArmaldoTeachLearnset, + [SPECIES_RALTS] = sRaltsTeachLearnset, + [SPECIES_KIRLIA] = sKirliaTeachLearnset, + [SPECIES_GARDEVOIR] = sGardevoirTeachLearnset, + [SPECIES_BAGON] = sBagonTeachLearnset, + [SPECIES_SHELGON] = sShelgonTeachLearnset, + [SPECIES_SALAMENCE] = sSalamenceTeachLearnset, + [SPECIES_BELDUM] = sBeldumTeachLearnset, + [SPECIES_METANG] = sMetangTeachLearnset, + [SPECIES_METAGROSS] = sMetagrossTeachLearnset, + [SPECIES_REGIROCK] = sRegirockTeachLearnset, + [SPECIES_REGICE] = sRegiceTeachLearnset, + [SPECIES_REGISTEEL] = sRegisteelTeachLearnset, + [SPECIES_KYOGRE] = sKyogreTeachLearnset, + [SPECIES_GROUDON] = sGroudonTeachLearnset, + [SPECIES_RAYQUAZA] = sRayquazaTeachLearnset, + [SPECIES_LATIAS] = sLatiasTeachLearnset, + [SPECIES_LATIOS] = sLatiosTeachLearnset, + [SPECIES_JIRACHI] = sJirachiTeachLearnset, + [SPECIES_DEOXYS] = sDeoxysTeachLearnset, + [SPECIES_CHIMECHO] = sChimechoTeachLearnset, +#if P_NEW_POKEMON == TRUE + [SPECIES_TURTWIG] = sTurtwigTeachLearnset, + [SPECIES_GROTLE] = sGrotleTeachLearnset, + [SPECIES_TORTERRA] = sTorterraTeachLearnset, + [SPECIES_CHIMCHAR] = sChimcharTeachLearnset, + [SPECIES_MONFERNO] = sMonfernoTeachLearnset, + [SPECIES_INFERNAPE] = sInfernapeTeachLearnset, + [SPECIES_PIPLUP] = sPiplupTeachLearnset, + [SPECIES_PRINPLUP] = sPrinplupTeachLearnset, + [SPECIES_EMPOLEON] = sEmpoleonTeachLearnset, + [SPECIES_STARLY] = sStarlyTeachLearnset, + [SPECIES_STARAVIA] = sStaraviaTeachLearnset, + [SPECIES_STARAPTOR] = sStaraptorTeachLearnset, + [SPECIES_BIDOOF] = sBidoofTeachLearnset, + [SPECIES_BIBAREL] = sBibarelTeachLearnset, + [SPECIES_KRICKETOT] = sKricketotTeachLearnset, + [SPECIES_KRICKETUNE] = sKricketuneTeachLearnset, + [SPECIES_SHINX] = sShinxTeachLearnset, + [SPECIES_LUXIO] = sLuxioTeachLearnset, + [SPECIES_LUXRAY] = sLuxrayTeachLearnset, + [SPECIES_BUDEW] = sBudewTeachLearnset, + [SPECIES_ROSERADE] = sRoseradeTeachLearnset, + [SPECIES_CRANIDOS] = sCranidosTeachLearnset, + [SPECIES_RAMPARDOS] = sRampardosTeachLearnset, + [SPECIES_SHIELDON] = sShieldonTeachLearnset, + [SPECIES_BASTIODON] = sBastiodonTeachLearnset, + [SPECIES_BURMY] = sBurmyTeachLearnset, + [SPECIES_WORMADAM] = sWormadamTeachLearnset, + [SPECIES_MOTHIM] = sMothimTeachLearnset, + [SPECIES_COMBEE] = sCombeeTeachLearnset, + [SPECIES_VESPIQUEN] = sVespiquenTeachLearnset, + [SPECIES_PACHIRISU] = sPachirisuTeachLearnset, + [SPECIES_BUIZEL] = sBuizelTeachLearnset, + [SPECIES_FLOATZEL] = sFloatzelTeachLearnset, + [SPECIES_CHERUBI] = sCherubiTeachLearnset, + [SPECIES_CHERRIM] = sCherrimTeachLearnset, + [SPECIES_SHELLOS] = sShellosTeachLearnset, + [SPECIES_GASTRODON] = sGastrodonTeachLearnset, + [SPECIES_AMBIPOM] = sAmbipomTeachLearnset, + [SPECIES_DRIFLOON] = sDrifloonTeachLearnset, + [SPECIES_DRIFBLIM] = sDrifblimTeachLearnset, + [SPECIES_BUNEARY] = sBunearyTeachLearnset, + [SPECIES_LOPUNNY] = sLopunnyTeachLearnset, + [SPECIES_MISMAGIUS] = sMismagiusTeachLearnset, + [SPECIES_HONCHKROW] = sHonchkrowTeachLearnset, + [SPECIES_GLAMEOW] = sGlameowTeachLearnset, + [SPECIES_PURUGLY] = sPuruglyTeachLearnset, + [SPECIES_CHINGLING] = sChinglingTeachLearnset, + [SPECIES_STUNKY] = sStunkyTeachLearnset, + [SPECIES_SKUNTANK] = sSkuntankTeachLearnset, + [SPECIES_BRONZOR] = sBronzorTeachLearnset, + [SPECIES_BRONZONG] = sBronzongTeachLearnset, + [SPECIES_BONSLY] = sBonslyTeachLearnset, + [SPECIES_MIME_JR] = sMimeJrTeachLearnset, + [SPECIES_HAPPINY] = sHappinyTeachLearnset, + [SPECIES_CHATOT] = sChatotTeachLearnset, + [SPECIES_SPIRITOMB] = sSpiritombTeachLearnset, + [SPECIES_GIBLE] = sGibleTeachLearnset, + [SPECIES_GABITE] = sGabiteTeachLearnset, + [SPECIES_GARCHOMP] = sGarchompTeachLearnset, + [SPECIES_MUNCHLAX] = sMunchlaxTeachLearnset, + [SPECIES_RIOLU] = sRioluTeachLearnset, + [SPECIES_LUCARIO] = sLucarioTeachLearnset, + [SPECIES_HIPPOPOTAS] = sHippopotasTeachLearnset, + [SPECIES_HIPPOWDON] = sHippowdonTeachLearnset, + [SPECIES_SKORUPI] = sSkorupiTeachLearnset, + [SPECIES_DRAPION] = sDrapionTeachLearnset, + [SPECIES_CROAGUNK] = sCroagunkTeachLearnset, + [SPECIES_TOXICROAK] = sToxicroakTeachLearnset, + [SPECIES_CARNIVINE] = sCarnivineTeachLearnset, + [SPECIES_FINNEON] = sFinneonTeachLearnset, + [SPECIES_LUMINEON] = sLumineonTeachLearnset, + [SPECIES_MANTYKE] = sMantykeTeachLearnset, + [SPECIES_SNOVER] = sSnoverTeachLearnset, + [SPECIES_ABOMASNOW] = sAbomasnowTeachLearnset, + [SPECIES_WEAVILE] = sWeavileTeachLearnset, + [SPECIES_MAGNEZONE] = sMagnezoneTeachLearnset, + [SPECIES_LICKILICKY] = sLickilickyTeachLearnset, + [SPECIES_RHYPERIOR] = sRhyperiorTeachLearnset, + [SPECIES_TANGROWTH] = sTangrowthTeachLearnset, + [SPECIES_ELECTIVIRE] = sElectivireTeachLearnset, + [SPECIES_MAGMORTAR] = sMagmortarTeachLearnset, + [SPECIES_TOGEKISS] = sTogekissTeachLearnset, + [SPECIES_YANMEGA] = sYanmegaTeachLearnset, + [SPECIES_LEAFEON] = sLeafeonTeachLearnset, + [SPECIES_GLACEON] = sGlaceonTeachLearnset, + [SPECIES_GLISCOR] = sGliscorTeachLearnset, + [SPECIES_MAMOSWINE] = sMamoswineTeachLearnset, + [SPECIES_PORYGON_Z] = sPorygonZTeachLearnset, + [SPECIES_GALLADE] = sGalladeTeachLearnset, + [SPECIES_PROBOPASS] = sProbopassTeachLearnset, + [SPECIES_DUSKNOIR] = sDusknoirTeachLearnset, + [SPECIES_FROSLASS] = sFroslassTeachLearnset, + [SPECIES_ROTOM] = sRotomTeachLearnset, + [SPECIES_UXIE] = sUxieTeachLearnset, + [SPECIES_MESPRIT] = sMespritTeachLearnset, + [SPECIES_AZELF] = sAzelfTeachLearnset, + [SPECIES_DIALGA] = sDialgaTeachLearnset, + [SPECIES_PALKIA] = sPalkiaTeachLearnset, + [SPECIES_HEATRAN] = sHeatranTeachLearnset, + [SPECIES_REGIGIGAS] = sRegigigasTeachLearnset, + [SPECIES_GIRATINA] = sGiratinaTeachLearnset, + [SPECIES_CRESSELIA] = sCresseliaTeachLearnset, + [SPECIES_PHIONE] = sPhioneTeachLearnset, + [SPECIES_MANAPHY] = sManaphyTeachLearnset, + [SPECIES_DARKRAI] = sDarkraiTeachLearnset, + [SPECIES_SHAYMIN] = sShayminTeachLearnset, + [SPECIES_ARCEUS] = sArceusTeachLearnset, + [SPECIES_VICTINI] = sVictiniTeachLearnset, + [SPECIES_SNIVY] = sSnivyTeachLearnset, + [SPECIES_SERVINE] = sServineTeachLearnset, + [SPECIES_SERPERIOR] = sSerperiorTeachLearnset, + [SPECIES_TEPIG] = sTepigTeachLearnset, + [SPECIES_PIGNITE] = sPigniteTeachLearnset, + [SPECIES_EMBOAR] = sEmboarTeachLearnset, + [SPECIES_OSHAWOTT] = sOshawottTeachLearnset, + [SPECIES_DEWOTT] = sDewottTeachLearnset, + [SPECIES_SAMUROTT] = sSamurottTeachLearnset, + [SPECIES_PATRAT] = sPatratTeachLearnset, + [SPECIES_WATCHOG] = sWatchogTeachLearnset, + [SPECIES_LILLIPUP] = sLillipupTeachLearnset, + [SPECIES_HERDIER] = sHerdierTeachLearnset, + [SPECIES_STOUTLAND] = sStoutlandTeachLearnset, + [SPECIES_PURRLOIN] = sPurrloinTeachLearnset, + [SPECIES_LIEPARD] = sLiepardTeachLearnset, + [SPECIES_PANSAGE] = sPansageTeachLearnset, + [SPECIES_SIMISAGE] = sSimisageTeachLearnset, + [SPECIES_PANSEAR] = sPansearTeachLearnset, + [SPECIES_SIMISEAR] = sSimisearTeachLearnset, + [SPECIES_PANPOUR] = sPanpourTeachLearnset, + [SPECIES_SIMIPOUR] = sSimipourTeachLearnset, + [SPECIES_MUNNA] = sMunnaTeachLearnset, + [SPECIES_MUSHARNA] = sMusharnaTeachLearnset, + [SPECIES_PIDOVE] = sPidoveTeachLearnset, + [SPECIES_TRANQUILL] = sTranquillTeachLearnset, + [SPECIES_UNFEZANT] = sUnfezantTeachLearnset, + [SPECIES_BLITZLE] = sBlitzleTeachLearnset, + [SPECIES_ZEBSTRIKA] = sZebstrikaTeachLearnset, + [SPECIES_ROGGENROLA] = sRoggenrolaTeachLearnset, + [SPECIES_BOLDORE] = sBoldoreTeachLearnset, + [SPECIES_GIGALITH] = sGigalithTeachLearnset, + [SPECIES_WOOBAT] = sWoobatTeachLearnset, + [SPECIES_SWOOBAT] = sSwoobatTeachLearnset, + [SPECIES_DRILBUR] = sDrilburTeachLearnset, + [SPECIES_EXCADRILL] = sExcadrillTeachLearnset, + [SPECIES_AUDINO] = sAudinoTeachLearnset, + [SPECIES_TIMBURR] = sTimburrTeachLearnset, + [SPECIES_GURDURR] = sGurdurrTeachLearnset, + [SPECIES_CONKELDURR] = sConkeldurrTeachLearnset, + [SPECIES_TYMPOLE] = sTympoleTeachLearnset, + [SPECIES_PALPITOAD] = sPalpitoadTeachLearnset, + [SPECIES_SEISMITOAD] = sSeismitoadTeachLearnset, + [SPECIES_THROH] = sThrohTeachLearnset, + [SPECIES_SAWK] = sSawkTeachLearnset, + [SPECIES_SEWADDLE] = sSewaddleTeachLearnset, + [SPECIES_SWADLOON] = sSwadloonTeachLearnset, + [SPECIES_LEAVANNY] = sLeavannyTeachLearnset, + [SPECIES_VENIPEDE] = sVenipedeTeachLearnset, + [SPECIES_WHIRLIPEDE] = sWhirlipedeTeachLearnset, + [SPECIES_SCOLIPEDE] = sScolipedeTeachLearnset, + [SPECIES_COTTONEE] = sCottoneeTeachLearnset, + [SPECIES_WHIMSICOTT] = sWhimsicottTeachLearnset, + [SPECIES_PETILIL] = sPetililTeachLearnset, + [SPECIES_LILLIGANT] = sLilligantTeachLearnset, + [SPECIES_BASCULIN] = sBasculinTeachLearnset, + [SPECIES_SANDILE] = sSandileTeachLearnset, + [SPECIES_KROKOROK] = sKrokorokTeachLearnset, + [SPECIES_KROOKODILE] = sKrookodileTeachLearnset, + [SPECIES_DARUMAKA] = sDarumakaTeachLearnset, + [SPECIES_DARMANITAN] = sDarmanitanTeachLearnset, + [SPECIES_MARACTUS] = sMaractusTeachLearnset, + [SPECIES_DWEBBLE] = sDwebbleTeachLearnset, + [SPECIES_CRUSTLE] = sCrustleTeachLearnset, + [SPECIES_SCRAGGY] = sScraggyTeachLearnset, + [SPECIES_SCRAFTY] = sScraftyTeachLearnset, + [SPECIES_SIGILYPH] = sSigilyphTeachLearnset, + [SPECIES_YAMASK] = sYamaskTeachLearnset, + [SPECIES_COFAGRIGUS] = sCofagrigusTeachLearnset, + [SPECIES_TIRTOUGA] = sTirtougaTeachLearnset, + [SPECIES_CARRACOSTA] = sCarracostaTeachLearnset, + [SPECIES_ARCHEN] = sArchenTeachLearnset, + [SPECIES_ARCHEOPS] = sArcheopsTeachLearnset, + [SPECIES_TRUBBISH] = sTrubbishTeachLearnset, + [SPECIES_GARBODOR] = sGarbodorTeachLearnset, + [SPECIES_ZORUA] = sZoruaTeachLearnset, + [SPECIES_ZOROARK] = sZoroarkTeachLearnset, + [SPECIES_MINCCINO] = sMinccinoTeachLearnset, + [SPECIES_CINCCINO] = sCinccinoTeachLearnset, + [SPECIES_GOTHITA] = sGothitaTeachLearnset, + [SPECIES_GOTHORITA] = sGothoritaTeachLearnset, + [SPECIES_GOTHITELLE] = sGothitelleTeachLearnset, + [SPECIES_SOLOSIS] = sSolosisTeachLearnset, + [SPECIES_DUOSION] = sDuosionTeachLearnset, + [SPECIES_REUNICLUS] = sReuniclusTeachLearnset, + [SPECIES_DUCKLETT] = sDucklettTeachLearnset, + [SPECIES_SWANNA] = sSwannaTeachLearnset, + [SPECIES_VANILLITE] = sVanilliteTeachLearnset, + [SPECIES_VANILLISH] = sVanillishTeachLearnset, + [SPECIES_VANILLUXE] = sVanilluxeTeachLearnset, + [SPECIES_DEERLING] = sDeerlingTeachLearnset, + [SPECIES_SAWSBUCK] = sSawsbuckTeachLearnset, + [SPECIES_EMOLGA] = sEmolgaTeachLearnset, + [SPECIES_KARRABLAST] = sKarrablastTeachLearnset, + [SPECIES_ESCAVALIER] = sEscavalierTeachLearnset, + [SPECIES_FOONGUS] = sFoongusTeachLearnset, + [SPECIES_AMOONGUSS] = sAmoongussTeachLearnset, + [SPECIES_FRILLISH] = sFrillishTeachLearnset, + [SPECIES_JELLICENT] = sJellicentTeachLearnset, + [SPECIES_ALOMOMOLA] = sAlomomolaTeachLearnset, + [SPECIES_JOLTIK] = sJoltikTeachLearnset, + [SPECIES_GALVANTULA] = sGalvantulaTeachLearnset, + [SPECIES_FERROSEED] = sFerroseedTeachLearnset, + [SPECIES_FERROTHORN] = sFerrothornTeachLearnset, + [SPECIES_KLINK] = sKlinkTeachLearnset, + [SPECIES_KLANG] = sKlangTeachLearnset, + [SPECIES_KLINKLANG] = sKlinklangTeachLearnset, + [SPECIES_TYNAMO] = sTynamoTeachLearnset, + [SPECIES_EELEKTRIK] = sEelektrikTeachLearnset, + [SPECIES_EELEKTROSS] = sEelektrossTeachLearnset, + [SPECIES_ELGYEM] = sElgyemTeachLearnset, + [SPECIES_BEHEEYEM] = sBeheeyemTeachLearnset, + [SPECIES_LITWICK] = sLitwickTeachLearnset, + [SPECIES_LAMPENT] = sLampentTeachLearnset, + [SPECIES_CHANDELURE] = sChandelureTeachLearnset, + [SPECIES_AXEW] = sAxewTeachLearnset, + [SPECIES_FRAXURE] = sFraxureTeachLearnset, + [SPECIES_HAXORUS] = sHaxorusTeachLearnset, + [SPECIES_CUBCHOO] = sCubchooTeachLearnset, + [SPECIES_BEARTIC] = sBearticTeachLearnset, + [SPECIES_CRYOGONAL] = sCryogonalTeachLearnset, + [SPECIES_SHELMET] = sShelmetTeachLearnset, + [SPECIES_ACCELGOR] = sAccelgorTeachLearnset, + [SPECIES_STUNFISK] = sStunfiskTeachLearnset, + [SPECIES_MIENFOO] = sMienfooTeachLearnset, + [SPECIES_MIENSHAO] = sMienshaoTeachLearnset, + [SPECIES_DRUDDIGON] = sDruddigonTeachLearnset, + [SPECIES_GOLETT] = sGolettTeachLearnset, + [SPECIES_GOLURK] = sGolurkTeachLearnset, + [SPECIES_PAWNIARD] = sPawniardTeachLearnset, + [SPECIES_BISHARP] = sBisharpTeachLearnset, + [SPECIES_BOUFFALANT] = sBouffalantTeachLearnset, + [SPECIES_RUFFLET] = sRuffletTeachLearnset, + [SPECIES_BRAVIARY] = sBraviaryTeachLearnset, + [SPECIES_VULLABY] = sVullabyTeachLearnset, + [SPECIES_MANDIBUZZ] = sMandibuzzTeachLearnset, + [SPECIES_HEATMOR] = sHeatmorTeachLearnset, + [SPECIES_DURANT] = sDurantTeachLearnset, + [SPECIES_DEINO] = sDeinoTeachLearnset, + [SPECIES_ZWEILOUS] = sZweilousTeachLearnset, + [SPECIES_HYDREIGON] = sHydreigonTeachLearnset, + [SPECIES_LARVESTA] = sLarvestaTeachLearnset, + [SPECIES_VOLCARONA] = sVolcaronaTeachLearnset, + [SPECIES_COBALION] = sCobalionTeachLearnset, + [SPECIES_TERRAKION] = sTerrakionTeachLearnset, + [SPECIES_VIRIZION] = sVirizionTeachLearnset, + [SPECIES_TORNADUS] = sTornadusTeachLearnset, + [SPECIES_THUNDURUS] = sThundurusTeachLearnset, + [SPECIES_RESHIRAM] = sReshiramTeachLearnset, + [SPECIES_ZEKROM] = sZekromTeachLearnset, + [SPECIES_LANDORUS] = sLandorusTeachLearnset, + [SPECIES_KYUREM] = sKyuremTeachLearnset, + [SPECIES_KELDEO] = sKeldeoTeachLearnset, + [SPECIES_MELOETTA] = sMeloettaTeachLearnset, + [SPECIES_GENESECT] = sGenesectTeachLearnset, + [SPECIES_CHESPIN] = sChespinTeachLearnset, + [SPECIES_QUILLADIN] = sQuilladinTeachLearnset, + [SPECIES_CHESNAUGHT] = sChesnaughtTeachLearnset, + [SPECIES_FENNEKIN] = sFennekinTeachLearnset, + [SPECIES_BRAIXEN] = sBraixenTeachLearnset, + [SPECIES_DELPHOX] = sDelphoxTeachLearnset, + [SPECIES_FROAKIE] = sFroakieTeachLearnset, + [SPECIES_FROGADIER] = sFrogadierTeachLearnset, + [SPECIES_GRENINJA] = sGreninjaTeachLearnset, + [SPECIES_BUNNELBY] = sBunnelbyTeachLearnset, + [SPECIES_DIGGERSBY] = sDiggersbyTeachLearnset, + [SPECIES_FLETCHLING] = sFletchlingTeachLearnset, + [SPECIES_FLETCHINDER] = sFletchinderTeachLearnset, + [SPECIES_TALONFLAME] = sTalonflameTeachLearnset, + [SPECIES_SCATTERBUG] = sScatterbugTeachLearnset, + [SPECIES_SPEWPA] = sSpewpaTeachLearnset, + [SPECIES_VIVILLON] = sVivillonTeachLearnset, + [SPECIES_LITLEO] = sLitleoTeachLearnset, + [SPECIES_PYROAR] = sPyroarTeachLearnset, + [SPECIES_FLABEBE] = sFlabebeTeachLearnset, + [SPECIES_FLOETTE] = sFloetteTeachLearnset, + [SPECIES_FLORGES] = sFlorgesTeachLearnset, + [SPECIES_SKIDDO] = sSkiddoTeachLearnset, + [SPECIES_GOGOAT] = sGogoatTeachLearnset, + [SPECIES_PANCHAM] = sPanchamTeachLearnset, + [SPECIES_PANGORO] = sPangoroTeachLearnset, + [SPECIES_FURFROU] = sFurfrouTeachLearnset, + [SPECIES_ESPURR] = sEspurrTeachLearnset, + [SPECIES_MEOWSTIC] = sMeowsticTeachLearnset, + [SPECIES_HONEDGE] = sHonedgeTeachLearnset, + [SPECIES_DOUBLADE] = sDoubladeTeachLearnset, + [SPECIES_AEGISLASH] = sAegislashTeachLearnset, + [SPECIES_SPRITZEE] = sSpritzeeTeachLearnset, + [SPECIES_AROMATISSE] = sAromatisseTeachLearnset, + [SPECIES_SWIRLIX] = sSwirlixTeachLearnset, + [SPECIES_SLURPUFF] = sSlurpuffTeachLearnset, + [SPECIES_INKAY] = sInkayTeachLearnset, + [SPECIES_MALAMAR] = sMalamarTeachLearnset, + [SPECIES_BINACLE] = sBinacleTeachLearnset, + [SPECIES_BARBARACLE] = sBarbaracleTeachLearnset, + [SPECIES_SKRELP] = sSkrelpTeachLearnset, + [SPECIES_DRAGALGE] = sDragalgeTeachLearnset, + [SPECIES_CLAUNCHER] = sClauncherTeachLearnset, + [SPECIES_CLAWITZER] = sClawitzerTeachLearnset, + [SPECIES_HELIOPTILE] = sHelioptileTeachLearnset, + [SPECIES_HELIOLISK] = sHelioliskTeachLearnset, + [SPECIES_TYRUNT] = sTyruntTeachLearnset, + [SPECIES_TYRANTRUM] = sTyrantrumTeachLearnset, + [SPECIES_AMAURA] = sAmauraTeachLearnset, + [SPECIES_AURORUS] = sAurorusTeachLearnset, + [SPECIES_SYLVEON] = sSylveonTeachLearnset, + [SPECIES_HAWLUCHA] = sHawluchaTeachLearnset, + [SPECIES_DEDENNE] = sDedenneTeachLearnset, + [SPECIES_CARBINK] = sCarbinkTeachLearnset, + [SPECIES_GOOMY] = sGoomyTeachLearnset, + [SPECIES_SLIGGOO] = sSliggooTeachLearnset, + [SPECIES_GOODRA] = sGoodraTeachLearnset, + [SPECIES_KLEFKI] = sKlefkiTeachLearnset, + [SPECIES_PHANTUMP] = sPhantumpTeachLearnset, + [SPECIES_TREVENANT] = sTrevenantTeachLearnset, + [SPECIES_PUMPKABOO] = sPumpkabooTeachLearnset, + [SPECIES_GOURGEIST] = sGourgeistTeachLearnset, + [SPECIES_BERGMITE] = sBergmiteTeachLearnset, + [SPECIES_AVALUGG] = sAvaluggTeachLearnset, + [SPECIES_NOIBAT] = sNoibatTeachLearnset, + [SPECIES_NOIVERN] = sNoivernTeachLearnset, + [SPECIES_XERNEAS] = sXerneasTeachLearnset, + [SPECIES_YVELTAL] = sYveltalTeachLearnset, + [SPECIES_ZYGARDE] = sZygardeTeachLearnset, + [SPECIES_DIANCIE] = sDiancieTeachLearnset, + [SPECIES_HOOPA] = sHoopaTeachLearnset, + [SPECIES_VOLCANION] = sVolcanionTeachLearnset, + [SPECIES_ROWLET] = sRowletTeachLearnset, + [SPECIES_DARTRIX] = sDartrixTeachLearnset, + [SPECIES_DECIDUEYE] = sDecidueyeTeachLearnset, + [SPECIES_LITTEN] = sLittenTeachLearnset, + [SPECIES_TORRACAT] = sTorracatTeachLearnset, + [SPECIES_INCINEROAR] = sIncineroarTeachLearnset, + [SPECIES_POPPLIO] = sPopplioTeachLearnset, + [SPECIES_BRIONNE] = sBrionneTeachLearnset, + [SPECIES_PRIMARINA] = sPrimarinaTeachLearnset, + [SPECIES_PIKIPEK] = sPikipekTeachLearnset, + [SPECIES_TRUMBEAK] = sTrumbeakTeachLearnset, + [SPECIES_TOUCANNON] = sToucannonTeachLearnset, + [SPECIES_YUNGOOS] = sYungoosTeachLearnset, + [SPECIES_GUMSHOOS] = sGumshoosTeachLearnset, + [SPECIES_GRUBBIN] = sGrubbinTeachLearnset, + [SPECIES_CHARJABUG] = sCharjabugTeachLearnset, + [SPECIES_VIKAVOLT] = sVikavoltTeachLearnset, + [SPECIES_CRABRAWLER] = sCrabrawlerTeachLearnset, + [SPECIES_CRABOMINABLE] = sCrabominableTeachLearnset, + [SPECIES_ORICORIO] = sOricorioTeachLearnset, + [SPECIES_CUTIEFLY] = sCutieflyTeachLearnset, + [SPECIES_RIBOMBEE] = sRibombeeTeachLearnset, + [SPECIES_ROCKRUFF] = sRockruffTeachLearnset, + [SPECIES_LYCANROC] = sLycanrocTeachLearnset, + [SPECIES_WISHIWASHI] = sWishiwashiTeachLearnset, + [SPECIES_MAREANIE] = sMareanieTeachLearnset, + [SPECIES_TOXAPEX] = sToxapexTeachLearnset, + [SPECIES_MUDBRAY] = sMudbrayTeachLearnset, + [SPECIES_MUDSDALE] = sMudsdaleTeachLearnset, + [SPECIES_DEWPIDER] = sDewpiderTeachLearnset, + [SPECIES_ARAQUANID] = sAraquanidTeachLearnset, + [SPECIES_FOMANTIS] = sFomantisTeachLearnset, + [SPECIES_LURANTIS] = sLurantisTeachLearnset, + [SPECIES_MORELULL] = sMorelullTeachLearnset, + [SPECIES_SHIINOTIC] = sShiinoticTeachLearnset, + [SPECIES_SALANDIT] = sSalanditTeachLearnset, + [SPECIES_SALAZZLE] = sSalazzleTeachLearnset, + [SPECIES_STUFFUL] = sStuffulTeachLearnset, + [SPECIES_BEWEAR] = sBewearTeachLearnset, + [SPECIES_BOUNSWEET] = sBounsweetTeachLearnset, + [SPECIES_STEENEE] = sSteeneeTeachLearnset, + [SPECIES_TSAREENA] = sTsareenaTeachLearnset, + [SPECIES_COMFEY] = sComfeyTeachLearnset, + [SPECIES_ORANGURU] = sOranguruTeachLearnset, + [SPECIES_PASSIMIAN] = sPassimianTeachLearnset, + [SPECIES_WIMPOD] = sWimpodTeachLearnset, + [SPECIES_GOLISOPOD] = sGolisopodTeachLearnset, + [SPECIES_SANDYGAST] = sSandygastTeachLearnset, + [SPECIES_PALOSSAND] = sPalossandTeachLearnset, + [SPECIES_PYUKUMUKU] = sPyukumukuTeachLearnset, + [SPECIES_TYPE_NULL] = sTypeNullTeachLearnset, + [SPECIES_SILVALLY] = sSilvallyTeachLearnset, + [SPECIES_MINIOR] = sMiniorTeachLearnset, + [SPECIES_KOMALA] = sKomalaTeachLearnset, + [SPECIES_TURTONATOR] = sTurtonatorTeachLearnset, + [SPECIES_TOGEDEMARU] = sTogedemaruTeachLearnset, + [SPECIES_MIMIKYU] = sMimikyuTeachLearnset, + [SPECIES_BRUXISH] = sBruxishTeachLearnset, + [SPECIES_DRAMPA] = sDrampaTeachLearnset, + [SPECIES_DHELMISE] = sDhelmiseTeachLearnset, + [SPECIES_JANGMO_O] = sJangmooTeachLearnset, + [SPECIES_HAKAMO_O] = sHakamooTeachLearnset, + [SPECIES_KOMMO_O] = sKommooTeachLearnset, + [SPECIES_TAPU_KOKO] = sTapuKokoTeachLearnset, + [SPECIES_TAPU_LELE] = sTapuLeleTeachLearnset, + [SPECIES_TAPU_BULU] = sTapuBuluTeachLearnset, + [SPECIES_TAPU_FINI] = sTapuFiniTeachLearnset, + [SPECIES_COSMOG] = sCosmogTeachLearnset, + [SPECIES_COSMOEM] = sCosmoemTeachLearnset, + [SPECIES_SOLGALEO] = sSolgaleoTeachLearnset, + [SPECIES_LUNALA] = sLunalaTeachLearnset, + [SPECIES_NIHILEGO] = sNihilegoTeachLearnset, + [SPECIES_BUZZWOLE] = sBuzzwoleTeachLearnset, + [SPECIES_PHEROMOSA] = sPheromosaTeachLearnset, + [SPECIES_XURKITREE] = sXurkitreeTeachLearnset, + [SPECIES_CELESTEELA] = sCelesteelaTeachLearnset, + [SPECIES_KARTANA] = sKartanaTeachLearnset, + [SPECIES_GUZZLORD] = sGuzzlordTeachLearnset, + [SPECIES_NECROZMA] = sNecrozmaTeachLearnset, + [SPECIES_MAGEARNA] = sMagearnaTeachLearnset, + [SPECIES_MARSHADOW] = sMarshadowTeachLearnset, + [SPECIES_POIPOLE] = sPoipoleTeachLearnset, + [SPECIES_NAGANADEL] = sNaganadelTeachLearnset, + [SPECIES_STAKATAKA] = sStakatakaTeachLearnset, + [SPECIES_BLACEPHALON] = sBlacephalonTeachLearnset, + [SPECIES_ZERAORA] = sZeraoraTeachLearnset, + [SPECIES_MELTAN] = sMeltanTeachLearnset, + [SPECIES_MELMETAL] = sMelmetalTeachLearnset, + [SPECIES_GROOKEY] = sGrookeyTeachLearnset, + [SPECIES_THWACKEY] = sThwackeyTeachLearnset, + [SPECIES_RILLABOOM] = sRillaboomTeachLearnset, + [SPECIES_SCORBUNNY] = sScorbunnyTeachLearnset, + [SPECIES_RABOOT] = sRabootTeachLearnset, + [SPECIES_CINDERACE] = sCinderaceTeachLearnset, + [SPECIES_SOBBLE] = sSobbleTeachLearnset, + [SPECIES_DRIZZILE] = sDrizzileTeachLearnset, + [SPECIES_INTELEON] = sInteleonTeachLearnset, + [SPECIES_SKWOVET] = sSkwovetTeachLearnset, + [SPECIES_GREEDENT] = sGreedentTeachLearnset, + [SPECIES_ROOKIDEE] = sRookideeTeachLearnset, + [SPECIES_CORVISQUIRE] = sCorvisquireTeachLearnset, + [SPECIES_CORVIKNIGHT] = sCorviknightTeachLearnset, + [SPECIES_BLIPBUG] = sBlipbugTeachLearnset, + [SPECIES_DOTTLER] = sDottlerTeachLearnset, + [SPECIES_ORBEETLE] = sOrbeetleTeachLearnset, + [SPECIES_NICKIT] = sNickitTeachLearnset, + [SPECIES_THIEVUL] = sThievulTeachLearnset, + [SPECIES_GOSSIFLEUR] = sGossifleurTeachLearnset, + [SPECIES_ELDEGOSS] = sEldegossTeachLearnset, + [SPECIES_WOOLOO] = sWoolooTeachLearnset, + [SPECIES_DUBWOOL] = sDubwoolTeachLearnset, + [SPECIES_CHEWTLE] = sChewtleTeachLearnset, + [SPECIES_DREDNAW] = sDrednawTeachLearnset, + [SPECIES_YAMPER] = sYamperTeachLearnset, + [SPECIES_BOLTUND] = sBoltundTeachLearnset, + [SPECIES_ROLYCOLY] = sRolycolyTeachLearnset, + [SPECIES_CARKOL] = sCarkolTeachLearnset, + [SPECIES_COALOSSAL] = sCoalossalTeachLearnset, + [SPECIES_APPLIN] = sApplinTeachLearnset, + [SPECIES_FLAPPLE] = sFlappleTeachLearnset, + [SPECIES_APPLETUN] = sAppletunTeachLearnset, + [SPECIES_SILICOBRA] = sSilicobraTeachLearnset, + [SPECIES_SANDACONDA] = sSandacondaTeachLearnset, + [SPECIES_CRAMORANT] = sCramorantTeachLearnset, + [SPECIES_ARROKUDA] = sArrokudaTeachLearnset, + [SPECIES_BARRASKEWDA] = sBarraskewdaTeachLearnset, + [SPECIES_TOXEL] = sToxelTeachLearnset, + [SPECIES_TOXTRICITY] = sToxtricityTeachLearnset, + [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachLearnset, + [SPECIES_CENTISKORCH] = sCentiskorchTeachLearnset, + [SPECIES_CLOBBOPUS] = sClobbopusTeachLearnset, + [SPECIES_GRAPPLOCT] = sGrapploctTeachLearnset, + [SPECIES_SINISTEA] = sSinisteaTeachLearnset, + [SPECIES_POLTEAGEIST] = sPolteageistTeachLearnset, + [SPECIES_HATENNA] = sHatennaTeachLearnset, + [SPECIES_HATTREM] = sHattremTeachLearnset, + [SPECIES_HATTERENE] = sHattereneTeachLearnset, + [SPECIES_IMPIDIMP] = sImpidimpTeachLearnset, + [SPECIES_MORGREM] = sMorgremTeachLearnset, + [SPECIES_GRIMMSNARL] = sGrimmsnarlTeachLearnset, + [SPECIES_OBSTAGOON] = sObstagoonTeachLearnset, + [SPECIES_PERRSERKER] = sPerrserkerTeachLearnset, + [SPECIES_CURSOLA] = sCursolaTeachLearnset, + [SPECIES_SIRFETCHD] = sSirfetchdTeachLearnset, + [SPECIES_MR_RIME] = sMrRimeTeachLearnset, + [SPECIES_RUNERIGUS] = sRunerigusTeachLearnset, + [SPECIES_MILCERY] = sMilceryTeachLearnset, + [SPECIES_ALCREMIE] = sAlcremieTeachLearnset, + [SPECIES_FALINKS] = sFalinksTeachLearnset, + [SPECIES_PINCURCHIN] = sPincurchinTeachLearnset, + [SPECIES_SNOM] = sSnomTeachLearnset, + [SPECIES_FROSMOTH] = sFrosmothTeachLearnset, + [SPECIES_STONJOURNER] = sStonjournerTeachLearnset, + [SPECIES_EISCUE] = sEiscueTeachLearnset, + [SPECIES_INDEEDEE] = sIndeedeeTeachLearnset, + [SPECIES_MORPEKO] = sMorpekoTeachLearnset, + [SPECIES_CUFANT] = sCufantTeachLearnset, + [SPECIES_COPPERAJAH] = sCopperajahTeachLearnset, + [SPECIES_DRACOZOLT] = sDracozoltTeachLearnset, + [SPECIES_ARCTOZOLT] = sArctozoltTeachLearnset, + [SPECIES_DRACOVISH] = sDracovishTeachLearnset, + [SPECIES_ARCTOVISH] = sArctovishTeachLearnset, + [SPECIES_DURALUDON] = sDuraludonTeachLearnset, + [SPECIES_DREEPY] = sDreepyTeachLearnset, + [SPECIES_DRAKLOAK] = sDrakloakTeachLearnset, + [SPECIES_DRAGAPULT] = sDragapultTeachLearnset, + [SPECIES_ZACIAN] = sZacianTeachLearnset, + [SPECIES_ZAMAZENTA] = sZamazentaTeachLearnset, + [SPECIES_ETERNATUS] = sEternatusTeachLearnset, + [SPECIES_KUBFU] = sKubfuTeachLearnset, + [SPECIES_URSHIFU] = sUrshifuTeachLearnset, + [SPECIES_ZARUDE] = sZarudeTeachLearnset, + [SPECIES_REGIELEKI] = sRegielekiTeachLearnset, + [SPECIES_REGIDRAGO] = sRegidragoTeachLearnset, + [SPECIES_GLASTRIER] = sGlastrierTeachLearnset, + [SPECIES_SPECTRIER] = sSpectrierTeachLearnset, + [SPECIES_CALYREX] = sCalyrexTeachLearnset, + // Megas + [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachLearnset, + [SPECIES_CHARIZARD_MEGA_X] = sCharizardTeachLearnset, + [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTeachLearnset, + [SPECIES_BLASTOISE_MEGA] = sBlastoiseTeachLearnset, + [SPECIES_BEEDRILL_MEGA] = sBeedrillTeachLearnset, + [SPECIES_PIDGEOT_MEGA] = sPidgeotTeachLearnset, + [SPECIES_ALAKAZAM_MEGA] = sAlakazamTeachLearnset, + [SPECIES_SLOWBRO_MEGA] = sSlowbroTeachLearnset, + [SPECIES_GENGAR_MEGA] = sGengarTeachLearnset, + [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTeachLearnset, + [SPECIES_PINSIR_MEGA] = sPinsirTeachLearnset, + [SPECIES_GYARADOS_MEGA] = sGyaradosTeachLearnset, + [SPECIES_AERODACTYL_MEGA] = sAerodactylTeachLearnset, + [SPECIES_MEWTWO_MEGA_X] = sMewtwoTeachLearnset, + [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTeachLearnset, + [SPECIES_AMPHAROS_MEGA] = sAmpharosTeachLearnset, + [SPECIES_STEELIX_MEGA] = sSteelixTeachLearnset, + [SPECIES_SCIZOR_MEGA] = sScizorTeachLearnset, + [SPECIES_HERACROSS_MEGA] = sHeracrossTeachLearnset, + [SPECIES_HOUNDOOM_MEGA] = sHoundoomTeachLearnset, + [SPECIES_TYRANITAR_MEGA] = sTyranitarTeachLearnset, + [SPECIES_SCEPTILE_MEGA] = sSceptileTeachLearnset, + [SPECIES_BLAZIKEN_MEGA] = sBlazikenTeachLearnset, + [SPECIES_SWAMPERT_MEGA] = sSwampertTeachLearnset, + [SPECIES_GARDEVOIR_MEGA] = sGardevoirTeachLearnset, + [SPECIES_SABLEYE_MEGA] = sSableyeTeachLearnset, + [SPECIES_MAWILE_MEGA] = sMawileTeachLearnset, + [SPECIES_AGGRON_MEGA] = sAggronTeachLearnset, + [SPECIES_MEDICHAM_MEGA] = sMedichamTeachLearnset, + [SPECIES_MANECTRIC_MEGA] = sManectricTeachLearnset, + [SPECIES_SHARPEDO_MEGA] = sSharpedoTeachLearnset, + [SPECIES_CAMERUPT_MEGA] = sCameruptTeachLearnset, + [SPECIES_ALTARIA_MEGA] = sAltariaTeachLearnset, + [SPECIES_BANETTE_MEGA] = sBanetteTeachLearnset, + [SPECIES_ABSOL_MEGA] = sAbsolTeachLearnset, + [SPECIES_GLALIE_MEGA] = sGlalieTeachLearnset, + [SPECIES_SALAMENCE_MEGA] = sSalamenceTeachLearnset, + [SPECIES_METAGROSS_MEGA] = sMetagrossTeachLearnset, + [SPECIES_LATIAS_MEGA] = sLatiasTeachLearnset, + [SPECIES_LATIOS_MEGA] = sLatiosTeachLearnset, + [SPECIES_LOPUNNY_MEGA] = sLopunnyTeachLearnset, + [SPECIES_GARCHOMP_MEGA] = sGarchompTeachLearnset, + [SPECIES_LUCARIO_MEGA] = sLucarioTeachLearnset, + [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTeachLearnset, + [SPECIES_GALLADE_MEGA] = sGalladeTeachLearnset, + [SPECIES_AUDINO_MEGA] = sAudinoTeachLearnset, + [SPECIES_DIANCIE_MEGA] = sDiancieTeachLearnset, + // Special Mega + Primals + [SPECIES_RAYQUAZA_MEGA] = sRayquazaTeachLearnset, + [SPECIES_KYOGRE_PRIMAL] = sKyogreTeachLearnset, + [SPECIES_GROUDON_PRIMAL] = sGroudonTeachLearnset, + // Alolan Forms + [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTeachLearnset, + [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTeachLearnset, + [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTeachLearnset, + [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTeachLearnset, + [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTeachLearnset, + [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTeachLearnset, + [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTeachLearnset, + [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTeachLearnset, + [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTeachLearnset, + [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTeachLearnset, + [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTeachLearnset, + [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTeachLearnset, + [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTeachLearnset, + [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTeachLearnset, + [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTeachLearnset, + [SPECIES_MUK_ALOLAN] = sMukAlolanTeachLearnset, + [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTeachLearnset, + [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTeachLearnset, + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTeachLearnset, + [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTeachLearnset, + [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTeachLearnset, + [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTeachLearnset, + [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTeachLearnset, + [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTeachLearnset, + [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTeachLearnset, + [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTeachLearnset, + [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTeachLearnset, + [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTeachLearnset, + [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTeachLearnset, + [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTeachLearnset, + [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTeachLearnset, + [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTeachLearnset, + [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachLearnset, + [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachLearnset, + [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachLearnset, + [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachLearnset, + [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachLearnset, + // Misc Forms + // Cosplay Pikachu + [SPECIES_PIKACHU_COSPLAY] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_BELLE] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_POP_STAR] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_PH_D] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_LIBRE] = sPikachuTeachLearnset, + // Cap Pikachu + [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTeachLearnset, + [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTeachLearnset, + // Pichu + [SPECIES_PICHU_SPIKY_EARED] = sPichuTeachLearnset, +#endif + // Unown + [SPECIES_UNOWN_B] = sUnownTeachLearnset, + [SPECIES_UNOWN_C] = sUnownTeachLearnset, + [SPECIES_UNOWN_D] = sUnownTeachLearnset, + [SPECIES_UNOWN_E] = sUnownTeachLearnset, + [SPECIES_UNOWN_F] = sUnownTeachLearnset, + [SPECIES_UNOWN_G] = sUnownTeachLearnset, + [SPECIES_UNOWN_H] = sUnownTeachLearnset, + [SPECIES_UNOWN_I] = sUnownTeachLearnset, + [SPECIES_UNOWN_J] = sUnownTeachLearnset, + [SPECIES_UNOWN_K] = sUnownTeachLearnset, + [SPECIES_UNOWN_L] = sUnownTeachLearnset, + [SPECIES_UNOWN_M] = sUnownTeachLearnset, + [SPECIES_UNOWN_N] = sUnownTeachLearnset, + [SPECIES_UNOWN_O] = sUnownTeachLearnset, + [SPECIES_UNOWN_P] = sUnownTeachLearnset, + [SPECIES_UNOWN_Q] = sUnownTeachLearnset, + [SPECIES_UNOWN_R] = sUnownTeachLearnset, + [SPECIES_UNOWN_S] = sUnownTeachLearnset, + [SPECIES_UNOWN_T] = sUnownTeachLearnset, + [SPECIES_UNOWN_U] = sUnownTeachLearnset, + [SPECIES_UNOWN_V] = sUnownTeachLearnset, + [SPECIES_UNOWN_W] = sUnownTeachLearnset, + [SPECIES_UNOWN_X] = sUnownTeachLearnset, + [SPECIES_UNOWN_Y] = sUnownTeachLearnset, + [SPECIES_UNOWN_Z] = sUnownTeachLearnset, + [SPECIES_UNOWN_EMARK] = sUnownTeachLearnset, + [SPECIES_UNOWN_QMARK] = sUnownTeachLearnset, + // Castform + [SPECIES_CASTFORM_SUNNY] = sCastformTeachLearnset, + [SPECIES_CASTFORM_RAINY] = sCastformTeachLearnset, + [SPECIES_CASTFORM_SNOWY] = sCastformTeachLearnset, + // Deoxys + [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTeachLearnset, + [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTeachLearnset, + [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTeachLearnset, +#if P_NEW_POKEMON == TRUE + // Burmy + [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTeachLearnset, + [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTeachLearnset, + // Wormadam + [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTeachLearnset, + [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTeachLearnset, + // Cherrim + [SPECIES_CHERRIM_SUNSHINE] = sCherrimTeachLearnset, + // Shellos + [SPECIES_SHELLOS_EAST_SEA] = sShellosTeachLearnset, + // Gastrodon + [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTeachLearnset, + // Rotom + [SPECIES_ROTOM_HEAT] = sRotomTeachLearnset, + [SPECIES_ROTOM_WASH] = sRotomTeachLearnset, + [SPECIES_ROTOM_FROST] = sRotomTeachLearnset, + [SPECIES_ROTOM_FAN] = sRotomTeachLearnset, + [SPECIES_ROTOM_MOW] = sRotomTeachLearnset, + // Giratina + [SPECIES_GIRATINA_ORIGIN] = sGiratinaTeachLearnset, + // Shaymin + [SPECIES_SHAYMIN_SKY] = sShayminSkyTeachLearnset, + // Arceus + [SPECIES_ARCEUS_FIGHTING] = sArceusTeachLearnset, + [SPECIES_ARCEUS_FLYING] = sArceusTeachLearnset, + [SPECIES_ARCEUS_POISON] = sArceusTeachLearnset, + [SPECIES_ARCEUS_GROUND] = sArceusTeachLearnset, + [SPECIES_ARCEUS_ROCK] = sArceusTeachLearnset, + [SPECIES_ARCEUS_BUG] = sArceusTeachLearnset, + [SPECIES_ARCEUS_GHOST] = sArceusTeachLearnset, + [SPECIES_ARCEUS_STEEL] = sArceusTeachLearnset, + [SPECIES_ARCEUS_FIRE] = sArceusTeachLearnset, + [SPECIES_ARCEUS_WATER] = sArceusTeachLearnset, + [SPECIES_ARCEUS_GRASS] = sArceusTeachLearnset, + [SPECIES_ARCEUS_ELECTRIC] = sArceusTeachLearnset, + [SPECIES_ARCEUS_PSYCHIC] = sArceusTeachLearnset, + [SPECIES_ARCEUS_ICE] = sArceusTeachLearnset, + [SPECIES_ARCEUS_DRAGON] = sArceusTeachLearnset, + [SPECIES_ARCEUS_DARK] = sArceusTeachLearnset, + [SPECIES_ARCEUS_FAIRY] = sArceusTeachLearnset, + // Basculin + [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTeachLearnset, + // Darmanitan + [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachLearnset, + [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachLearnset, + // Deerling + [SPECIES_DEERLING_SUMMER] = sDeerlingTeachLearnset, + [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachLearnset, + [SPECIES_DEERLING_WINTER] = sDeerlingTeachLearnset, + // Sawsbuck + [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTeachLearnset, + [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTeachLearnset, + [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTeachLearnset, + // Therian Forms + [SPECIES_TORNADUS_THERIAN] = sTornadusTeachLearnset, + [SPECIES_THUNDURUS_THERIAN] = sThundurusTeachLearnset, + [SPECIES_LANDORUS_THERIAN] = sLandorusTeachLearnset, + // Kyurem + [SPECIES_KYUREM_WHITE] = sKyuremTeachLearnset, + [SPECIES_KYUREM_BLACK] = sKyuremTeachLearnset, + // Keldeo + [SPECIES_KELDEO_RESOLUTE] = sKeldeoTeachLearnset, + // Meloetta + [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTeachLearnset, + // Genesect + [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTeachLearnset, + [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTeachLearnset, + [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTeachLearnset, + [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTeachLearnset, + // Greninja + [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTeachLearnset, + [SPECIES_GRENINJA_ASH] = sGreninjaTeachLearnset, + // Vivillon + [SPECIES_VIVILLON_POLAR] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_TUNDRA] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_GARDEN] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_ELEGANT] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_MEADOW] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_MODERN] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_MARINE] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_SANDSTORM] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_RIVER] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_MONSOON] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_SAVANNA] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_SUN] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_OCEAN] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_JUNGLE] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_FANCY] = sVivillonTeachLearnset, + [SPECIES_VIVILLON_POKE_BALL] = sVivillonTeachLearnset, + // Flabébé + [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTeachLearnset, + [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTeachLearnset, + [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTeachLearnset, + [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTeachLearnset, + // Floette + [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTeachLearnset, + [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTeachLearnset, + [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTeachLearnset, + [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTeachLearnset, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTeachLearnset, + // Florges + [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTeachLearnset, + [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTeachLearnset, + [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTeachLearnset, + [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTeachLearnset, + //Furfrou + [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTeachLearnset, + [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTeachLearnset, + // Meowstic + [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTeachLearnset, + // Aegislash + [SPECIES_AEGISLASH_BLADE] = sAegislashTeachLearnset, + // Pumpkaboo + [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTeachLearnset, + [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTeachLearnset, + [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTeachLearnset, + // Gourgeist + [SPECIES_GOURGEIST_SMALL] = sGourgeistTeachLearnset, + [SPECIES_GOURGEIST_LARGE] = sGourgeistTeachLearnset, + [SPECIES_GOURGEIST_SUPER] = sGourgeistTeachLearnset, + // Xerneas + [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachLearnset, + // Zygarde + [SPECIES_ZYGARDE_10] = sZygardeTeachLearnset, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachLearnset, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachLearnset, + [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachLearnset, + // Hoopa + [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTeachLearnset, + // Oricorio + [SPECIES_ORICORIO_POM_POM] = sOricorioTeachLearnset, + [SPECIES_ORICORIO_PAU] = sOricorioTeachLearnset, + [SPECIES_ORICORIO_SENSU] = sOricorioTeachLearnset, + // Rockruff + [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTeachLearnset, + // Lycanroc + [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTeachLearnset, + [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTeachLearnset, + // Wishiwashi + [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTeachLearnset, + // Silvally + [SPECIES_SILVALLY_FIGHTING] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_FLYING] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_POISON] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_GROUND] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_ROCK] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_BUG] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_GHOST] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_STEEL] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_FIRE] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_WATER] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_GRASS] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_ICE] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_DRAGON] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_DARK] = sSilvallyTeachLearnset, + [SPECIES_SILVALLY_FAIRY] = sSilvallyTeachLearnset, + // Minior + [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTeachLearnset, + [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTeachLearnset, + [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTeachLearnset, + [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTeachLearnset, + [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTeachLearnset, + [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_RED] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_GREEN] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_BLUE] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTeachLearnset, + [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTeachLearnset, + // Mimikyu + [SPECIES_MIMIKYU_BUSTED] = sMimikyuTeachLearnset, + // Necrozma + [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTeachLearnset, + [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTeachLearnset, + [SPECIES_NECROZMA_ULTRA] = sNecrozmaTeachLearnset, + // Magearna + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTeachLearnset, + // Cramorant + [SPECIES_CRAMORANT_GULPING] = sCramorantTeachLearnset, + [SPECIES_CRAMORANT_GORGING] = sCramorantTeachLearnset, + // Toxtricity + [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTeachLearnset, + // Sinistea + [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachLearnset, + // Polteageist + [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachLearnset, + // Alcremie + [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachLearnset, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachLearnset, + // Eiscue + [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachLearnset, + // Indeedee + [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTeachLearnset, + // Morpeko + [SPECIES_MORPEKO_HANGRY] = sMorpekoTeachLearnset, + // Zacian + [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTeachLearnset, + // Zamazenta + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTeachLearnset, + // Eternatus + [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTeachLearnset, + // Urshifu + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTeachLearnset, + // Zarude + [SPECIES_ZARUDE_DADA] = sZarudeTeachLearnset, + // Calyrex + [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTeachLearnset, + [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachLearnset, +#endif +}; diff --git a/src/data/pokemon/teach_learnsets.h b/src/data/pokemon/teach_learnsets.h new file mode 100644 index 0000000000..560afc5038 --- /dev/null +++ b/src/data/pokemon/teach_learnsets.h @@ -0,0 +1,33464 @@ +static const u16 sBulbasaurTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIvysaurTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenusaurTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharmanderTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharmeleonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharizardTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSquirtleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWartortleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlastoiseTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCaterpieTeachLearnset[] = { + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMetapodTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sButterfreeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeedleTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sKakunaTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sBeedrillTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeottoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidgeotTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRattataTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaticateTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpearowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sFearowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sEkansTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sArbokTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikachuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaichuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandshrewTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandslashTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoranFTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidorinaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoqueenTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidoranMTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidorinoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNidokingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sClefairyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClefableTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVulpixTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinetalesTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sJigglypuffTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWigglytuffTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZubatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolbatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sOddishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGloomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVileplumeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sParasTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sParasectTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenonatTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenomothTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiglettTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDugtrioTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPersianTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPsyduckTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolduckTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMankeyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrimeapeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrowlitheTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sArcanineTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwagTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwhirlTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoliwrathTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKadabraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlakazamTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachopTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachokeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMachampTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sBellsproutTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeepinbellTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVictreebelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTentacoolTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTentacruelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGeodudeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGravelerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolemTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPonytaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRapidashTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowpokeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowbroTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnemiteTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnetonTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFarfetchdTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDoduoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDodrioTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewgongTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMukTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sShellderTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCloysterTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGastlyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHaunterTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGengarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sOnixTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrowzeeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHypnoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrabbyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKinglerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVoltorbTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectrodeTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggcuteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggutorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCuboneTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarowakTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmonleeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmonchanTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sLickitungTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sKoffingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeezingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhyhornTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhydonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sChanseyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTangelaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKangaskhanTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHorseaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeadraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoldeenTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeakingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaryuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStarmieTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrMimeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScytherTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJynxTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectabuzzTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagmarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPinsirTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaurosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagikarpTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sGyaradosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLaprasTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDittoTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sEeveeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sVaporeonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sJolteonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlareonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sOmanyteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sOmastarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKabutoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKabutopsTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAerodactylTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnorlaxTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sArticunoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sZapdosTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMoltresTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDratiniTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragonairTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragoniteTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMewtwoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMewTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChikoritaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBayleefTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeganiumTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCyndaquilTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuilavaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyphlosionTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTotodileTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCroconawTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFeraligatrTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSentretTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurretTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoothootTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoctowlTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLedybaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sLedianTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpinarakTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAriadosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrobatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sChinchouTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLanturnTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPichuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCleffaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIgglybuffTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogepiTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogeticTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNatuTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sXatuTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMareepTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlaaffyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmpharosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBellossomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarillTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzumarillTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSudowoodoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPolitoedTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoppipTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkiploomTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJumpluffTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAipomTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSunkernTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSunfloraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYanmaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWooperTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuagsireTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sEspeonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sUmbreonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMurkrowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowkingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMisdreavusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnownTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWobbuffetTeachLearnset[] = { + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGirafarigTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPinecoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sForretressTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDunsparceTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGligarTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSteelixTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnubbullTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGranbullTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sQwilfishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScizorTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShuckleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeracrossTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSneaselTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTeddiursaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrsaringTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlugmaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagcargoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwinubTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPiloswineTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorsolaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRemoraidTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sOctilleryTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelibirdTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMantineTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkarmoryTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoundourTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoundoomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sKingdraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhanpyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDonphanTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygon2TeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStantlerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSmeargleTeachLearnset[] = { + MOVE_FLAMETHROWER, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyrogueTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sHitmontopTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSmoochumTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sElekidTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagbyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiltankTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlisseyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SOFT_BOILED, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaikouTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEnteiTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSuicuneTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLarvitarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPupitarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyranitarTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLugiaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoOhTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCelebiTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTreeckoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrovyleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSceptileTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorchicTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCombuskenTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlazikenTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudkipTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarshtompTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwampertTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoochyenaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMightyenaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sZigzagoonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLinooneTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWurmpleTeachLearnset[] = { + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilcoonTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sBeautiflyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCascoonTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sDustoxTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLotadTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLombreTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sLudicoloTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeedotTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNuzleafTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShiftryTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTaillowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwellowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWingullTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPelipperTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaltsTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKirliaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGardevoirTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSurskitTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMasquerainTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sShroomishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBreloomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlakothTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sVigorothTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlakingTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sNincadaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinjaskTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShedinjaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhismurTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sLoudredTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sExploudTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMakuhitaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHariyamaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzurillTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sNosepassTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkittyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelcattyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSableyeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMawileTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sAronTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLaironTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAggronTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMedititeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMedichamTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectrikeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sManectricTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPlusleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMinunTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolbeatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIllumiseTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoseliaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGulpinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwalotTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarvanhaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSharpedoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sWailmerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWailordTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNumelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCameruptTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorkoalTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpoinkTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrumpigTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpindaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrapinchTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVibravaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlygonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCacneaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCacturneTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwabluTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sAltariaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sZangooseTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeviperTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLunatoneTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSolrockTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarboachTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhiscashTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorphishTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrawdauntTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBaltoyTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sClaydolTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLileepTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCradilyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAnorithTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArmaldoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFeebasTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiloticTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCastformTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKecleonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShuppetTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBanetteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuskullTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDusclopsTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTropiusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChimechoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbsolTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWynautTeachLearnset[] = { + MOVE_SAFEGUARD, + MOVE_COUNTER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnoruntTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlalieTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSphealTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSealeoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWalreinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sClamperlTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHuntailTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGorebyssTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRelicanthTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuvdiscTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBagonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sShelgonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalamenceTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBeldumTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sMetangTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMetagrossTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegirockTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegiceTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegisteelTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLatiasTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLatiosTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyogreTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGroudonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRayquazaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJirachiTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +#if P_NEW_POKEMON == TRUE + +static const u16 sTurtwigTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrotleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorterraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChimcharTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sMonfernoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sInfernapeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPiplupTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrinplupTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmpoleonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStarlyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaraviaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sStaraptorTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBidoofTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBibarelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKricketotTeachLearnset[] = { + MOVE_MUD_SLAP, + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKricketuneTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShinxTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuxioTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLuxrayTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBudewTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoseradeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCranidosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sRampardosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sShieldonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBastiodonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBurmyTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMothimTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCombeeTeachLearnset[] = { + MOVE_MUD_SLAP, + MOVE_SNORE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sVespiquenTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPachirisuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBuizelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloatzelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCherubiTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCherrimTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShellosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGastrodonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmbipomTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrifloonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrifblimTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBunearyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLopunnyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMismagiusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHonchkrowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlameowTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sPuruglyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sChinglingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunkyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkuntankTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBronzorTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBronzongTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBonslyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMimeJrTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHappinyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_COUNTER, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChatotTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MIMIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpiritombTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGibleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGabiteTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGarchompTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMunchlaxTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sRioluTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sLucarioTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sHippopotasTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHippowdonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkorupiTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrapionTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCroagunkTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxicroakTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarnivineTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFinneonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLumineonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMantykeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnoverTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAbomasnowTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeavileTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagnezoneTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLickilickyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DEFENSE_CURL, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sRhyperiorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTangrowthTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sElectivireTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagmortarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogekissTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYanmegaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sLeafeonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlaceonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGliscorTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMamoswineTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPorygonZTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGalladeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_FURY_CUTTER, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sProbopassTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDusknoirTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFroslassTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRotomTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sUxieTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMespritTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAzelfTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDialgaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalkiaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeatranTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegigigasTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_RAIN_DANCE, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGiratinaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCresseliaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhioneTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sManaphyTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarkraiTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShayminTeachLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArceusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVictiniTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnivyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sServineTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSerperiorTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTepigTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPigniteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmboarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sOshawottTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewottTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSamurottTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPatratTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWatchogTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLillipupTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHerdierTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStoutlandTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPurrloinTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLiepardTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPansageTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimisageTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPansearTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimisearTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPanpourTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSimipourTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMunnaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMusharnaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPidoveTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTranquillTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sUnfezantTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlitzleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZebstrikaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRoggenrolaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBoldoreTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGigalithTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWoobatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwoobatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrilburTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sExcadrillTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAudinoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTimburrTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGurdurrTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DYNAMIC_PUNCH, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sConkeldurrTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DYNAMIC_PUNCH, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTympoleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalpitoadTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSeismitoadTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sThrohTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawkTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSewaddleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwadloonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLeavannyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVenipedeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhirlipedeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sScolipedeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCottoneeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWhimsicottTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPetililTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLilligantTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBasculinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_DOUBLE_EDGE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandileTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrokorokTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKrookodileTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarumakaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarmanitanTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMaractusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDwebbleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrustleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScraggyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sScraftyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sSigilyphTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamaskTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCofagrigusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTirtougaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarracostaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sArchenTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sArcheopsTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrubbishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGarbodorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sZoruaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZoroarkTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMinccinoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCinccinoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothitaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothoritaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGothitelleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSolosisTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuosionTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sReuniclusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDucklettTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwannaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanilliteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanillishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVanilluxeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeerlingTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSawsbuckTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEmolgaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKarrablastTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEscavalierTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFoongusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmoongussTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrillishTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sJellicentTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlomomolaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sJoltikTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGalvantulaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFerroseedTeachLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFerrothornTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlinkTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlangTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlinklangTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTynamoTeachLearnset[] = { + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEelektrikTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEelektrossTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sElgyemTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBeheeyemTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLitwickTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLampentTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sChandelureTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAxewTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFraxureTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHaxorusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCubchooTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBearticTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCryogonalTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sShelmetTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAccelgorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunfiskTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMienfooTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMienshaoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDruddigonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolettTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DYNAMIC_PUNCH, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolurkTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DYNAMIC_PUNCH, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPawniardTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBisharpTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBouffalantTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRuffletTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBraviaryTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVullabyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMandibuzzTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHeatmorTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_FIRE_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sDurantTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeinoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZweilousTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHydreigonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLarvestaTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolcaronaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCobalionTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTerrakionTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVirizionTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTornadusTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sThundurusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sReshiramTeachLearnset[] = { + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sZekromTeachLearnset[] = { + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLandorusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKyuremTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKeldeoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeloettaTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGenesectTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChespinTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sQuilladinTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sChesnaughtTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFennekinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBraixenTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sDelphoxTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFroakieTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrogadierTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGreninjaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBunnelbyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiggersbyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFletchlingTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFletchinderTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTalonflameTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScatterbugTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sSpewpaTeachLearnset[] = { + MOVE_PROTECT, + MOVE_UNAVAILABLE, +}; + +static const u16 sVivillonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLitleoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPyroarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlabebeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlorgesTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkiddoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGogoatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPanchamTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPangoroTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sFurfrouTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TOXIC, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEspurrTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowsticTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHonedgeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDoubladeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAegislashTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpritzeeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAromatisseTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSwirlixTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlurpuffTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sInkayTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMalamarTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBinacleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarbaracleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkrelpTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragalgeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sClauncherTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClawitzerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHelioptileTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHelioliskTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyruntTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTyrantrumTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAmauraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAurorusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSylveonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sHawluchaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SECRET_POWER, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sDedenneTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarbinkTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoomyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSliggooTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGoodraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_FIRE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sKlefkiTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPhantumpTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrevenantTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPumpkabooTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGourgeistTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBergmiteTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAvaluggTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_STRENGTH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoibatTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sNoivernTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sXerneasTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SECRET_POWER, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYveltalTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sZygardeTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHOCK_WAVE, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiancieTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoopaTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVolcanionTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRowletTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDartrixTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDecidueyeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLittenTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTorracatTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIncineroarTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPopplioTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sBrionneTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPrimarinaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPikipekTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTrumbeakTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sToucannonTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYungoosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGumshoosTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrubbinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCharjabugTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sVikavoltTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrabrawlerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DYNAMIC_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCrabominableTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DYNAMIC_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sOricorioTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCutieflyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRibombeeTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sRockruffTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWishiwashiTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DOUBLE_EDGE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMareanieTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxapexTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudbrayTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMudsdaleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_MEGA_KICK, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sDewpiderTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sAraquanidTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sFomantisTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLurantisTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorelullTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sShiinoticTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalanditTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSalazzleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sStuffulTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sBewearTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sBounsweetTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sSteeneeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTsareenaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sComfeyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sOranguruTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPassimianTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_SLIDE, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWimpodTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolisopodTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_FURY_CUTTER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandygastTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPalossandTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sPyukumukuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_HAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTypeNullTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilvallyTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HAIL, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_EXPLOSION, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMiniorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_EXPLOSION, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sKomalaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_RETURN, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTurtonatorTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTogedemaruTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMimikyuTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_MIMIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBruxishTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SNATCH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_DREAM_EATER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrampaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDhelmiseTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sJangmooTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHakamooTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKommooTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHOCK_WAVE, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuKokoTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuLeleTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuBuluTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sTapuFiniTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCosmogTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sCosmoemTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sSolgaleoTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLunalaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNihilegoTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SLUDGE_BOMB, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBuzzwoleTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPheromosaTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sXurkitreeTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCelesteelaTeachLearnset[] = { + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_EXPLOSION, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sKartanaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_TOXIC, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGuzzlordTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNecrozmaTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMagearnaTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SOLAR_BEAM, + MOVE_THUNDERBOLT, + MOVE_DEFENSE_CURL, + MOVE_EXPLOSION, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarshadowTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SHADOW_BALL, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_COUNTER, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_PSYCH_UP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sPoipoleTeachLearnset[] = { + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNaganadelTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStakatakaTeachLearnset[] = { + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SKILL_SWAP, + MOVE_TOXIC, + MOVE_DOUBLE_EDGE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlacephalonTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sZeraoraTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SHOCK_WAVE, + MOVE_SNATCH, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_FIRE_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeltanTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sMelmetalTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrookeyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sThwackeyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRillaboomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sScorbunnyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRabootTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCinderaceTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSobbleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrizzileTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sInteleonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_WATER_PULSE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSkwovetTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGreedentTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRookideeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FLY, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorvisquireTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FLY, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorviknightTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBlipbugTeachLearnset[] = { + MOVE_UNAVAILABLE, +}; + +static const u16 sDottlerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sOrbeetleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sNickitTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sThievulTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sGossifleurTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEldegossTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWoolooTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_COUNTER, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDubwoolTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sChewtleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrednawTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamperTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBoltundTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROAR, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRolycolyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCarkolTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCoalossalTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SOLAR_BEAM, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sApplinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DEFENSE_CURL, + MOVE_ROLLOUT, + MOVE_UNAVAILABLE, +}; + +static const u16 sFlappleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_FLY, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAppletunTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BULLET_SEED, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSilicobraTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SANDSTORM, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandacondaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCramorantTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArrokudaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_WATERFALL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sBarraskewdaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxelTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxtricityTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSizzlipedeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_SUNNY_DAY, + MOVE_DEFENSE_CURL, + MOVE_ENDURE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCentiskorchTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sClobbopusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIVE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_SEISMIC_TOSS, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrapploctTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SURF, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSinisteaTeachLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPolteageistTeachLearnset[] = { + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHatennaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHattremTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sHattereneTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sImpidimpTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorgremTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimmsnarlTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_TORMENT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sObstagoonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPerrserkerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCursolaTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSirfetchdTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrRimeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRunerigusTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMilceryTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sAlcremieTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFalinksTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPincurchinTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SURF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSnomTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFrosmothTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStonjournerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sEiscueTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIndeedeeTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMorpekoTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULLET_SEED, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCufantTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_STRENGTH, + MOVE_BODY_SLAM, + MOVE_DEFENSE_CURL, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sCopperajahTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_ROCK_SLIDE, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDracozoltTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArctozoltTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDracovishTeachLearnset[] = { + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArctovishTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIVE, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SURF, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDuraludonTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDreepyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDrakloakTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDragapultTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIVE, + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SOLAR_BEAM, + MOVE_STEEL_WING, + MOVE_SURF, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZacianTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZamazentaTeachLearnset[] = { + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SOLAR_BEAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sEternatusTeachLearnset[] = { + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SOLAR_BEAM, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sKubfuTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrshifuTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sZarudeTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_DIG, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegielekiTeachLearnset[] = { + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sRegidragoTeachLearnset[] = { + MOVE_DRAGON_CLAW, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sGlastrierTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSpectrierTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexTeachLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRattataAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaticateAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BULK_UP, + MOVE_CUT, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sRaichuAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandshrewAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sSandslashAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sVulpixAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sNinetalesAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REFLECT, + MOVE_REST, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDiglettAlolanTeachLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sDugtrioAlolanTeachLearnset[] = { + MOVE_CUT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SLUDGE_BOMB, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthAlolanTeachLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sPersianAlolanTeachLearnset[] = { + MOVE_CUT, + MOVE_FACADE, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_TAUNT, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGeodudeAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_EARTHQUAKE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGravelerAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGolemAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sGrimerAlolanTeachLearnset[] = { + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMukAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sExeggutorAlolanTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLAMETHROWER, + MOVE_FLASH, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SOLAR_BEAM, + MOVE_SLUDGE_BOMB, + MOVE_STRENGTH, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMarowakAlolanTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_SHADOW_BALL, + MOVE_STRENGTH, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowthGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sPonytaGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sRapidashGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowpokeGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowbroGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sFarfetchdGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_SUNNY_DAY, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_FURY_CUTTER, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWeezingGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_EXPLOSION, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sMrMimeGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_METRONOME, + MOVE_MIMIC, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sArticunoGalarianTeachLearnset[] = { + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_STEEL_WING, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sZapdosGalarianTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_MEGA_KICK, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sMoltresGalarianTeachLearnset[] = { + MOVE_FACADE, + MOVE_FLY, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_STEEL_WING, + MOVE_TAUNT, + MOVE_ENDURE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sSlowkingGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_DIVE, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SLUDGE_BOMB, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICE_PUNCH, + MOVE_ICY_WIND, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCorsolaGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_CALM_MIND, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_WATER_PULSE, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sZigzagoonGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLinooneGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_DIG, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_SHADOW_BALL, + MOVE_SUNNY_DAY, + MOVE_SURF, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarumakaGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_DIG, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_FOCUS_PUNCH, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDarmanitanGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BLIZZARD, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FIRE_BLAST, + MOVE_FLAMETHROWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_OVERHEAT, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_BODY_SLAM, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sYamaskGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_THIEF, + MOVE_ENDURE, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_UNAVAILABLE, +}; + +static const u16 sStunfiskGalarianTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_TOMB, + MOVE_SANDSTORM, + MOVE_SLUDGE_BOMB, + MOVE_SURF, + MOVE_COUNTER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +#endif + +static const u16 sDeoxysAttackTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysDefenseTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +static const u16 sDeoxysSpeedTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SOLAR_BEAM, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_WATER_PULSE, + MOVE_UNAVAILABLE, +}; + +#if P_NEW_POKEMON == TRUE + +static const u16 sBurmySandyCloakTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sBurmyTrashCloakTeachLearnset[] = { + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_SNORE, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamSandyCloakTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROCK_TOMB, + MOVE_SAFEGUARD, + MOVE_SANDSTORM, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_MUD_SLAP, + MOVE_PSYCH_UP, + MOVE_ROLLOUT, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sWormadamTrashCloakTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SUNNY_DAY, + MOVE_THIEF, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_ENDURE, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_UNAVAILABLE, +}; + +static const u16 sGiratinaOriginTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DOUBLE_TEAM, + MOVE_DRAGON_CLAW, + MOVE_EARTHQUAKE, + MOVE_FACADE, + MOVE_FLY, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_SMASH, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_STEEL_WING, + MOVE_STRENGTH, + MOVE_SUNNY_DAY, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sShayminSkyTeachLearnset[] = { + MOVE_BULLET_SEED, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sFloetteEternalFlowerTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_GIGA_DRAIN, + MOVE_HIDDEN_POWER, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sHoopaUnboundTeachLearnset[] = { + MOVE_BRICK_BREAK, + MOVE_CALM_MIND, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FOCUS_PUNCH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_THIEF, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sMeowsticFemaleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_CUT, + MOVE_DIG, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FLASH, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_HYPER_BEAM, + MOVE_IRON_TAIL, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_RAIN_DANCE, + MOVE_REFLECT, + MOVE_REST, + MOVE_RETURN, + MOVE_SAFEGUARD, + MOVE_SECRET_POWER, + MOVE_SHADOW_BALL, + MOVE_SHOCK_WAVE, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_SUNNY_DAY, + MOVE_THUNDERBOLT, + MOVE_TORMENT, + MOVE_TOXIC, + MOVE_DREAM_EATER, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocMidnightTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sLycanrocDuskTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DOUBLE_TEAM, + MOVE_FACADE, + MOVE_FRUSTRATION, + MOVE_HIDDEN_POWER, + MOVE_IRON_TAIL, + MOVE_PROTECT, + MOVE_REST, + MOVE_RETURN, + MOVE_ROAR, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_TOXIC, + MOVE_UNAVAILABLE, +}; + +static const u16 sToxtricityLowKeyTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_FACADE, + MOVE_HYPER_BEAM, + MOVE_PROTECT, + MOVE_REST, + MOVE_SHOCK_WAVE, + MOVE_SLUDGE_BOMB, + MOVE_TAUNT, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_TOXIC, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWAGGER, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_THUNDER_WAVE, + MOVE_UNAVAILABLE, +}; + +static const u16 sIndeedeeFemaleTeachLearnset[] = { + MOVE_ATTRACT, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_PSYCH_UP, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +static const u16 sUrshifuRapidStrikeStyleTeachLearnset[] = { + MOVE_AERIAL_ACE, + MOVE_ATTRACT, + MOVE_BRICK_BREAK, + MOVE_BULK_UP, + MOVE_DIG, + MOVE_DIVE, + MOVE_FACADE, + MOVE_FOCUS_PUNCH, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_REST, + MOVE_ROCK_SMASH, + MOVE_ROCK_TOMB, + MOVE_TAUNT, + MOVE_WATERFALL, + MOVE_BODY_SLAM, + MOVE_COUNTER, + MOVE_DYNAMIC_PUNCH, + MOVE_ENDURE, + MOVE_FIRE_PUNCH, + MOVE_ICE_PUNCH, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_ROCK_SLIDE, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_THUNDER_PUNCH, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexIceRiderTeachLearnset[] = { + MOVE_BLIZZARD, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HAIL, + MOVE_HYPER_BEAM, + MOVE_ICE_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_TORMENT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_ICY_WIND, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_SWORDS_DANCE, + MOVE_UNAVAILABLE, +}; + +static const u16 sCalyrexShadowRiderTeachLearnset[] = { + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_FACADE, + MOVE_GIGA_DRAIN, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_PSYCHIC, + MOVE_REFLECT, + MOVE_REST, + MOVE_SAFEGUARD, + MOVE_SHADOW_BALL, + MOVE_SKILL_SWAP, + MOVE_SOLAR_BEAM, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_BODY_SLAM, + MOVE_DOUBLE_EDGE, + MOVE_ENDURE, + MOVE_METRONOME, + MOVE_SLEEP_TALK, + MOVE_SNORE, + MOVE_SUBSTITUTE, + MOVE_SWIFT, + MOVE_UNAVAILABLE, +}; + +#endif diff --git a/src/data/pokemon/tmhm_learnset_pointers.h b/src/data/pokemon/tmhm_learnset_pointers.h deleted file mode 100644 index 8fd8920a42..0000000000 --- a/src/data/pokemon/tmhm_learnset_pointers.h +++ /dev/null @@ -1,1279 +0,0 @@ -const u16 *const gTMHMLearnsets[NUM_SPECIES] = -{ - [SPECIES_NONE] = sBulbasaurTMHMLearnset, - [SPECIES_BULBASAUR] = sBulbasaurTMHMLearnset, - [SPECIES_IVYSAUR] = sIvysaurTMHMLearnset, - [SPECIES_VENUSAUR] = sVenusaurTMHMLearnset, - [SPECIES_CHARMANDER] = sCharmanderTMHMLearnset, - [SPECIES_CHARMELEON] = sCharmeleonTMHMLearnset, - [SPECIES_CHARIZARD] = sCharizardTMHMLearnset, - [SPECIES_SQUIRTLE] = sSquirtleTMHMLearnset, - [SPECIES_WARTORTLE] = sWartortleTMHMLearnset, - [SPECIES_BLASTOISE] = sBlastoiseTMHMLearnset, - [SPECIES_CATERPIE] = sCaterpieTMHMLearnset, - [SPECIES_METAPOD] = sMetapodTMHMLearnset, - [SPECIES_BUTTERFREE] = sButterfreeTMHMLearnset, - [SPECIES_WEEDLE] = sWeedleTMHMLearnset, - [SPECIES_KAKUNA] = sKakunaTMHMLearnset, - [SPECIES_BEEDRILL] = sBeedrillTMHMLearnset, - [SPECIES_PIDGEY] = sPidgeyTMHMLearnset, - [SPECIES_PIDGEOTTO] = sPidgeottoTMHMLearnset, - [SPECIES_PIDGEOT] = sPidgeotTMHMLearnset, - [SPECIES_RATTATA] = sRattataTMHMLearnset, - [SPECIES_RATICATE] = sRaticateTMHMLearnset, - [SPECIES_SPEAROW] = sSpearowTMHMLearnset, - [SPECIES_FEAROW] = sFearowTMHMLearnset, - [SPECIES_EKANS] = sEkansTMHMLearnset, - [SPECIES_ARBOK] = sArbokTMHMLearnset, - [SPECIES_PIKACHU] = sPikachuTMHMLearnset, - [SPECIES_RAICHU] = sRaichuTMHMLearnset, - [SPECIES_SANDSHREW] = sSandshrewTMHMLearnset, - [SPECIES_SANDSLASH] = sSandslashTMHMLearnset, - [SPECIES_NIDORAN_F] = sNidoranFTMHMLearnset, - [SPECIES_NIDORINA] = sNidorinaTMHMLearnset, - [SPECIES_NIDOQUEEN] = sNidoqueenTMHMLearnset, - [SPECIES_NIDORAN_M] = sNidoranMTMHMLearnset, - [SPECIES_NIDORINO] = sNidorinoTMHMLearnset, - [SPECIES_NIDOKING] = sNidokingTMHMLearnset, - [SPECIES_CLEFAIRY] = sClefairyTMHMLearnset, - [SPECIES_CLEFABLE] = sClefableTMHMLearnset, - [SPECIES_VULPIX] = sVulpixTMHMLearnset, - [SPECIES_NINETALES] = sNinetalesTMHMLearnset, - [SPECIES_JIGGLYPUFF] = sJigglypuffTMHMLearnset, - [SPECIES_WIGGLYTUFF] = sWigglytuffTMHMLearnset, - [SPECIES_ZUBAT] = sZubatTMHMLearnset, - [SPECIES_GOLBAT] = sGolbatTMHMLearnset, - [SPECIES_ODDISH] = sOddishTMHMLearnset, - [SPECIES_GLOOM] = sGloomTMHMLearnset, - [SPECIES_VILEPLUME] = sVileplumeTMHMLearnset, - [SPECIES_PARAS] = sParasTMHMLearnset, - [SPECIES_PARASECT] = sParasectTMHMLearnset, - [SPECIES_VENONAT] = sVenonatTMHMLearnset, - [SPECIES_VENOMOTH] = sVenomothTMHMLearnset, - [SPECIES_DIGLETT] = sDiglettTMHMLearnset, - [SPECIES_DUGTRIO] = sDugtrioTMHMLearnset, - [SPECIES_MEOWTH] = sMeowthTMHMLearnset, - [SPECIES_PERSIAN] = sPersianTMHMLearnset, - [SPECIES_PSYDUCK] = sPsyduckTMHMLearnset, - [SPECIES_GOLDUCK] = sGolduckTMHMLearnset, - [SPECIES_MANKEY] = sMankeyTMHMLearnset, - [SPECIES_PRIMEAPE] = sPrimeapeTMHMLearnset, - [SPECIES_GROWLITHE] = sGrowlitheTMHMLearnset, - [SPECIES_ARCANINE] = sArcanineTMHMLearnset, - [SPECIES_POLIWAG] = sPoliwagTMHMLearnset, - [SPECIES_POLIWHIRL] = sPoliwhirlTMHMLearnset, - [SPECIES_POLIWRATH] = sPoliwrathTMHMLearnset, - [SPECIES_ABRA] = sAbraTMHMLearnset, - [SPECIES_KADABRA] = sKadabraTMHMLearnset, - [SPECIES_ALAKAZAM] = sAlakazamTMHMLearnset, - [SPECIES_MACHOP] = sMachopTMHMLearnset, - [SPECIES_MACHOKE] = sMachokeTMHMLearnset, - [SPECIES_MACHAMP] = sMachampTMHMLearnset, - [SPECIES_BELLSPROUT] = sBellsproutTMHMLearnset, - [SPECIES_WEEPINBELL] = sWeepinbellTMHMLearnset, - [SPECIES_VICTREEBEL] = sVictreebelTMHMLearnset, - [SPECIES_TENTACOOL] = sTentacoolTMHMLearnset, - [SPECIES_TENTACRUEL] = sTentacruelTMHMLearnset, - [SPECIES_GEODUDE] = sGeodudeTMHMLearnset, - [SPECIES_GRAVELER] = sGravelerTMHMLearnset, - [SPECIES_GOLEM] = sGolemTMHMLearnset, - [SPECIES_PONYTA] = sPonytaTMHMLearnset, - [SPECIES_RAPIDASH] = sRapidashTMHMLearnset, - [SPECIES_SLOWPOKE] = sSlowpokeTMHMLearnset, - [SPECIES_SLOWBRO] = sSlowbroTMHMLearnset, - [SPECIES_MAGNEMITE] = sMagnemiteTMHMLearnset, - [SPECIES_MAGNETON] = sMagnetonTMHMLearnset, - [SPECIES_FARFETCHD] = sFarfetchdTMHMLearnset, - [SPECIES_DODUO] = sDoduoTMHMLearnset, - [SPECIES_DODRIO] = sDodrioTMHMLearnset, - [SPECIES_SEEL] = sSeelTMHMLearnset, - [SPECIES_DEWGONG] = sDewgongTMHMLearnset, - [SPECIES_GRIMER] = sGrimerTMHMLearnset, - [SPECIES_MUK] = sMukTMHMLearnset, - [SPECIES_SHELLDER] = sShellderTMHMLearnset, - [SPECIES_CLOYSTER] = sCloysterTMHMLearnset, - [SPECIES_GASTLY] = sGastlyTMHMLearnset, - [SPECIES_HAUNTER] = sHaunterTMHMLearnset, - [SPECIES_GENGAR] = sGengarTMHMLearnset, - [SPECIES_ONIX] = sOnixTMHMLearnset, - [SPECIES_DROWZEE] = sDrowzeeTMHMLearnset, - [SPECIES_HYPNO] = sHypnoTMHMLearnset, - [SPECIES_KRABBY] = sKrabbyTMHMLearnset, - [SPECIES_KINGLER] = sKinglerTMHMLearnset, - [SPECIES_VOLTORB] = sVoltorbTMHMLearnset, - [SPECIES_ELECTRODE] = sElectrodeTMHMLearnset, - [SPECIES_EXEGGCUTE] = sExeggcuteTMHMLearnset, - [SPECIES_EXEGGUTOR] = sExeggutorTMHMLearnset, - [SPECIES_CUBONE] = sCuboneTMHMLearnset, - [SPECIES_MAROWAK] = sMarowakTMHMLearnset, - [SPECIES_HITMONLEE] = sHitmonleeTMHMLearnset, - [SPECIES_HITMONCHAN] = sHitmonchanTMHMLearnset, - [SPECIES_LICKITUNG] = sLickitungTMHMLearnset, - [SPECIES_KOFFING] = sKoffingTMHMLearnset, - [SPECIES_WEEZING] = sWeezingTMHMLearnset, - [SPECIES_RHYHORN] = sRhyhornTMHMLearnset, - [SPECIES_RHYDON] = sRhydonTMHMLearnset, - [SPECIES_CHANSEY] = sChanseyTMHMLearnset, - [SPECIES_TANGELA] = sTangelaTMHMLearnset, - [SPECIES_KANGASKHAN] = sKangaskhanTMHMLearnset, - [SPECIES_HORSEA] = sHorseaTMHMLearnset, - [SPECIES_SEADRA] = sSeadraTMHMLearnset, - [SPECIES_GOLDEEN] = sGoldeenTMHMLearnset, - [SPECIES_SEAKING] = sSeakingTMHMLearnset, - [SPECIES_STARYU] = sStaryuTMHMLearnset, - [SPECIES_STARMIE] = sStarmieTMHMLearnset, - [SPECIES_MR_MIME] = sMrMimeTMHMLearnset, - [SPECIES_SCYTHER] = sScytherTMHMLearnset, - [SPECIES_JYNX] = sJynxTMHMLearnset, - [SPECIES_ELECTABUZZ] = sElectabuzzTMHMLearnset, - [SPECIES_MAGMAR] = sMagmarTMHMLearnset, - [SPECIES_PINSIR] = sPinsirTMHMLearnset, - [SPECIES_TAUROS] = sTaurosTMHMLearnset, - [SPECIES_MAGIKARP] = sMagikarpTMHMLearnset, - [SPECIES_GYARADOS] = sGyaradosTMHMLearnset, - [SPECIES_LAPRAS] = sLaprasTMHMLearnset, - [SPECIES_DITTO] = sDittoTMHMLearnset, - [SPECIES_EEVEE] = sEeveeTMHMLearnset, - [SPECIES_VAPOREON] = sVaporeonTMHMLearnset, - [SPECIES_JOLTEON] = sJolteonTMHMLearnset, - [SPECIES_FLAREON] = sFlareonTMHMLearnset, - [SPECIES_PORYGON] = sPorygonTMHMLearnset, - [SPECIES_OMANYTE] = sOmanyteTMHMLearnset, - [SPECIES_OMASTAR] = sOmastarTMHMLearnset, - [SPECIES_KABUTO] = sKabutoTMHMLearnset, - [SPECIES_KABUTOPS] = sKabutopsTMHMLearnset, - [SPECIES_AERODACTYL] = sAerodactylTMHMLearnset, - [SPECIES_SNORLAX] = sSnorlaxTMHMLearnset, - [SPECIES_ARTICUNO] = sArticunoTMHMLearnset, - [SPECIES_ZAPDOS] = sZapdosTMHMLearnset, - [SPECIES_MOLTRES] = sMoltresTMHMLearnset, - [SPECIES_DRATINI] = sDratiniTMHMLearnset, - [SPECIES_DRAGONAIR] = sDragonairTMHMLearnset, - [SPECIES_DRAGONITE] = sDragoniteTMHMLearnset, - [SPECIES_MEWTWO] = sMewtwoTMHMLearnset, - [SPECIES_MEW] = sMewTMHMLearnset, - [SPECIES_CHIKORITA] = sChikoritaTMHMLearnset, - [SPECIES_BAYLEEF] = sBayleefTMHMLearnset, - [SPECIES_MEGANIUM] = sMeganiumTMHMLearnset, - [SPECIES_CYNDAQUIL] = sCyndaquilTMHMLearnset, - [SPECIES_QUILAVA] = sQuilavaTMHMLearnset, - [SPECIES_TYPHLOSION] = sTyphlosionTMHMLearnset, - [SPECIES_TOTODILE] = sTotodileTMHMLearnset, - [SPECIES_CROCONAW] = sCroconawTMHMLearnset, - [SPECIES_FERALIGATR] = sFeraligatrTMHMLearnset, - [SPECIES_SENTRET] = sSentretTMHMLearnset, - [SPECIES_FURRET] = sFurretTMHMLearnset, - [SPECIES_HOOTHOOT] = sHoothootTMHMLearnset, - [SPECIES_NOCTOWL] = sNoctowlTMHMLearnset, - [SPECIES_LEDYBA] = sLedybaTMHMLearnset, - [SPECIES_LEDIAN] = sLedianTMHMLearnset, - [SPECIES_SPINARAK] = sSpinarakTMHMLearnset, - [SPECIES_ARIADOS] = sAriadosTMHMLearnset, - [SPECIES_CROBAT] = sCrobatTMHMLearnset, - [SPECIES_CHINCHOU] = sChinchouTMHMLearnset, - [SPECIES_LANTURN] = sLanturnTMHMLearnset, - [SPECIES_PICHU] = sPichuTMHMLearnset, - [SPECIES_CLEFFA] = sCleffaTMHMLearnset, - [SPECIES_IGGLYBUFF] = sIgglybuffTMHMLearnset, - [SPECIES_TOGEPI] = sTogepiTMHMLearnset, - [SPECIES_TOGETIC] = sTogeticTMHMLearnset, - [SPECIES_NATU] = sNatuTMHMLearnset, - [SPECIES_XATU] = sXatuTMHMLearnset, - [SPECIES_MAREEP] = sMareepTMHMLearnset, - [SPECIES_FLAAFFY] = sFlaaffyTMHMLearnset, - [SPECIES_AMPHAROS] = sAmpharosTMHMLearnset, - [SPECIES_BELLOSSOM] = sBellossomTMHMLearnset, - [SPECIES_MARILL] = sMarillTMHMLearnset, - [SPECIES_AZUMARILL] = sAzumarillTMHMLearnset, - [SPECIES_SUDOWOODO] = sSudowoodoTMHMLearnset, - [SPECIES_POLITOED] = sPolitoedTMHMLearnset, - [SPECIES_HOPPIP] = sHoppipTMHMLearnset, - [SPECIES_SKIPLOOM] = sSkiploomTMHMLearnset, - [SPECIES_JUMPLUFF] = sJumpluffTMHMLearnset, - [SPECIES_AIPOM] = sAipomTMHMLearnset, - [SPECIES_SUNKERN] = sSunkernTMHMLearnset, - [SPECIES_SUNFLORA] = sSunfloraTMHMLearnset, - [SPECIES_YANMA] = sYanmaTMHMLearnset, - [SPECIES_WOOPER] = sWooperTMHMLearnset, - [SPECIES_QUAGSIRE] = sQuagsireTMHMLearnset, - [SPECIES_ESPEON] = sEspeonTMHMLearnset, - [SPECIES_UMBREON] = sUmbreonTMHMLearnset, - [SPECIES_MURKROW] = sMurkrowTMHMLearnset, - [SPECIES_SLOWKING] = sSlowkingTMHMLearnset, - [SPECIES_MISDREAVUS] = sMisdreavusTMHMLearnset, - [SPECIES_UNOWN] = sUnownTMHMLearnset, - [SPECIES_WOBBUFFET] = sWobbuffetTMHMLearnset, - [SPECIES_GIRAFARIG] = sGirafarigTMHMLearnset, - [SPECIES_PINECO] = sPinecoTMHMLearnset, - [SPECIES_FORRETRESS] = sForretressTMHMLearnset, - [SPECIES_DUNSPARCE] = sDunsparceTMHMLearnset, - [SPECIES_GLIGAR] = sGligarTMHMLearnset, - [SPECIES_STEELIX] = sSteelixTMHMLearnset, - [SPECIES_SNUBBULL] = sSnubbullTMHMLearnset, - [SPECIES_GRANBULL] = sGranbullTMHMLearnset, - [SPECIES_QWILFISH] = sQwilfishTMHMLearnset, - [SPECIES_SCIZOR] = sScizorTMHMLearnset, - [SPECIES_SHUCKLE] = sShuckleTMHMLearnset, - [SPECIES_HERACROSS] = sHeracrossTMHMLearnset, - [SPECIES_SNEASEL] = sSneaselTMHMLearnset, - [SPECIES_TEDDIURSA] = sTeddiursaTMHMLearnset, - [SPECIES_URSARING] = sUrsaringTMHMLearnset, - [SPECIES_SLUGMA] = sSlugmaTMHMLearnset, - [SPECIES_MAGCARGO] = sMagcargoTMHMLearnset, - [SPECIES_SWINUB] = sSwinubTMHMLearnset, - [SPECIES_PILOSWINE] = sPiloswineTMHMLearnset, - [SPECIES_CORSOLA] = sCorsolaTMHMLearnset, - [SPECIES_REMORAID] = sRemoraidTMHMLearnset, - [SPECIES_OCTILLERY] = sOctilleryTMHMLearnset, - [SPECIES_DELIBIRD] = sDelibirdTMHMLearnset, - [SPECIES_MANTINE] = sMantineTMHMLearnset, - [SPECIES_SKARMORY] = sSkarmoryTMHMLearnset, - [SPECIES_HOUNDOUR] = sHoundourTMHMLearnset, - [SPECIES_HOUNDOOM] = sHoundoomTMHMLearnset, - [SPECIES_KINGDRA] = sKingdraTMHMLearnset, - [SPECIES_PHANPY] = sPhanpyTMHMLearnset, - [SPECIES_DONPHAN] = sDonphanTMHMLearnset, - [SPECIES_PORYGON2] = sPorygon2TMHMLearnset, - [SPECIES_STANTLER] = sStantlerTMHMLearnset, - [SPECIES_SMEARGLE] = sSmeargleTMHMLearnset, - [SPECIES_TYROGUE] = sTyrogueTMHMLearnset, - [SPECIES_HITMONTOP] = sHitmontopTMHMLearnset, - [SPECIES_SMOOCHUM] = sSmoochumTMHMLearnset, - [SPECIES_ELEKID] = sElekidTMHMLearnset, - [SPECIES_MAGBY] = sMagbyTMHMLearnset, - [SPECIES_MILTANK] = sMiltankTMHMLearnset, - [SPECIES_BLISSEY] = sBlisseyTMHMLearnset, - [SPECIES_RAIKOU] = sRaikouTMHMLearnset, - [SPECIES_ENTEI] = sEnteiTMHMLearnset, - [SPECIES_SUICUNE] = sSuicuneTMHMLearnset, - [SPECIES_LARVITAR] = sLarvitarTMHMLearnset, - [SPECIES_PUPITAR] = sPupitarTMHMLearnset, - [SPECIES_TYRANITAR] = sTyranitarTMHMLearnset, - [SPECIES_LUGIA] = sLugiaTMHMLearnset, - [SPECIES_HO_OH] = sHoOhTMHMLearnset, - [SPECIES_CELEBI] = sCelebiTMHMLearnset, - [SPECIES_TREECKO] = sTreeckoTMHMLearnset, - [SPECIES_GROVYLE] = sGrovyleTMHMLearnset, - [SPECIES_SCEPTILE] = sSceptileTMHMLearnset, - [SPECIES_TORCHIC] = sTorchicTMHMLearnset, - [SPECIES_COMBUSKEN] = sCombuskenTMHMLearnset, - [SPECIES_BLAZIKEN] = sBlazikenTMHMLearnset, - [SPECIES_MUDKIP] = sMudkipTMHMLearnset, - [SPECIES_MARSHTOMP] = sMarshtompTMHMLearnset, - [SPECIES_SWAMPERT] = sSwampertTMHMLearnset, - [SPECIES_POOCHYENA] = sPoochyenaTMHMLearnset, - [SPECIES_MIGHTYENA] = sMightyenaTMHMLearnset, - [SPECIES_ZIGZAGOON] = sZigzagoonTMHMLearnset, - [SPECIES_LINOONE] = sLinooneTMHMLearnset, - [SPECIES_WURMPLE] = sWurmpleTMHMLearnset, - [SPECIES_SILCOON] = sSilcoonTMHMLearnset, - [SPECIES_BEAUTIFLY] = sBeautiflyTMHMLearnset, - [SPECIES_CASCOON] = sCascoonTMHMLearnset, - [SPECIES_DUSTOX] = sDustoxTMHMLearnset, - [SPECIES_LOTAD] = sLotadTMHMLearnset, - [SPECIES_LOMBRE] = sLombreTMHMLearnset, - [SPECIES_LUDICOLO] = sLudicoloTMHMLearnset, - [SPECIES_SEEDOT] = sSeedotTMHMLearnset, - [SPECIES_NUZLEAF] = sNuzleafTMHMLearnset, - [SPECIES_SHIFTRY] = sShiftryTMHMLearnset, - [SPECIES_NINCADA] = sNincadaTMHMLearnset, - [SPECIES_NINJASK] = sNinjaskTMHMLearnset, - [SPECIES_SHEDINJA] = sShedinjaTMHMLearnset, - [SPECIES_TAILLOW] = sTaillowTMHMLearnset, - [SPECIES_SWELLOW] = sSwellowTMHMLearnset, - [SPECIES_SHROOMISH] = sShroomishTMHMLearnset, - [SPECIES_BRELOOM] = sBreloomTMHMLearnset, - [SPECIES_SPINDA] = sSpindaTMHMLearnset, - [SPECIES_WINGULL] = sWingullTMHMLearnset, - [SPECIES_PELIPPER] = sPelipperTMHMLearnset, - [SPECIES_SURSKIT] = sSurskitTMHMLearnset, - [SPECIES_MASQUERAIN] = sMasquerainTMHMLearnset, - [SPECIES_WAILMER] = sWailmerTMHMLearnset, - [SPECIES_WAILORD] = sWailordTMHMLearnset, - [SPECIES_SKITTY] = sSkittyTMHMLearnset, - [SPECIES_DELCATTY] = sDelcattyTMHMLearnset, - [SPECIES_KECLEON] = sKecleonTMHMLearnset, - [SPECIES_BALTOY] = sBaltoyTMHMLearnset, - [SPECIES_CLAYDOL] = sClaydolTMHMLearnset, - [SPECIES_NOSEPASS] = sNosepassTMHMLearnset, - [SPECIES_TORKOAL] = sTorkoalTMHMLearnset, - [SPECIES_SABLEYE] = sSableyeTMHMLearnset, - [SPECIES_BARBOACH] = sBarboachTMHMLearnset, - [SPECIES_WHISCASH] = sWhiscashTMHMLearnset, - [SPECIES_LUVDISC] = sLuvdiscTMHMLearnset, - [SPECIES_CORPHISH] = sCorphishTMHMLearnset, - [SPECIES_CRAWDAUNT] = sCrawdauntTMHMLearnset, - [SPECIES_FEEBAS] = sFeebasTMHMLearnset, - [SPECIES_MILOTIC] = sMiloticTMHMLearnset, - [SPECIES_CARVANHA] = sCarvanhaTMHMLearnset, - [SPECIES_SHARPEDO] = sSharpedoTMHMLearnset, - [SPECIES_TRAPINCH] = sTrapinchTMHMLearnset, - [SPECIES_VIBRAVA] = sVibravaTMHMLearnset, - [SPECIES_FLYGON] = sFlygonTMHMLearnset, - [SPECIES_MAKUHITA] = sMakuhitaTMHMLearnset, - [SPECIES_HARIYAMA] = sHariyamaTMHMLearnset, - [SPECIES_ELECTRIKE] = sElectrikeTMHMLearnset, - [SPECIES_MANECTRIC] = sManectricTMHMLearnset, - [SPECIES_NUMEL] = sNumelTMHMLearnset, - [SPECIES_CAMERUPT] = sCameruptTMHMLearnset, - [SPECIES_SPHEAL] = sSphealTMHMLearnset, - [SPECIES_SEALEO] = sSealeoTMHMLearnset, - [SPECIES_WALREIN] = sWalreinTMHMLearnset, - [SPECIES_CACNEA] = sCacneaTMHMLearnset, - [SPECIES_CACTURNE] = sCacturneTMHMLearnset, - [SPECIES_SNORUNT] = sSnoruntTMHMLearnset, - [SPECIES_GLALIE] = sGlalieTMHMLearnset, - [SPECIES_LUNATONE] = sLunatoneTMHMLearnset, - [SPECIES_SOLROCK] = sSolrockTMHMLearnset, - [SPECIES_AZURILL] = sAzurillTMHMLearnset, - [SPECIES_SPOINK] = sSpoinkTMHMLearnset, - [SPECIES_GRUMPIG] = sGrumpigTMHMLearnset, - [SPECIES_PLUSLE] = sPlusleTMHMLearnset, - [SPECIES_MINUN] = sMinunTMHMLearnset, - [SPECIES_MAWILE] = sMawileTMHMLearnset, - [SPECIES_MEDITITE] = sMedititeTMHMLearnset, - [SPECIES_MEDICHAM] = sMedichamTMHMLearnset, - [SPECIES_SWABLU] = sSwabluTMHMLearnset, - [SPECIES_ALTARIA] = sAltariaTMHMLearnset, - [SPECIES_WYNAUT] = sWynautTMHMLearnset, - [SPECIES_DUSKULL] = sDuskullTMHMLearnset, - [SPECIES_DUSCLOPS] = sDusclopsTMHMLearnset, - [SPECIES_ROSELIA] = sRoseliaTMHMLearnset, - [SPECIES_SLAKOTH] = sSlakothTMHMLearnset, - [SPECIES_VIGOROTH] = sVigorothTMHMLearnset, - [SPECIES_SLAKING] = sSlakingTMHMLearnset, - [SPECIES_GULPIN] = sGulpinTMHMLearnset, - [SPECIES_SWALOT] = sSwalotTMHMLearnset, - [SPECIES_TROPIUS] = sTropiusTMHMLearnset, - [SPECIES_WHISMUR] = sWhismurTMHMLearnset, - [SPECIES_LOUDRED] = sLoudredTMHMLearnset, - [SPECIES_EXPLOUD] = sExploudTMHMLearnset, - [SPECIES_CLAMPERL] = sClamperlTMHMLearnset, - [SPECIES_HUNTAIL] = sHuntailTMHMLearnset, - [SPECIES_GOREBYSS] = sGorebyssTMHMLearnset, - [SPECIES_ABSOL] = sAbsolTMHMLearnset, - [SPECIES_SHUPPET] = sShuppetTMHMLearnset, - [SPECIES_BANETTE] = sBanetteTMHMLearnset, - [SPECIES_SEVIPER] = sSeviperTMHMLearnset, - [SPECIES_ZANGOOSE] = sZangooseTMHMLearnset, - [SPECIES_RELICANTH] = sRelicanthTMHMLearnset, - [SPECIES_ARON] = sAronTMHMLearnset, - [SPECIES_LAIRON] = sLaironTMHMLearnset, - [SPECIES_AGGRON] = sAggronTMHMLearnset, - [SPECIES_CASTFORM] = sCastformTMHMLearnset, - [SPECIES_VOLBEAT] = sVolbeatTMHMLearnset, - [SPECIES_ILLUMISE] = sIllumiseTMHMLearnset, - [SPECIES_LILEEP] = sLileepTMHMLearnset, - [SPECIES_CRADILY] = sCradilyTMHMLearnset, - [SPECIES_ANORITH] = sAnorithTMHMLearnset, - [SPECIES_ARMALDO] = sArmaldoTMHMLearnset, - [SPECIES_RALTS] = sRaltsTMHMLearnset, - [SPECIES_KIRLIA] = sKirliaTMHMLearnset, - [SPECIES_GARDEVOIR] = sGardevoirTMHMLearnset, - [SPECIES_BAGON] = sBagonTMHMLearnset, - [SPECIES_SHELGON] = sShelgonTMHMLearnset, - [SPECIES_SALAMENCE] = sSalamenceTMHMLearnset, - [SPECIES_BELDUM] = sBeldumTMHMLearnset, - [SPECIES_METANG] = sMetangTMHMLearnset, - [SPECIES_METAGROSS] = sMetagrossTMHMLearnset, - [SPECIES_REGIROCK] = sRegirockTMHMLearnset, - [SPECIES_REGICE] = sRegiceTMHMLearnset, - [SPECIES_REGISTEEL] = sRegisteelTMHMLearnset, - [SPECIES_KYOGRE] = sKyogreTMHMLearnset, - [SPECIES_GROUDON] = sGroudonTMHMLearnset, - [SPECIES_RAYQUAZA] = sRayquazaTMHMLearnset, - [SPECIES_LATIAS] = sLatiasTMHMLearnset, - [SPECIES_LATIOS] = sLatiosTMHMLearnset, - [SPECIES_JIRACHI] = sJirachiTMHMLearnset, - [SPECIES_DEOXYS] = sDeoxysTMHMLearnset, - [SPECIES_CHIMECHO] = sChimechoTMHMLearnset, -#if P_NEW_POKEMON == TRUE - [SPECIES_TURTWIG] = sTurtwigTMHMLearnset, - [SPECIES_GROTLE] = sGrotleTMHMLearnset, - [SPECIES_TORTERRA] = sTorterraTMHMLearnset, - [SPECIES_CHIMCHAR] = sChimcharTMHMLearnset, - [SPECIES_MONFERNO] = sMonfernoTMHMLearnset, - [SPECIES_INFERNAPE] = sInfernapeTMHMLearnset, - [SPECIES_PIPLUP] = sPiplupTMHMLearnset, - [SPECIES_PRINPLUP] = sPrinplupTMHMLearnset, - [SPECIES_EMPOLEON] = sEmpoleonTMHMLearnset, - [SPECIES_STARLY] = sStarlyTMHMLearnset, - [SPECIES_STARAVIA] = sStaraviaTMHMLearnset, - [SPECIES_STARAPTOR] = sStaraptorTMHMLearnset, - [SPECIES_BIDOOF] = sBidoofTMHMLearnset, - [SPECIES_BIBAREL] = sBibarelTMHMLearnset, - [SPECIES_KRICKETOT] = sKricketotTMHMLearnset, - [SPECIES_KRICKETUNE] = sKricketuneTMHMLearnset, - [SPECIES_SHINX] = sShinxTMHMLearnset, - [SPECIES_LUXIO] = sLuxioTMHMLearnset, - [SPECIES_LUXRAY] = sLuxrayTMHMLearnset, - [SPECIES_BUDEW] = sBudewTMHMLearnset, - [SPECIES_ROSERADE] = sRoseradeTMHMLearnset, - [SPECIES_CRANIDOS] = sCranidosTMHMLearnset, - [SPECIES_RAMPARDOS] = sRampardosTMHMLearnset, - [SPECIES_SHIELDON] = sShieldonTMHMLearnset, - [SPECIES_BASTIODON] = sBastiodonTMHMLearnset, - [SPECIES_BURMY] = sBurmyTMHMLearnset, - [SPECIES_WORMADAM] = sWormadamTMHMLearnset, - [SPECIES_MOTHIM] = sMothimTMHMLearnset, - [SPECIES_COMBEE] = sCombeeTMHMLearnset, - [SPECIES_VESPIQUEN] = sVespiquenTMHMLearnset, - [SPECIES_PACHIRISU] = sPachirisuTMHMLearnset, - [SPECIES_BUIZEL] = sBuizelTMHMLearnset, - [SPECIES_FLOATZEL] = sFloatzelTMHMLearnset, - [SPECIES_CHERUBI] = sCherubiTMHMLearnset, - [SPECIES_CHERRIM] = sCherrimTMHMLearnset, - [SPECIES_SHELLOS] = sShellosTMHMLearnset, - [SPECIES_GASTRODON] = sGastrodonTMHMLearnset, - [SPECIES_AMBIPOM] = sAmbipomTMHMLearnset, - [SPECIES_DRIFLOON] = sDrifloonTMHMLearnset, - [SPECIES_DRIFBLIM] = sDrifblimTMHMLearnset, - [SPECIES_BUNEARY] = sBunearyTMHMLearnset, - [SPECIES_LOPUNNY] = sLopunnyTMHMLearnset, - [SPECIES_MISMAGIUS] = sMismagiusTMHMLearnset, - [SPECIES_HONCHKROW] = sHonchkrowTMHMLearnset, - [SPECIES_GLAMEOW] = sGlameowTMHMLearnset, - [SPECIES_PURUGLY] = sPuruglyTMHMLearnset, - [SPECIES_CHINGLING] = sChinglingTMHMLearnset, - [SPECIES_STUNKY] = sStunkyTMHMLearnset, - [SPECIES_SKUNTANK] = sSkuntankTMHMLearnset, - [SPECIES_BRONZOR] = sBronzorTMHMLearnset, - [SPECIES_BRONZONG] = sBronzongTMHMLearnset, - [SPECIES_BONSLY] = sBonslyTMHMLearnset, - [SPECIES_MIME_JR] = sMimeJrTMHMLearnset, - [SPECIES_HAPPINY] = sHappinyTMHMLearnset, - [SPECIES_CHATOT] = sChatotTMHMLearnset, - [SPECIES_SPIRITOMB] = sSpiritombTMHMLearnset, - [SPECIES_GIBLE] = sGibleTMHMLearnset, - [SPECIES_GABITE] = sGabiteTMHMLearnset, - [SPECIES_GARCHOMP] = sGarchompTMHMLearnset, - [SPECIES_MUNCHLAX] = sMunchlaxTMHMLearnset, - [SPECIES_RIOLU] = sRioluTMHMLearnset, - [SPECIES_LUCARIO] = sLucarioTMHMLearnset, - [SPECIES_HIPPOPOTAS] = sHippopotasTMHMLearnset, - [SPECIES_HIPPOWDON] = sHippowdonTMHMLearnset, - [SPECIES_SKORUPI] = sSkorupiTMHMLearnset, - [SPECIES_DRAPION] = sDrapionTMHMLearnset, - [SPECIES_CROAGUNK] = sCroagunkTMHMLearnset, - [SPECIES_TOXICROAK] = sToxicroakTMHMLearnset, - [SPECIES_CARNIVINE] = sCarnivineTMHMLearnset, - [SPECIES_FINNEON] = sFinneonTMHMLearnset, - [SPECIES_LUMINEON] = sLumineonTMHMLearnset, - [SPECIES_MANTYKE] = sMantykeTMHMLearnset, - [SPECIES_SNOVER] = sSnoverTMHMLearnset, - [SPECIES_ABOMASNOW] = sAbomasnowTMHMLearnset, - [SPECIES_WEAVILE] = sWeavileTMHMLearnset, - [SPECIES_MAGNEZONE] = sMagnezoneTMHMLearnset, - [SPECIES_LICKILICKY] = sLickilickyTMHMLearnset, - [SPECIES_RHYPERIOR] = sRhyperiorTMHMLearnset, - [SPECIES_TANGROWTH] = sTangrowthTMHMLearnset, - [SPECIES_ELECTIVIRE] = sElectivireTMHMLearnset, - [SPECIES_MAGMORTAR] = sMagmortarTMHMLearnset, - [SPECIES_TOGEKISS] = sTogekissTMHMLearnset, - [SPECIES_YANMEGA] = sYanmegaTMHMLearnset, - [SPECIES_LEAFEON] = sLeafeonTMHMLearnset, - [SPECIES_GLACEON] = sGlaceonTMHMLearnset, - [SPECIES_GLISCOR] = sGliscorTMHMLearnset, - [SPECIES_MAMOSWINE] = sMamoswineTMHMLearnset, - [SPECIES_PORYGON_Z] = sPorygonZTMHMLearnset, - [SPECIES_GALLADE] = sGalladeTMHMLearnset, - [SPECIES_PROBOPASS] = sProbopassTMHMLearnset, - [SPECIES_DUSKNOIR] = sDusknoirTMHMLearnset, - [SPECIES_FROSLASS] = sFroslassTMHMLearnset, - [SPECIES_ROTOM] = sRotomTMHMLearnset, - [SPECIES_UXIE] = sUxieTMHMLearnset, - [SPECIES_MESPRIT] = sMespritTMHMLearnset, - [SPECIES_AZELF] = sAzelfTMHMLearnset, - [SPECIES_DIALGA] = sDialgaTMHMLearnset, - [SPECIES_PALKIA] = sPalkiaTMHMLearnset, - [SPECIES_HEATRAN] = sHeatranTMHMLearnset, - [SPECIES_REGIGIGAS] = sRegigigasTMHMLearnset, - [SPECIES_GIRATINA] = sGiratinaTMHMLearnset, - [SPECIES_CRESSELIA] = sCresseliaTMHMLearnset, - [SPECIES_PHIONE] = sPhioneTMHMLearnset, - [SPECIES_MANAPHY] = sManaphyTMHMLearnset, - [SPECIES_DARKRAI] = sDarkraiTMHMLearnset, - [SPECIES_SHAYMIN] = sShayminTMHMLearnset, - [SPECIES_ARCEUS] = sArceusTMHMLearnset, - [SPECIES_VICTINI] = sVictiniTMHMLearnset, - [SPECIES_SNIVY] = sSnivyTMHMLearnset, - [SPECIES_SERVINE] = sServineTMHMLearnset, - [SPECIES_SERPERIOR] = sSerperiorTMHMLearnset, - [SPECIES_TEPIG] = sTepigTMHMLearnset, - [SPECIES_PIGNITE] = sPigniteTMHMLearnset, - [SPECIES_EMBOAR] = sEmboarTMHMLearnset, - [SPECIES_OSHAWOTT] = sOshawottTMHMLearnset, - [SPECIES_DEWOTT] = sDewottTMHMLearnset, - [SPECIES_SAMUROTT] = sSamurottTMHMLearnset, - [SPECIES_PATRAT] = sPatratTMHMLearnset, - [SPECIES_WATCHOG] = sWatchogTMHMLearnset, - [SPECIES_LILLIPUP] = sLillipupTMHMLearnset, - [SPECIES_HERDIER] = sHerdierTMHMLearnset, - [SPECIES_STOUTLAND] = sStoutlandTMHMLearnset, - [SPECIES_PURRLOIN] = sPurrloinTMHMLearnset, - [SPECIES_LIEPARD] = sLiepardTMHMLearnset, - [SPECIES_PANSAGE] = sPansageTMHMLearnset, - [SPECIES_SIMISAGE] = sSimisageTMHMLearnset, - [SPECIES_PANSEAR] = sPansearTMHMLearnset, - [SPECIES_SIMISEAR] = sSimisearTMHMLearnset, - [SPECIES_PANPOUR] = sPanpourTMHMLearnset, - [SPECIES_SIMIPOUR] = sSimipourTMHMLearnset, - [SPECIES_MUNNA] = sMunnaTMHMLearnset, - [SPECIES_MUSHARNA] = sMusharnaTMHMLearnset, - [SPECIES_PIDOVE] = sPidoveTMHMLearnset, - [SPECIES_TRANQUILL] = sTranquillTMHMLearnset, - [SPECIES_UNFEZANT] = sUnfezantTMHMLearnset, - [SPECIES_BLITZLE] = sBlitzleTMHMLearnset, - [SPECIES_ZEBSTRIKA] = sZebstrikaTMHMLearnset, - [SPECIES_ROGGENROLA] = sRoggenrolaTMHMLearnset, - [SPECIES_BOLDORE] = sBoldoreTMHMLearnset, - [SPECIES_GIGALITH] = sGigalithTMHMLearnset, - [SPECIES_WOOBAT] = sWoobatTMHMLearnset, - [SPECIES_SWOOBAT] = sSwoobatTMHMLearnset, - [SPECIES_DRILBUR] = sDrilburTMHMLearnset, - [SPECIES_EXCADRILL] = sExcadrillTMHMLearnset, - [SPECIES_AUDINO] = sAudinoTMHMLearnset, - [SPECIES_TIMBURR] = sTimburrTMHMLearnset, - [SPECIES_GURDURR] = sGurdurrTMHMLearnset, - [SPECIES_CONKELDURR] = sConkeldurrTMHMLearnset, - [SPECIES_TYMPOLE] = sTympoleTMHMLearnset, - [SPECIES_PALPITOAD] = sPalpitoadTMHMLearnset, - [SPECIES_SEISMITOAD] = sSeismitoadTMHMLearnset, - [SPECIES_THROH] = sThrohTMHMLearnset, - [SPECIES_SAWK] = sSawkTMHMLearnset, - [SPECIES_SEWADDLE] = sSewaddleTMHMLearnset, - [SPECIES_SWADLOON] = sSwadloonTMHMLearnset, - [SPECIES_LEAVANNY] = sLeavannyTMHMLearnset, - [SPECIES_VENIPEDE] = sVenipedeTMHMLearnset, - [SPECIES_WHIRLIPEDE] = sWhirlipedeTMHMLearnset, - [SPECIES_SCOLIPEDE] = sScolipedeTMHMLearnset, - [SPECIES_COTTONEE] = sCottoneeTMHMLearnset, - [SPECIES_WHIMSICOTT] = sWhimsicottTMHMLearnset, - [SPECIES_PETILIL] = sPetililTMHMLearnset, - [SPECIES_LILLIGANT] = sLilligantTMHMLearnset, - [SPECIES_BASCULIN] = sBasculinTMHMLearnset, - [SPECIES_SANDILE] = sSandileTMHMLearnset, - [SPECIES_KROKOROK] = sKrokorokTMHMLearnset, - [SPECIES_KROOKODILE] = sKrookodileTMHMLearnset, - [SPECIES_DARUMAKA] = sDarumakaTMHMLearnset, - [SPECIES_DARMANITAN] = sDarmanitanTMHMLearnset, - [SPECIES_MARACTUS] = sMaractusTMHMLearnset, - [SPECIES_DWEBBLE] = sDwebbleTMHMLearnset, - [SPECIES_CRUSTLE] = sCrustleTMHMLearnset, - [SPECIES_SCRAGGY] = sScraggyTMHMLearnset, - [SPECIES_SCRAFTY] = sScraftyTMHMLearnset, - [SPECIES_SIGILYPH] = sSigilyphTMHMLearnset, - [SPECIES_YAMASK] = sYamaskTMHMLearnset, - [SPECIES_COFAGRIGUS] = sCofagrigusTMHMLearnset, - [SPECIES_TIRTOUGA] = sTirtougaTMHMLearnset, - [SPECIES_CARRACOSTA] = sCarracostaTMHMLearnset, - [SPECIES_ARCHEN] = sArchenTMHMLearnset, - [SPECIES_ARCHEOPS] = sArcheopsTMHMLearnset, - [SPECIES_TRUBBISH] = sTrubbishTMHMLearnset, - [SPECIES_GARBODOR] = sGarbodorTMHMLearnset, - [SPECIES_ZORUA] = sZoruaTMHMLearnset, - [SPECIES_ZOROARK] = sZoroarkTMHMLearnset, - [SPECIES_MINCCINO] = sMinccinoTMHMLearnset, - [SPECIES_CINCCINO] = sCinccinoTMHMLearnset, - [SPECIES_GOTHITA] = sGothitaTMHMLearnset, - [SPECIES_GOTHORITA] = sGothoritaTMHMLearnset, - [SPECIES_GOTHITELLE] = sGothitelleTMHMLearnset, - [SPECIES_SOLOSIS] = sSolosisTMHMLearnset, - [SPECIES_DUOSION] = sDuosionTMHMLearnset, - [SPECIES_REUNICLUS] = sReuniclusTMHMLearnset, - [SPECIES_DUCKLETT] = sDucklettTMHMLearnset, - [SPECIES_SWANNA] = sSwannaTMHMLearnset, - [SPECIES_VANILLITE] = sVanilliteTMHMLearnset, - [SPECIES_VANILLISH] = sVanillishTMHMLearnset, - [SPECIES_VANILLUXE] = sVanilluxeTMHMLearnset, - [SPECIES_DEERLING] = sDeerlingTMHMLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckTMHMLearnset, - [SPECIES_EMOLGA] = sEmolgaTMHMLearnset, - [SPECIES_KARRABLAST] = sKarrablastTMHMLearnset, - [SPECIES_ESCAVALIER] = sEscavalierTMHMLearnset, - [SPECIES_FOONGUS] = sFoongusTMHMLearnset, - [SPECIES_AMOONGUSS] = sAmoongussTMHMLearnset, - [SPECIES_FRILLISH] = sFrillishTMHMLearnset, - [SPECIES_JELLICENT] = sJellicentTMHMLearnset, - [SPECIES_ALOMOMOLA] = sAlomomolaTMHMLearnset, - [SPECIES_JOLTIK] = sJoltikTMHMLearnset, - [SPECIES_GALVANTULA] = sGalvantulaTMHMLearnset, - [SPECIES_FERROSEED] = sFerroseedTMHMLearnset, - [SPECIES_FERROTHORN] = sFerrothornTMHMLearnset, - [SPECIES_KLINK] = sKlinkTMHMLearnset, - [SPECIES_KLANG] = sKlangTMHMLearnset, - [SPECIES_KLINKLANG] = sKlinklangTMHMLearnset, - [SPECIES_TYNAMO] = sTynamoTMHMLearnset, - [SPECIES_EELEKTRIK] = sEelektrikTMHMLearnset, - [SPECIES_EELEKTROSS] = sEelektrossTMHMLearnset, - [SPECIES_ELGYEM] = sElgyemTMHMLearnset, - [SPECIES_BEHEEYEM] = sBeheeyemTMHMLearnset, - [SPECIES_LITWICK] = sLitwickTMHMLearnset, - [SPECIES_LAMPENT] = sLampentTMHMLearnset, - [SPECIES_CHANDELURE] = sChandelureTMHMLearnset, - [SPECIES_AXEW] = sAxewTMHMLearnset, - [SPECIES_FRAXURE] = sFraxureTMHMLearnset, - [SPECIES_HAXORUS] = sHaxorusTMHMLearnset, - [SPECIES_CUBCHOO] = sCubchooTMHMLearnset, - [SPECIES_BEARTIC] = sBearticTMHMLearnset, - [SPECIES_CRYOGONAL] = sCryogonalTMHMLearnset, - [SPECIES_SHELMET] = sShelmetTMHMLearnset, - [SPECIES_ACCELGOR] = sAccelgorTMHMLearnset, - [SPECIES_STUNFISK] = sStunfiskTMHMLearnset, - [SPECIES_MIENFOO] = sMienfooTMHMLearnset, - [SPECIES_MIENSHAO] = sMienshaoTMHMLearnset, - [SPECIES_DRUDDIGON] = sDruddigonTMHMLearnset, - [SPECIES_GOLETT] = sGolettTMHMLearnset, - [SPECIES_GOLURK] = sGolurkTMHMLearnset, - [SPECIES_PAWNIARD] = sPawniardTMHMLearnset, - [SPECIES_BISHARP] = sBisharpTMHMLearnset, - [SPECIES_BOUFFALANT] = sBouffalantTMHMLearnset, - [SPECIES_RUFFLET] = sRuffletTMHMLearnset, - [SPECIES_BRAVIARY] = sBraviaryTMHMLearnset, - [SPECIES_VULLABY] = sVullabyTMHMLearnset, - [SPECIES_MANDIBUZZ] = sMandibuzzTMHMLearnset, - [SPECIES_HEATMOR] = sHeatmorTMHMLearnset, - [SPECIES_DURANT] = sDurantTMHMLearnset, - [SPECIES_DEINO] = sDeinoTMHMLearnset, - [SPECIES_ZWEILOUS] = sZweilousTMHMLearnset, - [SPECIES_HYDREIGON] = sHydreigonTMHMLearnset, - [SPECIES_LARVESTA] = sLarvestaTMHMLearnset, - [SPECIES_VOLCARONA] = sVolcaronaTMHMLearnset, - [SPECIES_COBALION] = sCobalionTMHMLearnset, - [SPECIES_TERRAKION] = sTerrakionTMHMLearnset, - [SPECIES_VIRIZION] = sVirizionTMHMLearnset, - [SPECIES_TORNADUS] = sTornadusTMHMLearnset, - [SPECIES_THUNDURUS] = sThundurusTMHMLearnset, - [SPECIES_RESHIRAM] = sReshiramTMHMLearnset, - [SPECIES_ZEKROM] = sZekromTMHMLearnset, - [SPECIES_LANDORUS] = sLandorusTMHMLearnset, - [SPECIES_KYUREM] = sKyuremTMHMLearnset, - [SPECIES_KELDEO] = sKeldeoTMHMLearnset, - [SPECIES_MELOETTA] = sMeloettaTMHMLearnset, - [SPECIES_GENESECT] = sGenesectTMHMLearnset, - [SPECIES_CHESPIN] = sChespinTMHMLearnset, - [SPECIES_QUILLADIN] = sQuilladinTMHMLearnset, - [SPECIES_CHESNAUGHT] = sChesnaughtTMHMLearnset, - [SPECIES_FENNEKIN] = sFennekinTMHMLearnset, - [SPECIES_BRAIXEN] = sBraixenTMHMLearnset, - [SPECIES_DELPHOX] = sDelphoxTMHMLearnset, - [SPECIES_FROAKIE] = sFroakieTMHMLearnset, - [SPECIES_FROGADIER] = sFrogadierTMHMLearnset, - [SPECIES_GRENINJA] = sGreninjaTMHMLearnset, - [SPECIES_BUNNELBY] = sBunnelbyTMHMLearnset, - [SPECIES_DIGGERSBY] = sDiggersbyTMHMLearnset, - [SPECIES_FLETCHLING] = sFletchlingTMHMLearnset, - [SPECIES_FLETCHINDER] = sFletchinderTMHMLearnset, - [SPECIES_TALONFLAME] = sTalonflameTMHMLearnset, - [SPECIES_SCATTERBUG] = sScatterbugTMHMLearnset, - [SPECIES_SPEWPA] = sSpewpaTMHMLearnset, - [SPECIES_VIVILLON] = sVivillonTMHMLearnset, - [SPECIES_LITLEO] = sLitleoTMHMLearnset, - [SPECIES_PYROAR] = sPyroarTMHMLearnset, - [SPECIES_FLABEBE] = sFlabebeTMHMLearnset, - [SPECIES_FLOETTE] = sFloetteTMHMLearnset, - [SPECIES_FLORGES] = sFlorgesTMHMLearnset, - [SPECIES_SKIDDO] = sSkiddoTMHMLearnset, - [SPECIES_GOGOAT] = sGogoatTMHMLearnset, - [SPECIES_PANCHAM] = sPanchamTMHMLearnset, - [SPECIES_PANGORO] = sPangoroTMHMLearnset, - [SPECIES_FURFROU] = sFurfrouTMHMLearnset, - [SPECIES_ESPURR] = sEspurrTMHMLearnset, - [SPECIES_MEOWSTIC] = sMeowsticTMHMLearnset, - [SPECIES_HONEDGE] = sHonedgeTMHMLearnset, - [SPECIES_DOUBLADE] = sDoubladeTMHMLearnset, - [SPECIES_AEGISLASH] = sAegislashTMHMLearnset, - [SPECIES_SPRITZEE] = sSpritzeeTMHMLearnset, - [SPECIES_AROMATISSE] = sAromatisseTMHMLearnset, - [SPECIES_SWIRLIX] = sSwirlixTMHMLearnset, - [SPECIES_SLURPUFF] = sSlurpuffTMHMLearnset, - [SPECIES_INKAY] = sInkayTMHMLearnset, - [SPECIES_MALAMAR] = sMalamarTMHMLearnset, - [SPECIES_BINACLE] = sBinacleTMHMLearnset, - [SPECIES_BARBARACLE] = sBarbaracleTMHMLearnset, - [SPECIES_SKRELP] = sSkrelpTMHMLearnset, - [SPECIES_DRAGALGE] = sDragalgeTMHMLearnset, - [SPECIES_CLAUNCHER] = sClauncherTMHMLearnset, - [SPECIES_CLAWITZER] = sClawitzerTMHMLearnset, - [SPECIES_HELIOPTILE] = sHelioptileTMHMLearnset, - [SPECIES_HELIOLISK] = sHelioliskTMHMLearnset, - [SPECIES_TYRUNT] = sTyruntTMHMLearnset, - [SPECIES_TYRANTRUM] = sTyrantrumTMHMLearnset, - [SPECIES_AMAURA] = sAmauraTMHMLearnset, - [SPECIES_AURORUS] = sAurorusTMHMLearnset, - [SPECIES_SYLVEON] = sSylveonTMHMLearnset, - [SPECIES_HAWLUCHA] = sHawluchaTMHMLearnset, - [SPECIES_DEDENNE] = sDedenneTMHMLearnset, - [SPECIES_CARBINK] = sCarbinkTMHMLearnset, - [SPECIES_GOOMY] = sGoomyTMHMLearnset, - [SPECIES_SLIGGOO] = sSliggooTMHMLearnset, - [SPECIES_GOODRA] = sGoodraTMHMLearnset, - [SPECIES_KLEFKI] = sKlefkiTMHMLearnset, - [SPECIES_PHANTUMP] = sPhantumpTMHMLearnset, - [SPECIES_TREVENANT] = sTrevenantTMHMLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooTMHMLearnset, - [SPECIES_GOURGEIST] = sGourgeistTMHMLearnset, - [SPECIES_BERGMITE] = sBergmiteTMHMLearnset, - [SPECIES_AVALUGG] = sAvaluggTMHMLearnset, - [SPECIES_NOIBAT] = sNoibatTMHMLearnset, - [SPECIES_NOIVERN] = sNoivernTMHMLearnset, - [SPECIES_XERNEAS] = sXerneasTMHMLearnset, - [SPECIES_YVELTAL] = sYveltalTMHMLearnset, - [SPECIES_ZYGARDE] = sZygardeTMHMLearnset, - [SPECIES_DIANCIE] = sDiancieTMHMLearnset, - [SPECIES_HOOPA] = sHoopaTMHMLearnset, - [SPECIES_VOLCANION] = sVolcanionTMHMLearnset, - [SPECIES_ROWLET] = sRowletTMHMLearnset, - [SPECIES_DARTRIX] = sDartrixTMHMLearnset, - [SPECIES_DECIDUEYE] = sDecidueyeTMHMLearnset, - [SPECIES_LITTEN] = sLittenTMHMLearnset, - [SPECIES_TORRACAT] = sTorracatTMHMLearnset, - [SPECIES_INCINEROAR] = sIncineroarTMHMLearnset, - [SPECIES_POPPLIO] = sPopplioTMHMLearnset, - [SPECIES_BRIONNE] = sBrionneTMHMLearnset, - [SPECIES_PRIMARINA] = sPrimarinaTMHMLearnset, - [SPECIES_PIKIPEK] = sPikipekTMHMLearnset, - [SPECIES_TRUMBEAK] = sTrumbeakTMHMLearnset, - [SPECIES_TOUCANNON] = sToucannonTMHMLearnset, - [SPECIES_YUNGOOS] = sYungoosTMHMLearnset, - [SPECIES_GUMSHOOS] = sGumshoosTMHMLearnset, - [SPECIES_GRUBBIN] = sGrubbinTMHMLearnset, - [SPECIES_CHARJABUG] = sCharjabugTMHMLearnset, - [SPECIES_VIKAVOLT] = sVikavoltTMHMLearnset, - [SPECIES_CRABRAWLER] = sCrabrawlerTMHMLearnset, - [SPECIES_CRABOMINABLE] = sCrabominableTMHMLearnset, - [SPECIES_ORICORIO] = sOricorioTMHMLearnset, - [SPECIES_CUTIEFLY] = sCutieflyTMHMLearnset, - [SPECIES_RIBOMBEE] = sRibombeeTMHMLearnset, - [SPECIES_ROCKRUFF] = sRockruffTMHMLearnset, - [SPECIES_LYCANROC] = sLycanrocTMHMLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiTMHMLearnset, - [SPECIES_MAREANIE] = sMareanieTMHMLearnset, - [SPECIES_TOXAPEX] = sToxapexTMHMLearnset, - [SPECIES_MUDBRAY] = sMudbrayTMHMLearnset, - [SPECIES_MUDSDALE] = sMudsdaleTMHMLearnset, - [SPECIES_DEWPIDER] = sDewpiderTMHMLearnset, - [SPECIES_ARAQUANID] = sAraquanidTMHMLearnset, - [SPECIES_FOMANTIS] = sFomantisTMHMLearnset, - [SPECIES_LURANTIS] = sLurantisTMHMLearnset, - [SPECIES_MORELULL] = sMorelullTMHMLearnset, - [SPECIES_SHIINOTIC] = sShiinoticTMHMLearnset, - [SPECIES_SALANDIT] = sSalanditTMHMLearnset, - [SPECIES_SALAZZLE] = sSalazzleTMHMLearnset, - [SPECIES_STUFFUL] = sStuffulTMHMLearnset, - [SPECIES_BEWEAR] = sBewearTMHMLearnset, - [SPECIES_BOUNSWEET] = sBounsweetTMHMLearnset, - [SPECIES_STEENEE] = sSteeneeTMHMLearnset, - [SPECIES_TSAREENA] = sTsareenaTMHMLearnset, - [SPECIES_COMFEY] = sComfeyTMHMLearnset, - [SPECIES_ORANGURU] = sOranguruTMHMLearnset, - [SPECIES_PASSIMIAN] = sPassimianTMHMLearnset, - [SPECIES_WIMPOD] = sWimpodTMHMLearnset, - [SPECIES_GOLISOPOD] = sGolisopodTMHMLearnset, - [SPECIES_SANDYGAST] = sSandygastTMHMLearnset, - [SPECIES_PALOSSAND] = sPalossandTMHMLearnset, - [SPECIES_PYUKUMUKU] = sPyukumukuTMHMLearnset, - [SPECIES_TYPE_NULL] = sTypeNullTMHMLearnset, - [SPECIES_SILVALLY] = sSilvallyTMHMLearnset, - [SPECIES_MINIOR] = sMiniorTMHMLearnset, - [SPECIES_KOMALA] = sKomalaTMHMLearnset, - [SPECIES_TURTONATOR] = sTurtonatorTMHMLearnset, - [SPECIES_TOGEDEMARU] = sTogedemaruTMHMLearnset, - [SPECIES_MIMIKYU] = sMimikyuTMHMLearnset, - [SPECIES_BRUXISH] = sBruxishTMHMLearnset, - [SPECIES_DRAMPA] = sDrampaTMHMLearnset, - [SPECIES_DHELMISE] = sDhelmiseTMHMLearnset, - [SPECIES_JANGMO_O] = sJangmooTMHMLearnset, - [SPECIES_HAKAMO_O] = sHakamooTMHMLearnset, - [SPECIES_KOMMO_O] = sKommooTMHMLearnset, - [SPECIES_TAPU_KOKO] = sTapuKokoTMHMLearnset, - [SPECIES_TAPU_LELE] = sTapuLeleTMHMLearnset, - [SPECIES_TAPU_BULU] = sTapuBuluTMHMLearnset, - [SPECIES_TAPU_FINI] = sTapuFiniTMHMLearnset, - [SPECIES_COSMOG] = sCosmogTMHMLearnset, - [SPECIES_COSMOEM] = sCosmoemTMHMLearnset, - [SPECIES_SOLGALEO] = sSolgaleoTMHMLearnset, - [SPECIES_LUNALA] = sLunalaTMHMLearnset, - [SPECIES_NIHILEGO] = sNihilegoTMHMLearnset, - [SPECIES_BUZZWOLE] = sBuzzwoleTMHMLearnset, - [SPECIES_PHEROMOSA] = sPheromosaTMHMLearnset, - [SPECIES_XURKITREE] = sXurkitreeTMHMLearnset, - [SPECIES_CELESTEELA] = sCelesteelaTMHMLearnset, - [SPECIES_KARTANA] = sKartanaTMHMLearnset, - [SPECIES_GUZZLORD] = sGuzzlordTMHMLearnset, - [SPECIES_NECROZMA] = sNecrozmaTMHMLearnset, - [SPECIES_MAGEARNA] = sMagearnaTMHMLearnset, - [SPECIES_MARSHADOW] = sMarshadowTMHMLearnset, - [SPECIES_POIPOLE] = sPoipoleTMHMLearnset, - [SPECIES_NAGANADEL] = sNaganadelTMHMLearnset, - [SPECIES_STAKATAKA] = sStakatakaTMHMLearnset, - [SPECIES_BLACEPHALON] = sBlacephalonTMHMLearnset, - [SPECIES_ZERAORA] = sZeraoraTMHMLearnset, - [SPECIES_MELTAN] = sMeltanTMHMLearnset, - [SPECIES_MELMETAL] = sMelmetalTMHMLearnset, - [SPECIES_GROOKEY] = sGrookeyTMHMLearnset, - [SPECIES_THWACKEY] = sThwackeyTMHMLearnset, - [SPECIES_RILLABOOM] = sRillaboomTMHMLearnset, - [SPECIES_SCORBUNNY] = sScorbunnyTMHMLearnset, - [SPECIES_RABOOT] = sRabootTMHMLearnset, - [SPECIES_CINDERACE] = sCinderaceTMHMLearnset, - [SPECIES_SOBBLE] = sSobbleTMHMLearnset, - [SPECIES_DRIZZILE] = sDrizzileTMHMLearnset, - [SPECIES_INTELEON] = sInteleonTMHMLearnset, - [SPECIES_SKWOVET] = sSkwovetTMHMLearnset, - [SPECIES_GREEDENT] = sGreedentTMHMLearnset, - [SPECIES_ROOKIDEE] = sRookideeTMHMLearnset, - [SPECIES_CORVISQUIRE] = sCorvisquireTMHMLearnset, - [SPECIES_CORVIKNIGHT] = sCorviknightTMHMLearnset, - [SPECIES_BLIPBUG] = sBlipbugTMHMLearnset, - [SPECIES_DOTTLER] = sDottlerTMHMLearnset, - [SPECIES_ORBEETLE] = sOrbeetleTMHMLearnset, - [SPECIES_NICKIT] = sNickitTMHMLearnset, - [SPECIES_THIEVUL] = sThievulTMHMLearnset, - [SPECIES_GOSSIFLEUR] = sGossifleurTMHMLearnset, - [SPECIES_ELDEGOSS] = sEldegossTMHMLearnset, - [SPECIES_WOOLOO] = sWoolooTMHMLearnset, - [SPECIES_DUBWOOL] = sDubwoolTMHMLearnset, - [SPECIES_CHEWTLE] = sChewtleTMHMLearnset, - [SPECIES_DREDNAW] = sDrednawTMHMLearnset, - [SPECIES_YAMPER] = sYamperTMHMLearnset, - [SPECIES_BOLTUND] = sBoltundTMHMLearnset, - [SPECIES_ROLYCOLY] = sRolycolyTMHMLearnset, - [SPECIES_CARKOL] = sCarkolTMHMLearnset, - [SPECIES_COALOSSAL] = sCoalossalTMHMLearnset, - [SPECIES_APPLIN] = sApplinTMHMLearnset, - [SPECIES_FLAPPLE] = sFlappleTMHMLearnset, - [SPECIES_APPLETUN] = sAppletunTMHMLearnset, - [SPECIES_SILICOBRA] = sSilicobraTMHMLearnset, - [SPECIES_SANDACONDA] = sSandacondaTMHMLearnset, - [SPECIES_CRAMORANT] = sCramorantTMHMLearnset, - [SPECIES_ARROKUDA] = sArrokudaTMHMLearnset, - [SPECIES_BARRASKEWDA] = sBarraskewdaTMHMLearnset, - [SPECIES_TOXEL] = sToxelTMHMLearnset, - [SPECIES_TOXTRICITY] = sToxtricityTMHMLearnset, - [SPECIES_SIZZLIPEDE] = sSizzlipedeTMHMLearnset, - [SPECIES_CENTISKORCH] = sCentiskorchTMHMLearnset, - [SPECIES_CLOBBOPUS] = sClobbopusTMHMLearnset, - [SPECIES_GRAPPLOCT] = sGrapploctTMHMLearnset, - [SPECIES_SINISTEA] = sSinisteaTMHMLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistTMHMLearnset, - [SPECIES_HATENNA] = sHatennaTMHMLearnset, - [SPECIES_HATTREM] = sHattremTMHMLearnset, - [SPECIES_HATTERENE] = sHattereneTMHMLearnset, - [SPECIES_IMPIDIMP] = sImpidimpTMHMLearnset, - [SPECIES_MORGREM] = sMorgremTMHMLearnset, - [SPECIES_GRIMMSNARL] = sGrimmsnarlTMHMLearnset, - [SPECIES_OBSTAGOON] = sObstagoonTMHMLearnset, - [SPECIES_PERRSERKER] = sPerrserkerTMHMLearnset, - [SPECIES_CURSOLA] = sCursolaTMHMLearnset, - [SPECIES_SIRFETCHD] = sSirfetchdTMHMLearnset, - [SPECIES_MR_RIME] = sMrRimeTMHMLearnset, - [SPECIES_RUNERIGUS] = sRunerigusTMHMLearnset, - [SPECIES_MILCERY] = sMilceryTMHMLearnset, - [SPECIES_ALCREMIE] = sAlcremieTMHMLearnset, - [SPECIES_FALINKS] = sFalinksTMHMLearnset, - [SPECIES_PINCURCHIN] = sPincurchinTMHMLearnset, - [SPECIES_SNOM] = sSnomTMHMLearnset, - [SPECIES_FROSMOTH] = sFrosmothTMHMLearnset, - [SPECIES_STONJOURNER] = sStonjournerTMHMLearnset, - [SPECIES_EISCUE] = sEiscueTMHMLearnset, - [SPECIES_INDEEDEE] = sIndeedeeTMHMLearnset, - [SPECIES_MORPEKO] = sMorpekoTMHMLearnset, - [SPECIES_CUFANT] = sCufantTMHMLearnset, - [SPECIES_COPPERAJAH] = sCopperajahTMHMLearnset, - [SPECIES_DRACOZOLT] = sDracozoltTMHMLearnset, - [SPECIES_ARCTOZOLT] = sArctozoltTMHMLearnset, - [SPECIES_DRACOVISH] = sDracovishTMHMLearnset, - [SPECIES_ARCTOVISH] = sArctovishTMHMLearnset, - [SPECIES_DURALUDON] = sDuraludonTMHMLearnset, - [SPECIES_DREEPY] = sDreepyTMHMLearnset, - [SPECIES_DRAKLOAK] = sDrakloakTMHMLearnset, - [SPECIES_DRAGAPULT] = sDragapultTMHMLearnset, - [SPECIES_ZACIAN] = sZacianTMHMLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaTMHMLearnset, - [SPECIES_ETERNATUS] = sEternatusTMHMLearnset, - [SPECIES_KUBFU] = sKubfuTMHMLearnset, - [SPECIES_URSHIFU] = sUrshifuTMHMLearnset, - [SPECIES_ZARUDE] = sZarudeTMHMLearnset, - [SPECIES_REGIELEKI] = sRegielekiTMHMLearnset, - [SPECIES_REGIDRAGO] = sRegidragoTMHMLearnset, - [SPECIES_GLASTRIER] = sGlastrierTMHMLearnset, - [SPECIES_SPECTRIER] = sSpectrierTMHMLearnset, - [SPECIES_CALYREX] = sCalyrexTMHMLearnset, - // Megas - [SPECIES_VENUSAUR_MEGA] = sVenusaurTMHMLearnset, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardTMHMLearnset, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTMHMLearnset, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseTMHMLearnset, - [SPECIES_BEEDRILL_MEGA] = sBeedrillTMHMLearnset, - [SPECIES_PIDGEOT_MEGA] = sPidgeotTMHMLearnset, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamTMHMLearnset, - [SPECIES_SLOWBRO_MEGA] = sSlowbroTMHMLearnset, - [SPECIES_GENGAR_MEGA] = sGengarTMHMLearnset, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTMHMLearnset, - [SPECIES_PINSIR_MEGA] = sPinsirTMHMLearnset, - [SPECIES_GYARADOS_MEGA] = sGyaradosTMHMLearnset, - [SPECIES_AERODACTYL_MEGA] = sAerodactylTMHMLearnset, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoTMHMLearnset, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTMHMLearnset, - [SPECIES_AMPHAROS_MEGA] = sAmpharosTMHMLearnset, - [SPECIES_STEELIX_MEGA] = sSteelixTMHMLearnset, - [SPECIES_SCIZOR_MEGA] = sScizorTMHMLearnset, - [SPECIES_HERACROSS_MEGA] = sHeracrossTMHMLearnset, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomTMHMLearnset, - [SPECIES_TYRANITAR_MEGA] = sTyranitarTMHMLearnset, - [SPECIES_SCEPTILE_MEGA] = sSceptileTMHMLearnset, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenTMHMLearnset, - [SPECIES_SWAMPERT_MEGA] = sSwampertTMHMLearnset, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirTMHMLearnset, - [SPECIES_SABLEYE_MEGA] = sSableyeTMHMLearnset, - [SPECIES_MAWILE_MEGA] = sMawileTMHMLearnset, - [SPECIES_AGGRON_MEGA] = sAggronTMHMLearnset, - [SPECIES_MEDICHAM_MEGA] = sMedichamTMHMLearnset, - [SPECIES_MANECTRIC_MEGA] = sManectricTMHMLearnset, - [SPECIES_SHARPEDO_MEGA] = sSharpedoTMHMLearnset, - [SPECIES_CAMERUPT_MEGA] = sCameruptTMHMLearnset, - [SPECIES_ALTARIA_MEGA] = sAltariaTMHMLearnset, - [SPECIES_BANETTE_MEGA] = sBanetteTMHMLearnset, - [SPECIES_ABSOL_MEGA] = sAbsolTMHMLearnset, - [SPECIES_GLALIE_MEGA] = sGlalieTMHMLearnset, - [SPECIES_SALAMENCE_MEGA] = sSalamenceTMHMLearnset, - [SPECIES_METAGROSS_MEGA] = sMetagrossTMHMLearnset, - [SPECIES_LATIAS_MEGA] = sLatiasTMHMLearnset, - [SPECIES_LATIOS_MEGA] = sLatiosTMHMLearnset, - [SPECIES_LOPUNNY_MEGA] = sLopunnyTMHMLearnset, - [SPECIES_GARCHOMP_MEGA] = sGarchompTMHMLearnset, - [SPECIES_LUCARIO_MEGA] = sLucarioTMHMLearnset, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTMHMLearnset, - [SPECIES_GALLADE_MEGA] = sGalladeTMHMLearnset, - [SPECIES_AUDINO_MEGA] = sAudinoTMHMLearnset, - [SPECIES_DIANCIE_MEGA] = sDiancieTMHMLearnset, - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = sRayquazaTMHMLearnset, - [SPECIES_KYOGRE_PRIMAL] = sKyogreTMHMLearnset, - [SPECIES_GROUDON_PRIMAL] = sGroudonTMHMLearnset, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTMHMLearnset, - [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTMHMLearnset, - [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTMHMLearnset, - [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTMHMLearnset, - [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTMHMLearnset, - [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTMHMLearnset, - [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTMHMLearnset, - [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTMHMLearnset, - [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTMHMLearnset, - [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTMHMLearnset, - [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTMHMLearnset, - [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTMHMLearnset, - [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTMHMLearnset, - [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTMHMLearnset, - [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTMHMLearnset, - [SPECIES_MUK_ALOLAN] = sMukAlolanTMHMLearnset, - [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTMHMLearnset, - [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTMHMLearnset, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTMHMLearnset, - [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTMHMLearnset, - [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTMHMLearnset, - [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTMHMLearnset, - [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTMHMLearnset, - [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTMHMLearnset, - [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTMHMLearnset, - [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTMHMLearnset, - [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTMHMLearnset, - [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTMHMLearnset, - [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTMHMLearnset, - [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTMHMLearnset, - [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTMHMLearnset, - [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTMHMLearnset, - [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTMHMLearnset, - [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTMHMLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTMHMLearnset, - [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTMHMLearnset, - [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTMHMLearnset, - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_BELLE] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_POP_STAR] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_PH_D] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_LIBRE] = sPikachuTMHMLearnset, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTMHMLearnset, - [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTMHMLearnset, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = sPichuTMHMLearnset, -#endif - // Unown - [SPECIES_UNOWN_B] = sUnownTMHMLearnset, - [SPECIES_UNOWN_C] = sUnownTMHMLearnset, - [SPECIES_UNOWN_D] = sUnownTMHMLearnset, - [SPECIES_UNOWN_E] = sUnownTMHMLearnset, - [SPECIES_UNOWN_F] = sUnownTMHMLearnset, - [SPECIES_UNOWN_G] = sUnownTMHMLearnset, - [SPECIES_UNOWN_H] = sUnownTMHMLearnset, - [SPECIES_UNOWN_I] = sUnownTMHMLearnset, - [SPECIES_UNOWN_J] = sUnownTMHMLearnset, - [SPECIES_UNOWN_K] = sUnownTMHMLearnset, - [SPECIES_UNOWN_L] = sUnownTMHMLearnset, - [SPECIES_UNOWN_M] = sUnownTMHMLearnset, - [SPECIES_UNOWN_N] = sUnownTMHMLearnset, - [SPECIES_UNOWN_O] = sUnownTMHMLearnset, - [SPECIES_UNOWN_P] = sUnownTMHMLearnset, - [SPECIES_UNOWN_Q] = sUnownTMHMLearnset, - [SPECIES_UNOWN_R] = sUnownTMHMLearnset, - [SPECIES_UNOWN_S] = sUnownTMHMLearnset, - [SPECIES_UNOWN_T] = sUnownTMHMLearnset, - [SPECIES_UNOWN_U] = sUnownTMHMLearnset, - [SPECIES_UNOWN_V] = sUnownTMHMLearnset, - [SPECIES_UNOWN_W] = sUnownTMHMLearnset, - [SPECIES_UNOWN_X] = sUnownTMHMLearnset, - [SPECIES_UNOWN_Y] = sUnownTMHMLearnset, - [SPECIES_UNOWN_Z] = sUnownTMHMLearnset, - [SPECIES_UNOWN_EMARK] = sUnownTMHMLearnset, - [SPECIES_UNOWN_QMARK] = sUnownTMHMLearnset, - // Castform - [SPECIES_CASTFORM_SUNNY] = sCastformTMHMLearnset, - [SPECIES_CASTFORM_RAINY] = sCastformTMHMLearnset, - [SPECIES_CASTFORM_SNOWY] = sCastformTMHMLearnset, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTMHMLearnset, - [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTMHMLearnset, - [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTMHMLearnset, -#if P_NEW_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTMHMLearnset, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTMHMLearnset, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTMHMLearnset, - [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTMHMLearnset, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = sCherrimTMHMLearnset, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = sShellosTMHMLearnset, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTMHMLearnset, - // Rotom - [SPECIES_ROTOM_HEAT] = sRotomTMHMLearnset, - [SPECIES_ROTOM_WASH] = sRotomTMHMLearnset, - [SPECIES_ROTOM_FROST] = sRotomTMHMLearnset, - [SPECIES_ROTOM_FAN] = sRotomTMHMLearnset, - [SPECIES_ROTOM_MOW] = sRotomTMHMLearnset, - // Giratina - [SPECIES_GIRATINA_ORIGIN] = sGiratinaTMHMLearnset, - // Shaymin - [SPECIES_SHAYMIN_SKY] = sShayminSkyTMHMLearnset, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_FLYING] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_POISON] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_GROUND] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_ROCK] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_BUG] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_GHOST] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_STEEL] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_FIRE] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_WATER] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_GRASS] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_ELECTRIC] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_PSYCHIC] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_ICE] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_DRAGON] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_DARK] = sArceusTMHMLearnset, - [SPECIES_ARCEUS_FAIRY] = sArceusTMHMLearnset, - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTMHMLearnset, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTMHMLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTMHMLearnset, - // Deerling - [SPECIES_DEERLING_SUMMER] = sDeerlingTMHMLearnset, - [SPECIES_DEERLING_AUTUMN] = sDeerlingTMHMLearnset, - [SPECIES_DEERLING_WINTER] = sDeerlingTMHMLearnset, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTMHMLearnset, - [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTMHMLearnset, - [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTMHMLearnset, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = sTornadusTMHMLearnset, - [SPECIES_THUNDURUS_THERIAN] = sThundurusTMHMLearnset, - [SPECIES_LANDORUS_THERIAN] = sLandorusTMHMLearnset, - // Kyurem - [SPECIES_KYUREM_WHITE] = sKyuremWhiteTMHMLearnset, - [SPECIES_KYUREM_BLACK] = sKyuremBlackTMHMLearnset, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = sKeldeoTMHMLearnset, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTMHMLearnset, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTMHMLearnset, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTMHMLearnset, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTMHMLearnset, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTMHMLearnset, - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTMHMLearnset, - [SPECIES_GRENINJA_ASH] = sGreninjaTMHMLearnset, - // Vivillon - [SPECIES_VIVILLON_POLAR] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_TUNDRA] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_GARDEN] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_ELEGANT] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_MEADOW] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_MODERN] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_MARINE] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_SANDSTORM] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_RIVER] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_MONSOON] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_SAVANNA] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_SUN] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_OCEAN] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_JUNGLE] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_FANCY] = sVivillonTMHMLearnset, - [SPECIES_VIVILLON_POKE_BALL] = sVivillonTMHMLearnset, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTMHMLearnset, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTMHMLearnset, - [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTMHMLearnset, - [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTMHMLearnset, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTMHMLearnset, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTMHMLearnset, - [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTMHMLearnset, - [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTMHMLearnset, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTMHMLearnset, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTMHMLearnset, - [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTMHMLearnset, - [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTMHMLearnset, - [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTMHMLearnset, - //Furfrou - [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTMHMLearnset, - [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTMHMLearnset, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTMHMLearnset, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = sAegislashTMHMLearnset, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTMHMLearnset, - [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTMHMLearnset, - [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTMHMLearnset, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = sGourgeistTMHMLearnset, - [SPECIES_GOURGEIST_LARGE] = sGourgeistTMHMLearnset, - [SPECIES_GOURGEIST_SUPER] = sGourgeistTMHMLearnset, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = sXerneasTMHMLearnset, - // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeTMHMLearnset, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTMHMLearnset, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTMHMLearnset, - [SPECIES_ZYGARDE_COMPLETE] = sZygardeTMHMLearnset, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTMHMLearnset, - // Oricorio - [SPECIES_ORICORIO_POM_POM] = sOricorioTMHMLearnset, - [SPECIES_ORICORIO_PAU] = sOricorioTMHMLearnset, - [SPECIES_ORICORIO_SENSU] = sOricorioTMHMLearnset, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTMHMLearnset, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTMHMLearnset, - [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTMHMLearnset, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTMHMLearnset, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_FLYING] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_POISON] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_GROUND] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_ROCK] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_BUG] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_GHOST] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_STEEL] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_FIRE] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_WATER] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_GRASS] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_ICE] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_DRAGON] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_DARK] = sSilvallyTMHMLearnset, - [SPECIES_SILVALLY_FAIRY] = sSilvallyTMHMLearnset, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_RED] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTMHMLearnset, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTMHMLearnset, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = sMimikyuTMHMLearnset, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTMHMLearnset, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTMHMLearnset, - [SPECIES_NECROZMA_ULTRA] = sNecrozmaTMHMLearnset, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTMHMLearnset, - // Cramorant - [SPECIES_CRAMORANT_GULPING] = sCramorantTMHMLearnset, - [SPECIES_CRAMORANT_GORGING] = sCramorantTMHMLearnset, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTMHMLearnset, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTMHMLearnset, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTMHMLearnset, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTMHMLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTMHMLearnset, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = sEiscueTMHMLearnset, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTMHMLearnset, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = sMorpekoTMHMLearnset, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTMHMLearnset, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTMHMLearnset, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTMHMLearnset, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTMHMLearnset, - // Zarude - [SPECIES_ZARUDE_DADA] = sZarudeTMHMLearnset, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTMHMLearnset, - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTMHMLearnset, -#endif -}; diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h deleted file mode 100644 index 0af5a92e5d..0000000000 --- a/src/data/pokemon/tmhm_learnsets.h +++ /dev/null @@ -1,28121 +0,0 @@ - -/* static const u16 sNoneTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_EARTHQUAKE, - MOVE_FLY, - MOVE_ICE_BEAM, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; */ - -static const u16 sBulbasaurTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sIvysaurTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVenusaurTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCharmanderTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCharmeleonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCharizardTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSquirtleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWartortleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlastoiseTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCaterpieTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sMetapodTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sButterfreeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeedleTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sKakunaTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sBeedrillTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPidgeyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPidgeottoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPidgeotTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRattataTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaticateTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpearowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFearowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEkansTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sArbokTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaichuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandshrewTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandslashTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidoranFTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidorinaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidoqueenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidoranMTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidorinoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNidokingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sClefairyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sClefableTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVulpixTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNinetalesTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sJigglypuffTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWigglytuffTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sZubatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolbatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOddishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGloomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVileplumeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sParasTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sParasectTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVenonatTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVenomothTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDiglettTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDugtrioTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowthTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPersianTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPsyduckTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolduckTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMankeyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPrimeapeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrowlitheTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sArcanineTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPoliwagTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPoliwhirlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPoliwrathTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAbraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKadabraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlakazamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMachopTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMachokeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMachampTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBellsproutTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeepinbellTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVictreebelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTentacoolTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTentacruelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGeodudeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGravelerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolemTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPonytaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRapidashTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowpokeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowbroTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagnemiteTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagnetonTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFarfetchdTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDoduoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDodrioTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDewgongTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrimerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMukTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShellderTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCloysterTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGastlyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHaunterTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGengarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOnixTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrowzeeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHypnoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKrabbyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKinglerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVoltorbTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sElectrodeTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sExeggcuteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sExeggutorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCuboneTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarowakTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHitmonleeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHitmonchanTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLickitungTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKoffingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeezingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRhyhornTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRhydonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChanseyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTangelaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKangaskhanTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHorseaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeadraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGoldeenTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeakingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sStaryuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sStarmieTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMrMimeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sScytherTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sJynxTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sElectabuzzTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagmarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPinsirTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTaurosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagikarpTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sGyaradosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLaprasTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDittoTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sEeveeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVaporeonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sJolteonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlareonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPorygonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOmanyteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sOmastarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKabutoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKabutopsTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAerodactylTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnorlaxTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArticunoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sZapdosTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMoltresTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDratiniTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDragonairTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDragoniteTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMewtwoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMewTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sChikoritaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBayleefTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeganiumTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCyndaquilTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sQuilavaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTyphlosionTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTotodileTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCroconawTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFeraligatrTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSentretTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurretTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoothootTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNoctowlTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLedybaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLedianTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpinarakTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAriadosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCrobatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChinchouTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLanturnTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPichuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCleffaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sIgglybuffTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTogepiTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTogeticTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNatuTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sXatuTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMareepTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlaaffyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAmpharosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBellossomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarillTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAzumarillTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSudowoodoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPolitoedTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoppipTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkiploomTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sJumpluffTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAipomTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSunkernTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSunfloraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sYanmaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWooperTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sQuagsireTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sEspeonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sUmbreonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMurkrowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowkingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMisdreavusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sWobbuffetTMHMLearnset[] = { - MOVE_SAFEGUARD, - MOVE_UNAVAILABLE, -}; - -static const u16 sGirafarigTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPinecoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sForretressTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDunsparceTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGligarTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSteelixTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnubbullTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGranbullTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sQwilfishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sScizorTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShuckleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHeracrossTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSneaselTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTeddiursaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sUrsaringTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlugmaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagcargoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwinubTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPiloswineTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorsolaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRemoraidTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sOctilleryTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDelibirdTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMantineTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkarmoryTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoundourTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoundoomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKingdraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPhanpyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDonphanTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPorygon2TMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStantlerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSmeargleTMHMLearnset[] = { - MOVE_FLAMETHROWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sTyrogueTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHitmontopTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSmoochumTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sElekidTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagbyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiltankTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlisseyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaikouTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEnteiTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSuicuneTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLarvitarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPupitarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTyranitarTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLugiaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoOhTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCelebiTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTreeckoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrovyleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSceptileTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTorchicTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCombuskenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlazikenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMudkipTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarshtompTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwampertTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPoochyenaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMightyenaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZigzagoonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLinooneTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWurmpleTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sSilcoonTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sBeautiflyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCascoonTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sDustoxTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLotadTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLombreTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLudicoloTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeedotTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNuzleafTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShiftryTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTaillowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwellowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWingullTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPelipperTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaltsTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKirliaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGardevoirTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSurskitTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMasquerainTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sShroomishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBreloomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlakothTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVigorothTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlakingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNincadaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNinjaskTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShedinjaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWhismurTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLoudredTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sExploudTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMakuhitaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHariyamaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAzurillTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNosepassTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkittyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDelcattyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSableyeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMawileTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAronTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLaironTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAggronTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMedititeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMedichamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sElectrikeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sManectricTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPlusleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMinunTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVolbeatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sIllumiseTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRoseliaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGulpinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwalotTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCarvanhaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSharpedoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWailmerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWailordTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNumelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCameruptTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTorkoalTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpoinkTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrumpigTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpindaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTrapinchTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVibravaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlygonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCacneaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCacturneTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwabluTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAltariaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZangooseTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeviperTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLunatoneTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSolrockTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBarboachTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWhiscashTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorphishTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCrawdauntTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBaltoyTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sClaydolTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLileepTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCradilyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAnorithTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArmaldoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFeebasTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiloticTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCastformTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKecleonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sShuppetTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBanetteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDuskullTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDusclopsTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTropiusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChimechoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAbsolTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWynautTMHMLearnset[] = { - MOVE_SAFEGUARD, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnoruntTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlalieTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSphealTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSealeoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWalreinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sClamperlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHuntailTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGorebyssTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRelicanthTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLuvdiscTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBagonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShelgonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSalamenceTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBeldumTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sMetangTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMetagrossTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegirockTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegiceTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegisteelTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLatiasTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLatiosTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKyogreTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGroudonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRayquazaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sJirachiTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -#if P_NEW_POKEMON == TRUE -static const u16 sTurtwigTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrotleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTorterraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChimcharTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMonfernoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sInfernapeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPiplupTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPrinplupTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sEmpoleonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sStarlyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStaraviaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStaraptorTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBidoofTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBibarelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKricketotTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sKricketuneTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShinxTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLuxioTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLuxrayTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBudewTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRoseradeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCranidosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRampardosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShieldonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBastiodonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBurmyTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_UNAVAILABLE, -}; - -static const u16 sWormadamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMothimTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCombeeTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sVespiquenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPachirisuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBuizelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloatzelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCherubiTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCherrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShellosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGastrodonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAmbipomTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrifloonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrifblimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBunearyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLopunnyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMismagiusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHonchkrowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlameowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPuruglyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sChinglingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStunkyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkuntankTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBronzorTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBronzongTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBonslyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMimeJrTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHappinyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sChatotTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpiritombTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGibleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGabiteTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGarchompTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMunchlaxTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRioluTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLucarioTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHippopotasTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHippowdonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkorupiTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrapionTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCroagunkTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sToxicroakTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCarnivineTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFinneonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sLumineonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMantykeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnoverTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAbomasnowTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeavileTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagnezoneTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLickilickyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRhyperiorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTangrowthTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sElectivireTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagmortarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTogekissTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sYanmegaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLeafeonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlaceonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGliscorTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMamoswineTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPorygonZTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGalladeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sProbopassTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDusknoirTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFroslassTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sUxieTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMespritTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAzelfTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDialgaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPalkiaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHeatranTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegigigasTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_RAIN_DANCE, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGiratinaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCresseliaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPhioneTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sManaphyTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarkraiTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShayminTMHMLearnset[] = { - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVictiniTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnivyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sServineTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSerperiorTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTepigTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPigniteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEmboarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOshawottTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDewottTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSamurottTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPatratTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWatchogTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLillipupTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHerdierTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStoutlandTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPurrloinTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLiepardTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPansageTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSimisageTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPansearTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSimisearTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPanpourTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSimipourTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMunnaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMusharnaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPidoveTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTranquillTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnfezantTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlitzleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZebstrikaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRoggenrolaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBoldoreTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGigalithTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWoobatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwoobatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrilburTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sExcadrillTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAudinoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTimburrTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGurdurrTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sConkeldurrTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTympoleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPalpitoadTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSeismitoadTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sThrohTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSawkTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSewaddleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwadloonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLeavannyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVenipedeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWhirlipedeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sScolipedeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCottoneeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWhimsicottTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPetililTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLilligantTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBasculinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandileTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKrokorokTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKrookodileTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarumakaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarmanitanTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMaractusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDwebbleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCrustleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sScraggyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sScraftyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSigilyphTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sYamaskTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCofagrigusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTirtougaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCarracostaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArchenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sArcheopsTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTrubbishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGarbodorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZoruaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZoroarkTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMinccinoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCinccinoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGothitaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGothoritaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGothitelleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSolosisTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDuosionTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sReuniclusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDucklettTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwannaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVanilliteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVanillishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVanilluxeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeerlingTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSawsbuckTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEmolgaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKarrablastTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEscavalierTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFoongusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAmoongussTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFrillishTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sJellicentTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlomomolaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sJoltikTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGalvantulaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFerroseedTMHMLearnset[] = { - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFerrothornTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKlinkTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKlangTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKlinklangTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTynamoTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sEelektrikTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEelektrossTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sElgyemTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBeheeyemTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLitwickTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLampentTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChandelureTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAxewTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFraxureTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHaxorusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCubchooTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBearticTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCryogonalTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sShelmetTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAccelgorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStunfiskTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMienfooTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMienshaoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDruddigonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolettTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolurkTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPawniardTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBisharpTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBouffalantTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRuffletTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBraviaryTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVullabyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMandibuzzTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHeatmorTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDurantTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeinoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZweilousTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHydreigonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLarvestaTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVolcaronaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCobalionTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTerrakionTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVirizionTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTornadusTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sThundurusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sReshiramTMHMLearnset[] = { - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZekromTMHMLearnset[] = { - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLandorusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKyuremTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKeldeoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeloettaTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGenesectTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChespinTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sQuilladinTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sChesnaughtTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFennekinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBraixenTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDelphoxTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFroakieTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFrogadierTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGreninjaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBunnelbyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDiggersbyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFletchlingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFletchinderTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTalonflameTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sScatterbugTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sSpewpaTMHMLearnset[] = { - MOVE_PROTECT, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLitleoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPyroarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlabebeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlorgesTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkiddoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGogoatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPanchamTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPangoroTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sEspurrTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowsticTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHonedgeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDoubladeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAegislashTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpritzeeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAromatisseTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSwirlixTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlurpuffTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sInkayTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMalamarTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBinacleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBarbaracleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkrelpTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDragalgeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sClauncherTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sClawitzerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sHelioptileTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHelioliskTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTyruntTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTyrantrumTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sAmauraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAurorusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSylveonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHawluchaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDedenneTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCarbinkTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGoomyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSliggooTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGoodraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sKlefkiTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPhantumpTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTrevenantTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPumpkabooTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGourgeistTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBergmiteTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAvaluggTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNoibatTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sNoivernTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sXerneasTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sYveltalTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZygardeTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDiancieTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoopaTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVolcanionTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRowletTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDartrixTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDecidueyeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLittenTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTorracatTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sIncineroarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPopplioTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBrionneTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPrimarinaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHADOW_BALL, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikipekTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTrumbeakTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sToucannonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sYungoosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGumshoosTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrubbinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCharjabugTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVikavoltTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCrabrawlerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCrabominableTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOricorioTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCutieflyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRibombeeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRockruffTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLycanrocTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWishiwashiTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMareanieTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sToxapexTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sMudbrayTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMudsdaleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDewpiderTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sAraquanidTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFomantisTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLurantisTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMorelullTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShiinoticTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSalanditTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSalazzleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStuffulTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBewearTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBounsweetTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSteeneeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTsareenaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sComfeyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOranguruTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPassimianTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWimpodTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolisopodTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandygastTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPalossandTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPyukumukuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_HAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTypeNullTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKomalaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_RETURN, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTurtonatorTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTogedemaruTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMimikyuTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBruxishTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SNATCH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrampaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDhelmiseTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sJangmooTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHakamooTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKommooTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHOCK_WAVE, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sTapuKokoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTapuLeleTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTapuBuluTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTapuFiniTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCosmogTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sCosmoemTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sSolgaleoTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLunalaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNihilegoTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBuzzwoleTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPheromosaTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sXurkitreeTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sCelesteelaTMHMLearnset[] = { - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKartanaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGuzzlordTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNecrozmaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagearnaTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarshadowTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SHADOW_BALL, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPoipoleTMHMLearnset[] = { - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNaganadelTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sStakatakaTMHMLearnset[] = { - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SKILL_SWAP, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlacephalonTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZeraoraTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SHOCK_WAVE, - MOVE_SNATCH, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - //TMs of LGPE don't match with USUM -static const u16 sMeltanTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sMelmetalTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrookeyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sThwackeyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRillaboomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sScorbunnyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRabootTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCinderaceTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSobbleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrizzileTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sInteleonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSkwovetTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sGreedentTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sRookideeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FLY, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorvisquireTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FLY, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorviknightTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sBlipbugTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sDottlerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sOrbeetleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sNickitTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sThievulTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sGossifleurTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sEldegossTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sWoolooTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sDubwoolTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sChewtleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrednawTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sYamperTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sBoltundTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROAR, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRolycolyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_UNAVAILABLE, -}; - -static const u16 sCarkolTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_UNAVAILABLE, -}; - -static const u16 sCoalossalTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sApplinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlappleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_FACADE, - MOVE_FLY, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sAppletunTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilicobraTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_SANDSTORM, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandacondaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_UNAVAILABLE, -}; - -static const u16 sCramorantTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sArrokudaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIVE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sBarraskewdaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIVE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sToxelTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sToxtricityTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSizzlipedeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sCentiskorchTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sClobbopusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIVE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrapploctTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DIVE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sSinisteaTMHMLearnset[] = { - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sPolteageistTMHMLearnset[] = { - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sHatennaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_UNAVAILABLE, -}; - -static const u16 sHattremTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_UNAVAILABLE, -}; - -static const u16 sHattereneTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_UNAVAILABLE, -}; - -static const u16 sImpidimpTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sMorgremTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrimmsnarlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sObstagoonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sPerrserkerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCursolaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_UNAVAILABLE, -}; - -static const u16 sSirfetchdTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sMrRimeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRunerigusTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sMilceryTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sFalinksTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_UNAVAILABLE, -}; - -static const u16 sPincurchinTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSnomTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sFrosmothTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_UNAVAILABLE, -}; - -static const u16 sStonjournerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_UNAVAILABLE, -}; - -static const u16 sEiscueTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_FACADE, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sIndeedeeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sMorpekoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCufantTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_UNAVAILABLE, -}; - -static const u16 sCopperajahTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sDracozoltTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sArctozoltTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sDracovishTMHMLearnset[] = { - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sArctovishTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SURF, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sDuraludonTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sDreepyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sDrakloakTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sDragapultTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIVE, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_SURF, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sZacianTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sZamazentaTMHMLearnset[] = { - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sEternatusTMHMLearnset[] = { - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKubfuTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_UNAVAILABLE, -}; - -static const u16 sUrshifuTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sZarudeTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegielekiTMHMLearnset[] = { - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRegidragoTMHMLearnset[] = { - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sGlastrierTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSpectrierTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCalyrexTMHMLearnset[] = { - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sRattataAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaticateAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BULK_UP, - MOVE_CUT, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRaichuAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_FACADE, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandshrewAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSandslashAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVulpixAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNinetalesAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_REST, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDiglettAlolanTMHMLearnset[] = { - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDugtrioAlolanTMHMLearnset[] = { - MOVE_CUT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SLUDGE_BOMB, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowthAlolanTMHMLearnset[] = { - MOVE_CUT, - MOVE_FACADE, - MOVE_FLASH, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPersianAlolanTMHMLearnset[] = { - MOVE_CUT, - MOVE_FACADE, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_TAUNT, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGeodudeAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_EARTHQUAKE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGravelerAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGolemAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGrimerAlolanTMHMLearnset[] = { - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMukAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sExeggutorAlolanTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SOLAR_BEAM, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMarowakAlolanTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_SHADOW_BALL, - MOVE_STRENGTH, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowthGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sPonytaGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sRapidashGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowpokeGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowbroGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sFarfetchdGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_UNAVAILABLE, -}; - -static const u16 sWeezingGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMrMimeGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sArticunoGalarianTMHMLearnset[] = { - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_STEEL_WING, - MOVE_UNAVAILABLE, -}; - -static const u16 sZapdosGalarianTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sMoltresGalarianTMHMLearnset[] = { - MOVE_FACADE, - MOVE_FLY, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -static const u16 sSlowkingGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DIVE, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sCorsolaGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sZigzagoonGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sLinooneGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarumakaGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FOCUS_PUNCH, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sDarmanitanGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sYamaskGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sStunfiskGalarianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SLUDGE_BOMB, - MOVE_SURF, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuCosplayTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuRockStarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuBelleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuPopStarTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuPhDTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuLibreTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuOriginalCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuHoennCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuSinnohCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuUnovaCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuKalosCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuAlolaCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPikachuPartnerCapTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPichuSpikyEaredTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; -#endif - -static const u16 sUnownBTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownCTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownDTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownETMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownFTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownGTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownHTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownITMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownJTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownKTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownLTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownMTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownNTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownOTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownPTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownQTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownRTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownSTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownTTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownUTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownVTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownWTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownXTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownYTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownZTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownEmarkTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sUnownQmarkTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysAttackTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysDefenseTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeoxysSpeedTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -#if P_NEW_POKEMON == TRUE -static const u16 sBurmySandyCloakTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_UNAVAILABLE, -}; - -static const u16 sBurmyTrashCloakTMHMLearnset[] = { - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_UNAVAILABLE, -}; - -static const u16 sWormadamSandyCloakTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sWormadamTrashCloakTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShellosEastSeaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGastrodonEastSeaTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomHeatTMHMLearnset[] = { - MOVE_OVERHEAT, - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomWashTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomFrostTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomFanTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sRotomMowTMHMLearnset[] = { - MOVE_UNAVAILABLE, -}; - -static const u16 sGiratinaOriginTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sShayminSkyTMHMLearnset[] = { - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusFightingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusFlyingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusPoisonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusGroundTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusRockTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusBugTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusGhostTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusSteelTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusFireTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusWaterTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusGrassTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusElectricTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusPsychicTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusIceTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusDragonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusDarkTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sArceusFairyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sBasculinBlueStripedTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeerlingSummerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeerlingAutumnTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sDeerlingWinterTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSawsbuckSummerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSawsbuckAutumnTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSawsbuckWinterTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sTornadusTherianTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sThundurusTherianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLandorusTherianTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_CALM_MIND, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SLUDGE_BOMB, - MOVE_STRENGTH, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKyuremWhiteTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKyuremBlackTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sKeldeoResoluteTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sGenesectDouseDriveTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGenesectShockDriveTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGenesectBurnDriveTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGenesectChillDriveTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BLIZZARD, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGreninjaBattleBondTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SECRET_POWER, - MOVE_SNATCH, - MOVE_STRENGTH, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonPolarTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonTundraTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonContinentalTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonGardenTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonElegantTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonMeadowTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonModernTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonMarineTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonArchipelagoTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonHighPlainsTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonSandstormTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonRiverTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonMonsoonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonSavannaTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonSunTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonOceanTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonJungleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonFancyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sVivillonPokeBallTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlabebeYellowFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlabebeOrangeFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlabebeBlueFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlabebeWhiteFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteYellowFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteOrangeFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteBlueFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteWhiteFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFloetteEternalFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlorgesYellowFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlorgesOrangeFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlorgesBlueFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFlorgesWhiteFlowerTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouHeartTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouStarTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouDiamondTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouDebutanteTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouMatronTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouDandyTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouLaReineTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouKabukiTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sFurfrouPharaohTrimTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_SECRET_POWER, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMeowsticFemaleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPumpkabooSmallTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPumpkabooLargeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sPumpkabooSuperTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGourgeistSmallTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGourgeistLargeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sGourgeistSuperTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BULLET_SEED, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZygarde10TMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZygarde10PowerConstructTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZygarde50PowerConstructTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sZygardeCompleteTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_DIG, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_SMASH, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHOCK_WAVE, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sHoopaUnboundTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLASH, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOricorioPomPomTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOricorioPauTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sOricorioSensuTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FLY, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_STEEL_WING, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sRockruffOwnTempoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLycanrocMidnightTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sLycanrocDuskTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DOUBLE_TEAM, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyFightingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyFlyingTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyPoisonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyGroundTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyRockTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyBugTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyGhostTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallySteelTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyFireTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyWaterTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyGrassTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyElectricTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyPsychicTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyIceTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyDragonTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyDarkTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSilvallyFairyTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_FACADE, - MOVE_FLAMETHROWER, - MOVE_FRUSTRATION, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_SANDSTORM, - MOVE_SHADOW_BALL, - MOVE_STEEL_WING, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreRedTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreOrangeTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreYellowTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreGreenTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreBlueTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreIndigoTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMiniorCoreVioletTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SOLAR_BEAM, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNecrozmaDuskManeTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sNecrozmaDawnWingsTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROCK_TOMB, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THIEF, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sMagearnaOriginalColorTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_CALM_MIND, - MOVE_DOUBLE_TEAM, - MOVE_FRUSTRATION, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_REFLECT, - MOVE_RETURN, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SOLAR_BEAM, - MOVE_THUNDERBOLT, - MOVE_UNAVAILABLE, -}; - -static const u16 sToxtricityLowKeyTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_FACADE, - MOVE_HYPER_BEAM, - MOVE_PROTECT, - MOVE_REST, - MOVE_SHOCK_WAVE, - MOVE_SLUDGE_BOMB, - MOVE_TAUNT, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TOXIC, - MOVE_UNAVAILABLE, -}; - -static const u16 sSinisteaAntiqueTMHMLearnset[] = { - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sPolteageistAntiqueTMHMLearnset[] = { - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieRubyCreamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieMatchaCreamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieMintCreamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieLemonCreamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieSaltedCreamTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieRubySwirlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieCaramelSwirlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sAlcremieRainbowSwirlTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SOLAR_BEAM, - MOVE_UNAVAILABLE, -}; - -static const u16 sIndeedeeFemaleTMHMLearnset[] = { - MOVE_ATTRACT, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sUrshifuRapidStrikeStyleTMHMLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_DIG, - MOVE_DIVE, - MOVE_FACADE, - MOVE_FOCUS_PUNCH, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_REST, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_TAUNT, - MOVE_WATERFALL, - MOVE_UNAVAILABLE, -}; - -static const u16 sZarudeDadaTMHMLearnset[] = { - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_DIG, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_IRON_TAIL, - MOVE_PROTECT, - MOVE_REST, - MOVE_ROCK_TOMB, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_UNAVAILABLE, -}; - -static const u16 sCalyrexIceRiderTMHMLearnset[] = { - MOVE_BLIZZARD, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_TORMENT, - MOVE_UNAVAILABLE, -}; - -static const u16 sCalyrexShadowRiderTMHMLearnset[] = { - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_FACADE, - MOVE_GIGA_DRAIN, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_REFLECT, - MOVE_REST, - MOVE_SAFEGUARD, - MOVE_SHADOW_BALL, - MOVE_SKILL_SWAP, - MOVE_SOLAR_BEAM, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_UNAVAILABLE, -}; - -#endif \ No newline at end of file diff --git a/src/data/pokemon/tutor_learnsets.h b/src/data/pokemon/tutor_learnsets.h deleted file mode 100644 index 7d4eb99dff..0000000000 --- a/src/data/pokemon/tutor_learnsets.h +++ /dev/null @@ -1,10595 +0,0 @@ -const u16 gTutorMoves[] = -{ - [TUTOR_MOVE_MEGA_PUNCH] = MOVE_MEGA_PUNCH, - [TUTOR_MOVE_SWORDS_DANCE] = MOVE_SWORDS_DANCE, - [TUTOR_MOVE_MEGA_KICK] = MOVE_MEGA_KICK, - [TUTOR_MOVE_BODY_SLAM] = MOVE_BODY_SLAM, - [TUTOR_MOVE_DOUBLE_EDGE] = MOVE_DOUBLE_EDGE, - [TUTOR_MOVE_COUNTER] = MOVE_COUNTER, - [TUTOR_MOVE_SEISMIC_TOSS] = MOVE_SEISMIC_TOSS, - [TUTOR_MOVE_MIMIC] = MOVE_MIMIC, - [TUTOR_MOVE_METRONOME] = MOVE_METRONOME, - [TUTOR_MOVE_SOFT_BOILED] = MOVE_SOFT_BOILED, - [TUTOR_MOVE_DREAM_EATER] = MOVE_DREAM_EATER, - [TUTOR_MOVE_THUNDER_WAVE] = MOVE_THUNDER_WAVE, - [TUTOR_MOVE_EXPLOSION] = MOVE_EXPLOSION, - [TUTOR_MOVE_ROCK_SLIDE] = MOVE_ROCK_SLIDE, - [TUTOR_MOVE_SUBSTITUTE] = MOVE_SUBSTITUTE, - [TUTOR_MOVE_DYNAMIC_PUNCH] = MOVE_DYNAMIC_PUNCH, - [TUTOR_MOVE_ROLLOUT] = MOVE_ROLLOUT, - [TUTOR_MOVE_PSYCH_UP] = MOVE_PSYCH_UP, - [TUTOR_MOVE_SNORE] = MOVE_SNORE, - [TUTOR_MOVE_ICY_WIND] = MOVE_ICY_WIND, - [TUTOR_MOVE_ENDURE] = MOVE_ENDURE, - [TUTOR_MOVE_MUD_SLAP] = MOVE_MUD_SLAP, - [TUTOR_MOVE_ICE_PUNCH] = MOVE_ICE_PUNCH, - [TUTOR_MOVE_SWAGGER] = MOVE_SWAGGER, - [TUTOR_MOVE_SLEEP_TALK] = MOVE_SLEEP_TALK, - [TUTOR_MOVE_SWIFT] = MOVE_SWIFT, - [TUTOR_MOVE_DEFENSE_CURL] = MOVE_DEFENSE_CURL, - [TUTOR_MOVE_THUNDER_PUNCH] = MOVE_THUNDER_PUNCH, - [TUTOR_MOVE_FIRE_PUNCH] = MOVE_FIRE_PUNCH, - [TUTOR_MOVE_FURY_CUTTER] = MOVE_FURY_CUTTER, -}; - -#define TUTOR_LEARNSET(moves) ((u32)(moves)) -#define TUTOR(move) ((u64)1 << (TUTOR_##move)) - -static const u32 sTutorLearnsets[] = -{ - [SPECIES_NONE] = (0), - - [SPECIES_BULBASAUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_IVYSAUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VENUSAUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CHARMANDER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CHARMELEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CHARIZARD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SQUIRTLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WARTORTLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BLASTOISE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CATERPIE] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), - - [SPECIES_METAPOD] = TUTOR_LEARNSET(0), - - [SPECIES_BUTTERFREE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_WEEDLE] = TUTOR_LEARNSET(0), - - [SPECIES_KAKUNA] = TUTOR_LEARNSET(0), - - [SPECIES_BEEDRILL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PIDGEY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PIDGEOTTO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PIDGEOT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RATTATA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RATICATE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SPEAROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_FEAROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_EKANS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ARBOK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PIKACHU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RAICHU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SANDSHREW] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SANDSLASH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_NIDORAN_F] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NIDORINA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NIDOQUEEN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_NIDORAN_M] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NIDORINO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NIDOKING] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CLEFAIRY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CLEFABLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_VULPIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_NINETALES] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_JIGGLYPUFF] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_WIGGLYTUFF] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ZUBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GOLBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ODDISH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GLOOM] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VILEPLUME] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PARAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PARASECT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VENONAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_VENOMOTH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_DIGLETT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DUGTRIO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MEOWTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PERSIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PSYDUCK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GOLDUCK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MANKEY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PRIMEAPE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GROWLITHE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ARCANINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_POLIWAG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_POLIWHIRL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_POLIWRATH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ABRA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KADABRA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ALAKAZAM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MACHOP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MACHOKE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MACHAMP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_BELLSPROUT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WEEPINBELL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VICTREEBEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TENTACOOL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TENTACRUEL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GEODUDE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GRAVELER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GOLEM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PONYTA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RAPIDASH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SLOWPOKE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SLOWBRO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGNEMITE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGNETON] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FARFETCHD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DODUO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DODRIO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SEEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DEWGONG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GRIMER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MUK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SHELLDER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CLOYSTER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GASTLY] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HAUNTER] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GENGAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ONIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DROWZEE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HYPNO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KRABBY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_KINGLER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VOLTORB] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ELECTRODE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_EXEGGCUTE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_EXEGGUTOR] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CUBONE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MAROWAK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HITMONLEE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_HITMONCHAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_LICKITUNG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_KOFFING] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WEEZING] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_RHYHORN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_RHYDON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CHANSEY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TANGELA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_KANGASKHAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HORSEA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SEADRA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GOLDEEN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SEAKING] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_STARYU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_STARMIE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MR_MIME] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SCYTHER] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_JYNX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ELECTABUZZ] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGMAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PINSIR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TAUROS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MAGIKARP] = TUTOR_LEARNSET(0), - - [SPECIES_GYARADOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LAPRAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DITTO] = TUTOR_LEARNSET(0), - - [SPECIES_EEVEE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_VAPOREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_JOLTEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FLAREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PORYGON] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_OMANYTE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_OMASTAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KABUTO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KABUTOPS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_AERODACTYL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SNORLAX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ARTICUNO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ZAPDOS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MOLTRES] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_DRATINI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRAGONAIR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRAGONITE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MEWTWO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MEW] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CHIKORITA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_BAYLEEF] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MEGANIUM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CYNDAQUIL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_QUILAVA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_TYPHLOSION] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TOTODILE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CROCONAW] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FERALIGATR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SENTRET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FURRET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HOOTHOOT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_NOCTOWL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_LEDYBA] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_LEDIAN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SPINARAK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ARIADOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CROBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CHINCHOU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LANTURN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PICHU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CLEFFA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_IGGLYBUFF] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TOGEPI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TOGETIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_NATU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_XATU] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAREEP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FLAAFFY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_AMPHAROS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BELLOSSOM] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MARILL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_AZUMARILL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SUDOWOODO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_POLITOED] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HOPPIP] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SKIPLOOM] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_JUMPLUFF] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_AIPOM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SUNKERN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SUNFLORA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_YANMA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_WOOPER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_QUAGSIRE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ESPEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_UMBREON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MURKROW] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SLOWKING] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MISDREAVUS] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_UNOWN] = TUTOR_LEARNSET(0), - - [SPECIES_WOBBUFFET] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER)), - - [SPECIES_GIRAFARIG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PINECO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_FORRETRESS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DUNSPARCE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GLIGAR] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_STEELIX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SNUBBULL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GRANBULL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_QWILFISH] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SCIZOR] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SHUCKLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HERACROSS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SNEASEL] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TEDDIURSA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_URSARING] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SLUGMA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MAGCARGO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SWINUB] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PILOSWINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CORSOLA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_REMORAID] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_OCTILLERY] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DELIBIRD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MANTINE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SKARMORY] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_HOUNDOUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_HOUNDOOM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_KINGDRA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PHANPY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DONPHAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PORYGON2] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_STANTLER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SMEARGLE] = TUTOR_LEARNSET(TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK)), - - [SPECIES_TYROGUE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_HITMONTOP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SMOOCHUM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ELEKID] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGBY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MILTANK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BLISSEY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SOFT_BOILED) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RAIKOU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ENTEI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SUICUNE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_LARVITAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PUPITAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TYRANITAR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LUGIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HO_OH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CELEBI] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TREECKO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GROVYLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SCEPTILE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TORCHIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_COMBUSKEN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_BLAZIKEN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MUDKIP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MARSHTOMP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SWAMPERT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_POOCHYENA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MIGHTYENA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ZIGZAGOON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LINOONE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_WURMPLE] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), - - [SPECIES_SILCOON] = TUTOR_LEARNSET(0), - - [SPECIES_BEAUTIFLY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CASCOON] = TUTOR_LEARNSET(0), - - [SPECIES_DUSTOX] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_LOTAD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_LOMBRE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_LUDICOLO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SEEDOT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_NUZLEAF] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SHIFTRY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TAILLOW] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SWELLOW] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_WINGULL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PELIPPER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RALTS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KIRLIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GARDEVOIR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SURSKIT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MASQUERAIN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SHROOMISH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_BRELOOM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SLAKOTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_VIGOROTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SLAKING] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_NINCADA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NINJASK] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SHEDINJA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WHISMUR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_LOUDRED] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_EXPLOUD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MAKUHITA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HARIYAMA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_AZURILL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_NOSEPASS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SKITTY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DELCATTY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SABLEYE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MAWILE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ARON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LAIRON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AGGRON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MEDITITE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MEDICHAM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ELECTRIKE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MANECTRIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PLUSLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MINUN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_VOLBEAT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ILLUMISE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROSELIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GULPIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SWALOT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CARVANHA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SHARPEDO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_WAILMER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WAILORD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NUMEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CAMERUPT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TORKOAL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SPOINK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GRUMPIG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SPINDA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TRAPINCH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VIBRAVA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_FLYGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CACNEA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CACTURNE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SWABLU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ALTARIA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ZANGOOSE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SEVIPER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_LUNATONE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SOLROCK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BARBOACH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WHISCASH] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CORPHISH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CRAWDAUNT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_BALTOY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CLAYDOL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LILEEP] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CRADILY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ANORITH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ARMALDO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FEEBAS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MILOTIC] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CASTFORM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KECLEON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SHUPPET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BANETTE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DUSKULL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DUSCLOPS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TROPIUS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CHIMECHO] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ABSOL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_WYNAUT] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER)), - - [SPECIES_SNORUNT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GLALIE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SPHEAL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SEALEO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WALREIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CLAMPERL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HUNTAIL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GOREBYSS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RELICANTH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LUVDISC] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BAGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SHELGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SALAMENCE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BELDUM] = TUTOR_LEARNSET(0), - - [SPECIES_METANG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_METAGROSS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_REGIROCK] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_REGICE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_REGISTEEL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LATIAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LATIOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KYOGRE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GROUDON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RAYQUAZA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_JIRACHI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DEOXYS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - -#if P_NEW_POKEMON == TRUE - [SPECIES_TURTWIG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GROTLE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TORTERRA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CHIMCHAR] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_MONFERNO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_INFERNAPE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PIPLUP] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PRINPLUP] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_EMPOLEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_STARLY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_STARAVIA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_STARAPTOR] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BIDOOF] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BIBAREL] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KRICKETOT] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SNORE)), - - [SPECIES_KRICKETUNE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SHINX] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LUXIO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LUXRAY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BUDEW] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ROSERADE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CRANIDOS] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_RAMPARDOS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SHIELDON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BASTIODON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BURMY] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), - - [SPECIES_WORMADAM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MOTHIM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_COMBEE] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_VESPIQUEN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PACHIRISU] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BUIZEL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_FLOATZEL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CHERUBI] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CHERRIM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SHELLOS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GASTRODON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AMBIPOM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRIFLOON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRIFBLIM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BUNEARY] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LOPUNNY] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MISMAGIUS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HONCHKROW] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GLAMEOW] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_PURUGLY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CHINGLING] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_STUNKY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SKUNTANK] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BRONZOR] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BRONZONG] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BONSLY] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MIME_JR] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HAPPINY] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CHATOT] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SPIRITOMB] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GIBLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GABITE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GARCHOMP] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MUNCHLAX] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_RIOLU] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_LUCARIO] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_HIPPOPOTAS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HIPPOWDON] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SKORUPI] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DRAPION] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CROAGUNK] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TOXICROAK] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CARNIVINE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FINNEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_LUMINEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MANTYKE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SNOVER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ABOMASNOW] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WEAVILE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MAGNEZONE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LICKILICKY] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_RHYPERIOR] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TANGROWTH] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ELECTIVIRE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGMORTAR] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TOGEKISS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_YANMEGA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_LEAFEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GLACEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GLISCOR] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MAMOSWINE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PORYGON_Z] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GALLADE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PROBOPASS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DUSKNOIR] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FROSLASS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROTOM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_UXIE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MESPRIT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_AZELF] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DIALGA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PALKIA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HEATRAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_REGIGIGAS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GIRATINA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CRESSELIA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PHIONE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MANAPHY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_DARKRAI] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SHAYMIN] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ARCEUS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_VICTINI] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SNIVY] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SERVINE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SERPERIOR] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TEPIG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PIGNITE] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_EMBOAR] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_OSHAWOTT] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DEWOTT] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SAMUROTT] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PATRAT] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WATCHOG] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LILLIPUP] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HERDIER] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_STOUTLAND] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PURRLOIN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LIEPARD] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PANSAGE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SIMISAGE] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PANSEAR] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SIMISEAR] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PANPOUR] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SIMIPOUR] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MUNNA] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MUSHARNA] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PIDOVE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TRANQUILL] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_UNFEZANT] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BLITZLE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ZEBSTRIKA] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROGGENROLA] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BOLDORE] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GIGALITH] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WOOBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SWOOBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRILBUR] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_EXCADRILL] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_AUDINO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TIMBURR] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GURDURR] = TUTOR_LEARNSET(TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CONKELDURR] = TUTOR_LEARNSET(TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TYMPOLE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PALPITOAD] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SEISMITOAD] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_THROH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SAWK] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SEWADDLE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SWADLOON] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LEAVANNY] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VENIPEDE] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WHIRLIPEDE] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SCOLIPEDE] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_COTTONEE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WHIMSICOTT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PETILIL] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LILLIGANT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_BASCULIN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SANDILE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KROKOROK] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KROOKODILE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DARUMAKA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DARMANITAN] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MARACTUS] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DWEBBLE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CRUSTLE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SCRAGGY] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SCRAFTY] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_SIGILYPH] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_YAMASK] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_COFAGRIGUS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TIRTOUGA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CARRACOSTA] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ARCHEN] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ARCHEOPS] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TRUBBISH] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GARBODOR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ZORUA] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ZOROARK] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MINCCINO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CINCCINO] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GOTHITA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GOTHORITA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GOTHITELLE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SOLOSIS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DUOSION] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_REUNICLUS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DUCKLETT] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SWANNA] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VANILLITE] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VANILLISH] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VANILLUXE] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DEERLING] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SAWSBUCK] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_EMOLGA] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KARRABLAST] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ESCAVALIER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FOONGUS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AMOONGUSS] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FRILLISH] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_JELLICENT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ALOMOMOLA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_JOLTIK] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GALVANTULA] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FERROSEED] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FERROTHORN] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KLINK] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KLANG] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KLINKLANG] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TYNAMO] = TUTOR_LEARNSET(TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_EELEKTRIK] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_EELEKTROSS] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ELGYEM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BEHEEYEM] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LITWICK] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LAMPENT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CHANDELURE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AXEW] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FRAXURE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_HAXORUS] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CUBCHOO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BEARTIC] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CRYOGONAL] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SHELMET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ACCELGOR] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_STUNFISK] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MIENFOO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MIENSHAO] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DRUDDIGON] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GOLETT] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GOLURK] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PAWNIARD] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BISHARP] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BOUFFALANT] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_RUFFLET] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BRAVIARY] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VULLABY] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MANDIBUZZ] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HEATMOR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_DURANT] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DEINO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ZWEILOUS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HYDREIGON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LARVESTA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_VOLCARONA] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_COBALION] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TERRAKION] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_VIRIZION] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TORNADUS] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_THUNDURUS] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RESHIRAM] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ZEKROM] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LANDORUS] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_KYUREM] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KELDEO] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MELOETTA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GENESECT] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CHESPIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_QUILLADIN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CHESNAUGHT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FENNEKIN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BRAIXEN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_DELPHOX] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FROAKIE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FROGADIER] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GRENINJA] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BUNNELBY] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DIGGERSBY] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FLETCHLING] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_FLETCHINDER] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TALONFLAME] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SCATTERBUG] = TUTOR_LEARNSET(0), - - [SPECIES_SPEWPA] = TUTOR_LEARNSET(0), - - [SPECIES_VIVILLON] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LITLEO] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PYROAR] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FLABEBE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FLOETTE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FLORGES] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SKIDDO] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GOGOAT] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PANCHAM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PANGORO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_FURFROU] = TUTOR_LEARNSET(TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ESPURR] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MEOWSTIC] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HONEDGE] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DOUBLADE] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_AEGISLASH] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SPRITZEE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AROMATISSE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SWIRLIX] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SLURPUFF] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_INKAY] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MALAMAR] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BINACLE] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_BARBARACLE] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SKRELP] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DRAGALGE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_CLAUNCHER] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CLAWITZER] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_HELIOPTILE] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HELIOLISK] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TYRUNT] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TYRANTRUM] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AMAURA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_AURORUS] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SYLVEON] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_HAWLUCHA] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_DEDENNE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CARBINK] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GOOMY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SLIGGOO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GOODRA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_KLEFKI] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PHANTUMP] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TREVENANT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PUMPKABOO] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GOURGEIST] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BERGMITE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_AVALUGG] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NOIBAT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_NOIVERN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_XERNEAS] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_YVELTAL] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ZYGARDE] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DIANCIE] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_HOOPA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_VOLCANION] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ROWLET] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DARTRIX] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DECIDUEYE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_LITTEN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TORRACAT] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_INCINEROAR] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_POPPLIO] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_BRIONNE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PRIMARINA] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PIKIPEK] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TRUMBEAK] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TOUCANNON] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_YUNGOOS] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GUMSHOOS] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_GRUBBIN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CHARJABUG] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_VIKAVOLT] = TUTOR_LEARNSET(TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CRABRAWLER] = TUTOR_LEARNSET(TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_CRABOMINABLE] = TUTOR_LEARNSET(TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ORICORIO] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CUTIEFLY] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_RIBOMBEE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ROCKRUFF] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_LYCANROC] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WISHIWASHI] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MAREANIE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TOXAPEX] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MUDBRAY] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MUDSDALE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_DEWPIDER] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ARAQUANID] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_FOMANTIS] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_LURANTIS] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MORELULL] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SHIINOTIC] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SALANDIT] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_SALAZZLE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_STUFFUL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_BEWEAR] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_BOUNSWEET] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_STEENEE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TSAREENA] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_COMFEY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ORANGURU] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PASSIMIAN] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WIMPOD] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_GOLISOPOD] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SANDYGAST] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PALOSSAND] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_PYUKUMUKU] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TYPE_NULL] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SILVALLY] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MINIOR] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_KOMALA] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TURTONATOR] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TOGEDEMARU] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MIMIKYU] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BRUXISH] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_DRAMPA] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DHELMISE] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_JANGMO_O] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_HAKAMO_O] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_KOMMO_O] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_TAPU_KOKO] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TAPU_LELE] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_TAPU_BULU] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_TAPU_FINI] = TUTOR_LEARNSET(TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_COSMOG] = TUTOR_LEARNSET(0), - - [SPECIES_COSMOEM] = TUTOR_LEARNSET(0), - - [SPECIES_SOLGALEO] = TUTOR_LEARNSET(TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LUNALA] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_NIHILEGO] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BUZZWOLE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_PHEROMOSA] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_XURKITREE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CELESTEELA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KARTANA] = TUTOR_LEARNSET(TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_GUZZLORD] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_NECROZMA] = TUTOR_LEARNSET(TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MAGEARNA] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MARSHADOW] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_POIPOLE] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_NAGANADEL] = TUTOR_LEARNSET(TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_STAKATAKA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_BLACEPHALON] = TUTOR_LEARNSET(TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ZERAORA] = TUTOR_LEARNSET(TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GROOKEY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_THWACKEY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_RILLABOOM] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SCORBUNNY] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RABOOT] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CINDERACE] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SOBBLE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_DRIZZILE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_INTELEON] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SKWOVET] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_GREEDENT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ROOKIDEE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CORVISQUIRE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CORVIKNIGHT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BLIPBUG] = TUTOR_LEARNSET(0), - - [SPECIES_DOTTLER] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ORBEETLE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_NICKIT] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_THIEVUL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_GOSSIFLEUR] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ELDEGOSS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_WOOLOO] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DUBWOOL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CHEWTLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_DREDNAW] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_YAMPER] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BOLTUND] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROLYCOLY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_CARKOL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_COALOSSAL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_APPLIN] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ROLLOUT)), - - [SPECIES_FLAPPLE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_APPLETUN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_SILICOBRA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_SANDACONDA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_CRAMORANT] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ARROKUDA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_BARRASKEWDA] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_TOXEL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_TOXTRICITY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SIZZLIPEDE] = TUTOR_LEARNSET(TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_CENTISKORCH] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_CLOBBOPUS] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SEISMIC_TOSS) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_GRAPPLOCT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_SINISTEA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_POLTEAGEIST] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_HATENNA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HATTREM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_HATTERENE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_IMPIDIMP] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_MORGREM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_GRIMMSNARL] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_OBSTAGOON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_PERRSERKER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CURSOLA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_SIRFETCHD] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_MR_RIME] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_RUNERIGUS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_MILCERY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_FALINKS] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PINCURCHIN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SNOM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_FROSMOTH] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_STONJOURNER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_EISCUE] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_INDEEDEE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MORPEKO] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CUFANT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DEFENSE_CURL) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_COPPERAJAH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_DRACOZOLT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ARCTOZOLT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRACOVISH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ARCTOVISH] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_DURALUDON] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DREEPY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRAKLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DRAGAPULT] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ZACIAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_ZAMAZENTA] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ETERNATUS] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_KUBFU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_URSHIFU] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ZARUDE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_REGIELEKI] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_REGIDRAGO] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_GLASTRIER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SPECTRIER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CALYREX] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MEOWTH_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_PONYTA_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_RAPIDASH_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_SLOWPOKE_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SLOWBRO_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_FARFETCHD_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FURY_CUTTER) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_WEEZING_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_EXPLOSION) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_MR_MIME_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_MIMIC) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ARTICUNO_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_ZAPDOS_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_MOLTRES_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_SLOWKING_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_CORSOLA_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ZIGZAGOON_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_LINOONE_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_DARUMAKA_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_DARMANITAN_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_YAMASK_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_STUNFISK_GALARIAN] = TUTOR_LEARNSET(TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_BURMY_SANDY_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), - - [SPECIES_BURMY_TRASH_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_SNORE)), - - [SPECIES_WORMADAM_SANDY_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_ROLLOUT) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_WORMADAM_TRASH_CLOAK] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_ROTOM_HEAT] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROTOM_WASH] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROTOM_FROST] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROTOM_FAN] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_ROTOM_MOW] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MUD_SLAP) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_KYUREM_WHITE] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_KYUREM_BLACK] = TUTOR_LEARNSET(TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER)), - - [SPECIES_MEOWSTIC_FEMALE] = TUTOR_LEARNSET(TUTOR(MOVE_DREAM_EATER) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_TOXTRICITY_LOW_KEY] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH) - | TUTOR(MOVE_THUNDER_WAVE)), - - [SPECIES_SINISTEA_ANTIQUE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_POLTEAGEIST_ANTIQUE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_RUBY_CREAM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_MATCHA_CREAM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_MINT_CREAM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_LEMON_CREAM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_SALTED_CREAM] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_RUBY_SWIRL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE)), - - [SPECIES_INDEEDEE_FEMALE] = TUTOR_LEARNSET(TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_PSYCH_UP) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_COUNTER) - | TUTOR(MOVE_DYNAMIC_PUNCH) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_FIRE_PUNCH) - | TUTOR(MOVE_ICE_PUNCH) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_THUNDER_PUNCH)), - - [SPECIES_ZARUDE_DADA] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_MEGA_KICK) - | TUTOR(MOVE_MEGA_PUNCH) - | TUTOR(MOVE_ROCK_SLIDE) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWAGGER) - | TUTOR(MOVE_SWIFT)), - - [SPECIES_CALYREX_ICE_RIDER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_ICY_WIND) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT) - | TUTOR(MOVE_SWORDS_DANCE)), - - [SPECIES_CALYREX_SHADOW_RIDER] = TUTOR_LEARNSET(TUTOR(MOVE_BODY_SLAM) - | TUTOR(MOVE_DOUBLE_EDGE) - | TUTOR(MOVE_ENDURE) - | TUTOR(MOVE_METRONOME) - | TUTOR(MOVE_SLEEP_TALK) - | TUTOR(MOVE_SNORE) - | TUTOR(MOVE_SUBSTITUTE) - | TUTOR(MOVE_SWIFT)), -#endif -}; diff --git a/src/daycare.c b/src/daycare.c index 1f95706e75..ffc72c41f2 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -696,7 +696,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j); - if (sHatchedEggFatherMoves[i] == moveId && CanMonLearnTMHM(egg, moveId)) + if (sHatchedEggFatherMoves[i] == moveId && CanMonLearnTaughtMove(egg, moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); diff --git a/src/field_specials.c b/src/field_specials.c index 7c226e7a39..3692a592c2 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -3130,7 +3130,7 @@ void GetBattleFrontierTutorMoveIndex(void) i = 0; do { - if (gTutorMoves[i] == sBattleFrontier_TutorMoves2[moveIndex]) + if (i == sBattleFrontier_TutorMoves2[moveIndex]) { gSpecialVar_0x8005 = i; break; @@ -3143,7 +3143,7 @@ void GetBattleFrontierTutorMoveIndex(void) i = 0; do { - if (gTutorMoves[i] == sBattleFrontier_TutorMoves1[moveIndex]) + if (i == sBattleFrontier_TutorMoves1[moveIndex]) { gSpecialVar_0x8005 = i; break; diff --git a/src/party_menu.c b/src/party_menu.c index 9f8fe00268..0025e968fc 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -265,8 +265,8 @@ static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct PartyMenuBox static void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct PartyMenuBox *); static void DisplayPartyPokemonDescriptionText(u8, struct PartyMenuBox *, u8); static bool8 IsMonAllowedInMinigame(u8); -static void DisplayPartyPokemonDataToTeachMove(u8, u16, u8); -static u8 CanMonLearnTMTutor(struct Pokemon *, u16, u8); +static void DisplayPartyPokemonDataToTeachMove(u8, u16); +static u8 CanMonLearnMove(struct Pokemon *, u16); static void DisplayPartyPokemonBarDetail(u8, const u8 *, u8, const u8 *); static void DisplayPartyPokemonLevel(u8, struct PartyMenuBox *); static void DisplayPartyPokemonGender(u8, u16, u8 *, struct PartyMenuBox *); @@ -326,8 +326,6 @@ static bool16 IsMonAllowedInPokemonJump(struct Pokemon *); static bool16 IsMonAllowedInDodrioBerryPicking(struct Pokemon *); static void Task_CancelParticipationYesNo(u8); static void Task_HandleCancelParticipationYesNoInput(u8); -static bool8 CanLearnTutorMove(u16, u8); -static u16 GetTutorMove(u8); static bool8 ShouldUseChooseMonText(void); static void SetPartyMonFieldSelectionActions(struct Pokemon *, u8); static u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *); @@ -479,7 +477,6 @@ static bool8 SetUpFieldMove_Dive(void); void TryItemHoldFormChange(struct Pokemon *mon); // static const data -#include "data/pokemon/tutor_learnsets.h" #include "data/party_menu.h" // code @@ -973,7 +970,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) if (gPartyMenu.action == PARTY_ACTION_MOVE_TUTOR) { gSpecialVar_Result = FALSE; - DisplayPartyPokemonDataToTeachMove(slot, 0, gSpecialVar_0x8005); + DisplayPartyPokemonDataToTeachMove(slot, gSpecialVar_0x8005); } else { @@ -985,7 +982,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) default: return FALSE; case 1: // TM/HM - DisplayPartyPokemonDataToTeachMove(slot, item, 0); + DisplayPartyPokemonDataToTeachMove(slot, ItemIdToBattleMoveId(item)); break; case 2: // Evolution stone if (!GetMonData(currentPokemon, MON_DATA_IS_EGG) && GetEvolutionTargetSpecies(currentPokemon, EVO_MODE_ITEM_CHECK, item, NULL) != SPECIES_NONE) @@ -997,9 +994,9 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) return TRUE; } -static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor) +static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 move) { - switch (CanMonLearnTMTutor(&gPlayerParty[slot], item, tutor)) + switch (CanMonLearnMove(&gPlayerParty[slot], move)) { case CANNOT_LEARN_MOVE: case CANNOT_LEARN_MOVE_IS_EGG: @@ -2029,47 +2026,18 @@ static void Task_HandleCancelParticipationYesNoInput(u8 taskId) } } -static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor) +static u8 CanMonLearnMove(struct Pokemon *mon, u16 move) { - u16 move; - if (GetMonData(mon, MON_DATA_IS_EGG)) return CANNOT_LEARN_MOVE_IS_EGG; - - if (item >= ITEM_TM01) - { - if (!CanMonLearnTMHM(mon, ItemIdToBattleMoveId(item))) - return CANNOT_LEARN_MOVE; - else - move = ItemIdToBattleMoveId(item); - } - else - { - if (!CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor)) - return CANNOT_LEARN_MOVE; - else - move = GetTutorMove(tutor); - } - - if (MonKnowsMove(mon, move) == TRUE) + else if (!CanMonLearnTaughtMove(mon, move)) + return CANNOT_LEARN_MOVE; + else if (MonKnowsMove(mon, move) == TRUE) return ALREADY_KNOWS_MOVE; else return CAN_LEARN_MOVE; } -static u16 GetTutorMove(u8 tutor) -{ - return gTutorMoves[tutor]; -} - -static bool8 CanLearnTutorMove(u16 species, u8 tutor) -{ - if (sTutorLearnsets[species] & (1 << tutor)) - return TRUE; - else - return FALSE; -} - static void InitPartyMenuWindows(u8 layout) { u8 i; @@ -4933,19 +4901,18 @@ static void DisplayLearnMoveMessageAndClose(u8 taskId, const u8 *str) void ItemUseCB_TMHM(u8 taskId, TaskFunc task) { struct Pokemon *mon; - s16 *move; - u16 item; + u16 item = gSpecialVar_ItemId; + u16 move = ItemIdToBattleMoveId(item); + + gPartyMenu.data1 = move; PlaySE(SE_SELECT); mon = &gPlayerParty[gPartyMenu.slotId]; - move = &gPartyMenu.data1; - item = gSpecialVar_ItemId; - GetMonNickname(mon, gStringVar1); - move[0] = ItemIdToBattleMoveId(item); - StringCopy(gStringVar2, gMoveNames[move[0]]); - move[1] = 0; - switch (CanMonLearnTMTutor(mon, item, 0)) + GetMonNickname(mon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[move]); + + switch (CanMonLearnMove(mon, move)) { case CANNOT_LEARN_MOVE: DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); @@ -4955,7 +4922,7 @@ void ItemUseCB_TMHM(u8 taskId, TaskFunc task) return; } - if (GiveMoveToMon(mon, move[0]) != MON_HAS_MAX_MOVES) + if (GiveMoveToMon(mon, move) != MON_HAS_MAX_MOVES) { gTasks[taskId].func = Task_LearnedMove; } @@ -5676,10 +5643,10 @@ static void TryTutorSelectedMon(u8 taskId) mon = &gPlayerParty[gPartyMenu.slotId]; move = &gPartyMenu.data1; GetMonNickname(mon, gStringVar1); - gPartyMenu.data1 = GetTutorMove(gSpecialVar_0x8005); + gPartyMenu.data1 = gSpecialVar_0x8005; StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); move[1] = 2; - switch (CanMonLearnTMTutor(mon, 0, gSpecialVar_0x8005)) + switch (CanMonLearnMove(mon, gPartyMenu.data1)) { case CANNOT_LEARN_MOVE: DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); diff --git a/src/pokemon.c b/src/pokemon.c index d165635d7c..723a3977e3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1894,14 +1894,14 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = #include "data/pokemon/experience_tables.h" #include "data/pokemon/base_stats.h" #include "data/pokemon/level_up_learnsets.h" -#include "data/pokemon/tmhm_learnsets.h" +#include "data/pokemon/teach_learnsets.h" #if P_NEW_POKEMON == TRUE #include "data/pokemon/evolution.h" #else #include "data/pokemon/evolution_old.h" #endif #include "data/pokemon/level_up_learnset_pointers.h" -#include "data/pokemon/tmhm_learnset_pointers.h" +#include "data/pokemon/teach_learnset_pointers.h" #include "data/pokemon/form_species_tables.h" #include "data/pokemon/form_species_table_pointers.h" #include "data/pokemon/form_change_tables.h" @@ -7244,7 +7244,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) } } -u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move) +u32 CanMonLearnTaughtMove(struct Pokemon *mon, u16 move) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); @@ -7255,9 +7255,9 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move) else { u32 i; - for (i = 0; gTMHMLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + for (i = 0; gTeachLearnsets[species][i] != MOVE_UNAVAILABLE; i++) { - if (gTMHMLearnsets[species][i] == move) { + if (gTeachLearnsets[species][i] == move) { return TRUE; } } @@ -7265,7 +7265,7 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u16 move) } } -u32 CanSpeciesLearnTMHM(u16 species, u16 move) +u32 CanSpeciesLearnTaughtMove(u16 species, u16 move) { if (species == SPECIES_EGG) { @@ -7274,9 +7274,9 @@ u32 CanSpeciesLearnTMHM(u16 species, u16 move) else { u32 i; - for (i = 0; gTMHMLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + for (i = 0; gTeachLearnsets[species][i] != MOVE_UNAVAILABLE; i++) { - if (gTMHMLearnsets[species][i] == move) { + if (gTeachLearnsets[species][i] == move) { return TRUE; } } From 6fb4da68f398905917e5579f955a74cbd609e741 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 22:00:24 -0400 Subject: [PATCH 123/271] Corrected Oldale Town Sign labels --- data/maps/OldaleTown/map.json | 2 +- data/maps/OldaleTown/scripts.inc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/maps/OldaleTown/map.json b/data/maps/OldaleTown/map.json index ee6101ff6c..cc4bd008c3 100644 --- a/data/maps/OldaleTown/map.json +++ b/data/maps/OldaleTown/map.json @@ -158,7 +158,7 @@ "y": 9, "elevation": 0, "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", - "script": "OldaleTown_EventScript_CitySign" + "script": "OldaleTown_EventScript_TownSign" }, { "type": "sign", diff --git a/data/maps/OldaleTown/scripts.inc b/data/maps/OldaleTown/scripts.inc index 3f43386cb3..b2c25a6dfb 100644 --- a/data/maps/OldaleTown/scripts.inc +++ b/data/maps/OldaleTown/scripts.inc @@ -29,8 +29,8 @@ OldaleTown_EventScript_MoveMartEmployee:: setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN return -OldaleTown_EventScript_CitySign:: - msgbox OldaleTown_Text_CitySign, MSGBOX_SIGN +OldaleTown_EventScript_TownSign:: + msgbox OldaleTown_Text_TownSign, MSGBOX_SIGN end OldaleTown_EventScript_Girl:: @@ -395,7 +395,7 @@ OldaleTown_Text_BrendanLetsGoBack: .string "LAB now.\l" .string "{PLAYER}, you should hustle back, too.$" -OldaleTown_Text_CitySign: +OldaleTown_Text_TownSign: .string "OLDALE TOWN\n" .string "“Where things start off scarce.”$" From 4c999b40b1cf64da02ae2c1377243e3d28f07c33 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 22:35:22 -0400 Subject: [PATCH 124/271] Enable BUGFIX by default --- include/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/config.h b/include/config.h index 3f67d043c7..d4a71c0766 100644 --- a/include/config.h +++ b/include/config.h @@ -26,7 +26,7 @@ #endif // Uncomment to fix some identified minor bugs -//#define BUGFIX +#define BUGFIX // Various undefined behavior bugs may or may not prevent compilation with // newer compilers. So always fix them when using a modern compiler. From 6b414d9555d443e6de28805ab2d64bfb5f3c94ec Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Thu, 25 Aug 2022 22:40:19 -0400 Subject: [PATCH 125/271] Apply suggestions from code review Co-authored-by: LOuroboros --- include/constants/items.h | 6 +++--- src/data/items.h | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/constants/items.h b/include/constants/items.h index b6dbc7329b..1448bf5914 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -974,9 +974,9 @@ #define ACRO_BIKE 1 // Item parameters for EXP Candies -#define EXP_100 1 -#define EXP_800 2 -#define EXP_3000 3 +#define EXP_100 1 +#define EXP_800 2 +#define EXP_3000 3 #define EXP_10000 4 #define EXP_30000 5 diff --git a/src/data/items.h b/src/data/items.h index f4be3c6dcb..ccd6aaee28 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1359,7 +1359,6 @@ const struct Item gItems[] = .name = _("Rare Candy"), .itemId = ITEM_RARE_CANDY, .price = 10000, - .holdEffectParam = 0, .description = sRareCandyDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, From 57d583b783a2e8cc77ccc927b2a39f43060613dd Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Thu, 25 Aug 2022 22:49:23 -0400 Subject: [PATCH 126/271] Fixed call to sExpCandyExperienceTable --- src/pokemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokemon.c b/src/pokemon.c index 956a870686..35522c9ab1 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4894,7 +4894,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov else if (param < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); - dataUnsigned = sExpCandyExperienceTable[param] + GetMonData(mon, MON_DATA_EXP, NULL); + dataUnsigned = sExpCandyExperienceTable[param - 1] + GetMonData(mon, MON_DATA_EXP, NULL); if (dataUnsigned > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) dataUnsigned = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; } From 77e2a2da3215d3651a398f79cef0ad658b52255e Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 25 Aug 2022 23:19:46 -0400 Subject: [PATCH 127/271] Fixed Net Ball Gen 7+ multiplier --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 5ef95d1ac5..cdf0e30ea7 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13675,7 +13675,7 @@ static void Cmd_handleballthrow(void) case ITEM_NET_BALL: if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) #if B_NET_BALL_MODIFIER >= GEN_7 - ballMultiplier = 50; + ballMultiplier = 35; #else ballMultiplier = 30; #endif From 6331931ba3e91cbed4da187255e2a3242093b28e Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 26 Aug 2022 15:01:51 +0200 Subject: [PATCH 128/271] Fix Magic Coat targets --- data/battle_scripts_1.s | 1 + include/battle.h | 5 +- src/battle_script_commands.c | 177 ++++++++++++++++++++--------------- 3 files changed, 104 insertions(+), 79 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index d3ff57492e..18de3cff34 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -7421,6 +7421,7 @@ BattleScript_MagicCoatBounce:: printfromtable gMagicCoatBounceStringIds waitmessage B_WAIT_TIME_LONG orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_ALLOW_NO_PP + bicword gHitMarker, HITMARKER_NO_ATTACKSTRING setmagiccoattarget BS_ATTACKER return diff --git a/include/battle.h b/include/battle.h index 931b13b2f4..44725bcdb7 100644 --- a/include/battle.h +++ b/include/battle.h @@ -619,6 +619,9 @@ struct BattleStruct u8 stickyWebUser; u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change u8 skyDropTargets[MAX_BATTLERS_COUNT]; // For Sky Drop, to account for if multiple Pokemon use Sky Drop in a double battle. + // When using a move which hits multiple opponents which is then bounced by a target, we need to make sure, the move hits both opponents, the one with bounce, and the one without. + u8 attackerBeforeBounce:2; + u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit. }; #define F_DYNAMIC_TYPE_1 (1 << 6) @@ -669,7 +672,7 @@ struct BattleStruct #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + ((stage) << 3) + (goesDown << 7)) #define SET_STATCHANGER2(dst, statId, stage, goesDown)(dst = (statId) + ((stage) << 3) + (goesDown << 7)) -// NOTE: The members of this struct have hard-coded offsets +// NOTE: The members of this struct have hard-coded offsets // in include/constants/battle_script_commands.h struct BattleScripting { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index cdf0e30ea7..9b7961461e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1422,7 +1422,7 @@ static void Cmd_attackcanceler(void) return; if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0)) return; - if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE + if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & (HITMARKER_ALLOW_NO_PP | HITMARKER_NO_ATTACKSTRING | HITMARKER_NO_PPDEDUCT)) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) { @@ -1622,7 +1622,7 @@ static bool32 AccuracyCalcHelper(u16 move) RecordAbilityBattle(gBattlerTarget, ABILITY_NO_GUARD); return TRUE; } - + if (gBattleStruct->zmove.active && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)) { JumpIfMoveFailed(7, move); @@ -1765,7 +1765,7 @@ static void Cmd_accuracycheck(void) gMoveResultFlags |= MOVE_RESULT_MISSED; if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_BLUNDER_POLICY) gBattleStruct->blunderPolicy = TRUE; // Only activates from missing through acc/evasion checks - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (moveTarget == MOVE_TARGET_BOTH || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_ATK; @@ -2596,14 +2596,14 @@ static void CheckSetUnburden(u8 battlerId) // battlerStealer steals the item of battlerItem void StealTargetItem(u8 battlerStealer, u8 battlerItem) -{ +{ gLastUsedItem = gBattleMons[battlerItem].item; gBattleMons[battlerItem].item = 0; - + RecordItemEffectBattle(battlerItem, 0); RecordItemEffectBattle(battlerStealer, ItemId_GetHoldEffect(gLastUsedItem)); gBattleMons[battlerStealer].item = gLastUsedItem; - + CheckSetUnburden(battlerItem); gBattleResources->flags->flags[battlerStealer] &= ~RESOURCE_FLAG_UNBURDEN; @@ -2614,9 +2614,9 @@ void StealTargetItem(u8 battlerStealer, u8 battlerItem) gActiveBattler = battlerItem; BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[battlerItem].item); // remove target item MarkBattlerForControllerExec(battlerItem); - + gBattleStruct->choicedMove[battlerItem] = 0; - + TrySaveExchangedItem(battlerItem, gLastUsedItem); } @@ -2640,7 +2640,7 @@ void SetMoveEffect(bool32 primary, u32 certain) bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR); u32 flags = 0; u16 battlerAbility; - + switch (gBattleScripting.moveEffect) // Set move effects which happen later on { case MOVE_EFFECT_KNOCK_OFF: @@ -2749,7 +2749,7 @@ void SetMoveEffect(bool32 primary, u32 certain) case STATUS1_BURN: if (gCurrentMove == MOVE_BURNING_JEALOUSY && !gProtectStructs[gEffectBattler].statRaised) break; - + if ((battlerAbility == ABILITY_WATER_VEIL || battlerAbility == ABILITY_WATER_BUBBLE) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) { @@ -2944,7 +2944,7 @@ void SetMoveEffect(bool32 primary, u32 certain) else { gBattleMons[gEffectBattler].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); // 2-5 turns - + // If the confusion is activating due to being released from Sky Drop, go to "confused due to fatigue" script. // Otherwise, do normal confusion script. if(gCurrentMove == MOVE_SKY_DROP) @@ -2956,7 +2956,7 @@ void SetMoveEffect(bool32 primary, u32 certain) else { BattleScriptPush(gBattlescriptCurrInstr + 1); - gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; + gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleScripting.moveEffect]; } } break; @@ -3091,7 +3091,7 @@ void SetMoveEffect(bool32 primary, u32 certain) flags = affectsUser; if (mirrorArmorReflected && !affectsUser) flags |= STAT_CHANGE_ALLOW_PTR; - + if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE, gBattleScripting.moveEffect - MOVE_EFFECT_ATK_MINUS_1 + 1, flags | STAT_CHANGE_UPDATE_MOVE_EFFECT, gBattlescriptCurrInstr + 1)) @@ -3482,14 +3482,14 @@ void SetMoveEffect(bool32 primary, u32 certain) gBattleMons[gEffectBattler].item = 0; CheckSetUnburden(gEffectBattler); gActiveBattler = gEffectBattler; - + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item); MarkBattlerForControllerExec(gActiveBattler); - + // attacker temporarily gains their item gBattleStruct->changedItems[gBattlerAttacker] = gBattleMons[gBattlerAttacker].item; gBattleMons[gBattlerAttacker].item = gLastUsedItem; - + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite; } @@ -4989,6 +4989,20 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) return FALSE; } +static u32 GetNextTarget(u32 moveTarget) +{ + u32 i; + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + if (i != gBattlerAttacker + && IsBattlerAlive(i) + && !(gBattleStruct->targetsDone[gBattlerAttacker] & gBitTable[i]) + && (GetBattlerSide(i) != GetBattlerSide(gBattlerAttacker) || moveTarget == MOVE_TARGET_FOES_AND_ALLY)) + break; + } + return i; +} + static void Cmd_moveend(void) { s32 i; @@ -5257,13 +5271,13 @@ static void Cmd_moveend(void) if (gBattleStruct->skyDropTargets[targetId] == i) break; } - + // Set gBattlerAttacker to the battler id of the target gBattlerAttacker = targetId; - + // Jump to "confused due to fatigue" script gBattlescriptCurrInstr = BattleScript_ThrashConfuses; - + // Clear skyDropTargets data gBattleStruct->skyDropTargets[i] = 0xFF; gBattleStruct->skyDropTargets[targetId] = 0xFF; @@ -5380,7 +5394,8 @@ static void Cmd_moveend(void) if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)) gProtectStructs[gBattlerAttacker].targetAffected = TRUE; - + + gBattleStruct->targetsDone[gBattlerAttacker] |= gBitTable[gBattlerTarget]; if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !gProtectStructs[gBattlerAttacker].chargingTurn @@ -5388,28 +5403,12 @@ static void Cmd_moveend(void) || moveTarget == MOVE_TARGET_FOES_AND_ALLY) && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) { - u8 battlerId; + u32 nextTarget = GetNextTarget(moveTarget); + gHitMarker |= HITMARKER_NO_PPDEDUCT; - if (moveTarget == MOVE_TARGET_FOES_AND_ALLY) + if (IsBattlerAlive(nextTarget)) { - gHitMarker |= HITMARKER_NO_PPDEDUCT; - for (battlerId = gBattlerTarget + 1; battlerId < gBattlersCount; battlerId++) - { - if (battlerId == gBattlerAttacker) - continue; - if (IsBattlerAlive(battlerId)) - break; - } - } - else - { - battlerId = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); - gHitMarker |= HITMARKER_NO_ATTACKSTRING; - } - - if (IsBattlerAlive(battlerId)) - { - gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = battlerId; // Fix for moxie spread moves + gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = nextTarget; // Fix for moxie spread moves gBattleScripting.moveendState = 0; MoveValuesCleanUp(); gBattleScripting.moveEffect = gBattleScripting.savedMoveEffect; @@ -5417,11 +5416,31 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_FlushMessageBox; return; } - else + // Check if the move used was actually a bounced move. If so, we need to go back to the original attacker and make sure, its move hits all 2 or 3 pokemon. + else if (gProtectStructs[gBattlerAttacker].usesBouncedMove) { - gHitMarker |= HITMARKER_NO_ATTACKSTRING; - gHitMarker &= ~HITMARKER_NO_PPDEDUCT; + u8 originalBounceTarget = gBattlerAttacker; + gBattlerAttacker = gBattleStruct->attackerBeforeBounce; + gBattleStruct->targetsDone[gBattlerAttacker] |= gBitTable[originalBounceTarget]; + gBattleStruct->targetsDone[originalBounceTarget] = 0; + + nextTarget = GetNextTarget(moveTarget); + if (nextTarget != MAX_BATTLERS_COUNT) + { + // We found another target for the original move user. + gBattleStruct->moveTarget[gBattlerAttacker] = gBattlerTarget = nextTarget; + gBattleScripting.moveendState = 0; + gBattleScripting.animTurn = 0; + gBattleScripting.animTargetsHit = 0; + MoveValuesCleanUp(); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + gBattlescriptCurrInstr = BattleScript_FlushMessageBox; + return; + } } + + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + gHitMarker &= ~HITMARKER_NO_PPDEDUCT; } RecordLastUsedMoveBy(gBattlerAttacker, gCurrentMove); gBattleScripting.moveendState++; @@ -5482,7 +5501,7 @@ static void Cmd_moveend(void) && GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_RED_CARD && (gSpecialStatuses[battler].physicalDmg != 0 || gSpecialStatuses[battler].specialDmg != 0) && CanBattlerSwitch(gBattlerAttacker)) - { + { gLastUsedItem = gBattleMons[battler].item; gActiveBattler = gBattleStruct->savedBattlerTarget = gBattleScripting.battler = battler; // Battler with red card gEffectBattler = gBattlerAttacker; @@ -5554,7 +5573,7 @@ static void Cmd_moveend(void) // Battle scripting is super brittle so we shall do the item exchange now (if possible) if (GetBattlerAbility(gBattlerAttacker) != ABILITY_STICKY_HOLD) StealTargetItem(gBattlerTarget, gBattlerAttacker); // Target takes attacker's item - + gEffectBattler = gBattlerAttacker; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_Pickpocket; // Includes sticky hold check to print separate string @@ -5635,6 +5654,7 @@ static void Cmd_moveend(void) CancelMultiTurnMoves(gBattlerAttacker); // Cancel it #endif + gBattleStruct->targetsDone[gBattlerAttacker] = 0; gProtectStructs[gBattlerAttacker].usesBouncedMove = FALSE; gProtectStructs[gBattlerAttacker].targetAffected = FALSE; gBattleStruct->ateBoost[gBattlerAttacker] = 0; @@ -7109,7 +7129,7 @@ static void Cmd_removeitem(void) // Popped Air Balloon cannot be restored by any means. if (GetBattlerHoldEffect(gActiveBattler, TRUE) != HOLD_EFFECT_AIR_BALLOON) gBattleStruct->usedHeldItems[gBattlerPartyIndexes[gActiveBattler]][GetBattlerSide(gActiveBattler)] = itemId; // Remember if switched out - + gBattleMons[gActiveBattler].item = ITEM_NONE; CheckSetUnburden(gActiveBattler); @@ -8037,6 +8057,7 @@ static void Cmd_various(void) CancelMultiTurnMoves(gActiveBattler); break; case VARIOUS_SET_MAGIC_COAT_TARGET: + gBattleStruct->attackerBeforeBounce = gActiveBattler; gBattlerAttacker = gBattlerTarget; side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; if (IsAffectedByFollowMe(gBattlerAttacker, side, gCurrentMove)) @@ -8103,7 +8124,7 @@ static void Cmd_various(void) break; case VARIOUS_ARENA_JUDGMENT_WINDOW: i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]); - + // BattleArena_ShowJudgmentWindow's last state was an intermediate step. // Return without advancing the current instruction so that it will be called again. if (i == ARENA_RESULT_RUNNING) @@ -8568,7 +8589,7 @@ static void Cmd_various(void) } return; case VARIOUS_TRY_SOAK: - if (gBattleMons[gBattlerTarget].type1 == gBattleMoves[gCurrentMove].type + if (gBattleMons[gBattlerTarget].type1 == gBattleMoves[gCurrentMove].type && gBattleMons[gBattlerTarget].type2 == gBattleMoves[gCurrentMove].type) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); @@ -9096,7 +9117,7 @@ static void Cmd_various(void) case VARIOUS_MAKE_INVISIBLE: if (gBattleControllerExecFlags) break; - + BtlController_EmitSpriteInvisibility(BUFFER_A, TRUE); MarkBattlerForControllerExec(gActiveBattler); break; @@ -9137,10 +9158,10 @@ static void Cmd_various(void) BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gActiveBattler].pp[i]), &gBattleMons[gActiveBattler].pp[i]); MarkBattlerForControllerExec(gActiveBattler); } - + if (gBattleMons[gActiveBattler].pp[i] == 0 && gBattleStruct->skyDropTargets[gActiveBattler] == 0xFF) CancelMultiTurnMoves(gActiveBattler); - + gBattlescriptCurrInstr += 7; // continue } else @@ -9214,19 +9235,19 @@ static void Cmd_various(void) return; case VARIOUS_SET_SKY_DROP: gStatuses3[gBattlerTarget] |= (STATUS3_SKY_DROPPED | STATUS3_ON_AIR); - /* skyDropTargets holds the information of who is in a particular instance of Sky Drop. + /* skyDropTargets holds the information of who is in a particular instance of Sky Drop. This is needed in the case that multiple Pokemon use Sky Drop in the same turn or if the target of a Sky Drop faints while in the air.*/ gBattleStruct->skyDropTargets[gBattlerAttacker] = gBattlerTarget; gBattleStruct->skyDropTargets[gBattlerTarget] = gBattlerAttacker; - + // End any multiturn effects caused by the target except STATUS2_LOCK_CONFUSE gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_MULTIPLETURNS); gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_UPROAR); gBattleMons[gBattlerTarget].status2 &= ~(STATUS2_BIDE); gDisableStructs[gBattlerTarget].rolloutTimer = 0; gDisableStructs[gBattlerTarget].furyCutterCounter = 0; - + // End any Follow Me/Rage Powder effects caused by the target if (gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTimer != 0 && gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTarget == gBattlerTarget) gSideTimers[GetBattlerSide(gBattlerTarget)].followmeTimer = 0; @@ -9239,12 +9260,12 @@ static void Cmd_various(void) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); else { - gBattleStruct->skyDropTargets[gBattlerAttacker] = 0xFF; + gBattleStruct->skyDropTargets[gBattlerAttacker] = 0xFF; gBattleStruct->skyDropTargets[gBattlerTarget] = 0xFF; gStatuses3[gBattlerTarget] &= ~(STATUS3_SKY_DROPPED | STATUS3_ON_AIR); gBattlescriptCurrInstr += 7; } - + // Confuse target if they were in the middle of Petal Dance/Outrage/Thrash when targeted. if (gBattleMons[gBattlerTarget].status2 & STATUS2_LOCK_CONFUSE) gBattleScripting.moveEffect = (MOVE_EFFECT_CONFUSION | MOVE_EFFECT_CERTAIN); @@ -9258,7 +9279,7 @@ static void Cmd_various(void) // Clear skyDropTargets data gBattleStruct->skyDropTargets[gBattleStruct->skyDropTargets[gEffectBattler]] = 0xFF; gBattleStruct->skyDropTargets[gEffectBattler] = 0xFF; - + // If the target was in the middle of Outrage/Thrash/etc. when targeted by Sky Drop, confuse them on release and do proper animation if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE && CanBeConfused(gEffectBattler)) { @@ -9331,7 +9352,7 @@ static void Cmd_various(void) count++; } } - + if (count == 0) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3); // Rototiller fails else @@ -9368,19 +9389,19 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 4; return; } - + gBattleScripting.battler = gEffectBattler = gBattlerTarget = gActiveBattler; // Cover all berry effect battlerId cases. e.g. ChangeStatBuffs uses target ID // Do move end berry effects for just a single battler, instead of looping through all battlers if (ItemBattleEffects(ITEMEFFECT_BATTLER_MOVE_END, gActiveBattler, FALSE)) return; - + if (gBattlescriptCurrInstr[3]) { gBattleMons[gActiveBattler].item = gBattleStruct->changedItems[gActiveBattler]; gBattleStruct->changedItems[gActiveBattler] = ITEM_NONE; gBattleResources->flags->flags[gActiveBattler] &= ~RESOURCE_FLAG_UNBURDEN; } - + gBattlescriptCurrInstr += 4; return; case VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL: @@ -9552,7 +9573,7 @@ static void Cmd_various(void) return; case VARIOUS_CAN_TAR_SHOT_WORK: // Tar Shot will fail if it's already been used on the target and its speed can't be lowered further - if (!gDisableStructs[gActiveBattler].tarShot + if (!gDisableStructs[gActiveBattler].tarShot && CompareStat(gActiveBattler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN)) gBattlescriptCurrInstr += 7; else @@ -9650,7 +9671,7 @@ static void Cmd_various(void) case VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM: gBattleMons[gActiveBattler].item = gLastUsedItem; break; - case VARIOUS_SET_BEAK_BLAST: + case VARIOUS_SET_BEAK_BLAST: gProtectStructs[gBattlerAttacker].beakBlastCharge = TRUE; break; case VARIOUS_SWAP_SIDE_STATUSES: @@ -10268,7 +10289,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gActiveBattler = gBattlerAttacker; else gActiveBattler = gBattlerTarget; - + activeBattlerAbility = GetBattlerAbility(gActiveBattler); gSpecialStatuses[gActiveBattler].changedStatsBattlerId = gBattlerAttacker; @@ -10432,7 +10453,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr gBattleTextBuff2[index++] = STRINGID_STATFELL; gBattleTextBuff2[index++] = STRINGID_STATFELL >> 8; gBattleTextBuff2[index] = B_BUFF_EOS; - + if (gBattleMons[gActiveBattler].statStages[statId] == MIN_STAT_STAGE) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_WONT_DECREASE; @@ -10620,9 +10641,9 @@ static void Cmd_forcerandomswitch(void) struct Pokemon *party = NULL; s32 validMons = 0; s32 minNeeded; - + bool32 redCardForcedSwitch = FALSE; - + // Red card checks against wild pokemon. If we have reached here, the player has a mon to switch into // Red card swaps attacker with target to get the animation correct, so here we check attacker which is really the target. Thanks GF... if (gBattleScripting.switchCase == B_SWITCH_RED_CARD @@ -10665,7 +10686,7 @@ static void Cmd_forcerandomswitch(void) && GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) || redCardForcedSwitch ) - { + { if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) party = gPlayerParty; else @@ -12190,7 +12211,7 @@ static void Cmd_maxattackhalvehp(void) if (!(gBattleMons[gBattlerAttacker].maxHP / 2)) halfHp = 1; - + // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < MAX_STAT_STAGE && gBattleMons[gBattlerAttacker].hp > halfHp) @@ -12686,7 +12707,7 @@ static void Cmd_tryswapitems(void) gBattleMons[gBattlerAttacker].item = ITEM_NONE; gBattleMons[gBattlerTarget].item = oldItemAtk; - + RecordItemEffectBattle(gBattlerAttacker, 0); RecordItemEffectBattle(gBattlerTarget, ItemId_GetHoldEffect(oldItemAtk)); @@ -12705,7 +12726,7 @@ static void Cmd_tryswapitems(void) PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk) PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk) - + if (!(sideAttacker == sideTarget && IsPartnerMonFromSameTrainer(gBattlerAttacker))) { // if targeting your own side and you aren't in a multi battle, don't save items as stolen @@ -12782,7 +12803,7 @@ static void Cmd_trywish(void) #else gBattleMoveDamage = max(1, gBattleMons[gBattlerTarget].maxHP / 2); #endif - + gBattleMoveDamage *= -1; if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2); @@ -13178,7 +13199,7 @@ u16 GetSecretPowerMoveEffect(void) } } else - { + { switch (gBattleTerrain) { case BATTLE_TERRAIN_GRASS: @@ -13401,7 +13422,7 @@ static void Cmd_settypebasedhalvers(void) gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC; worked = TRUE; } - #else + #else if (!(gStatuses4[gBattlerAttacker] & STATUS4_MUD_SPORT)) { gStatuses4[gBattlerAttacker] |= STATUS4_MUD_SPORT; @@ -13576,20 +13597,20 @@ static void Cmd_removelightscreenreflect(void) { u8 side; bool32 failed; - + #if B_BRICK_BREAK >= GEN_4 // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally side = GetBattlerSide(gBattlerTarget); #else side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; #endif - + #if B_BRICK_BREAK >= GEN_5 failed = (gMoveResultFlags & MOVE_RESULT_NO_EFFECT); #else failed = FALSE; #endif - + if (!failed && (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer @@ -13648,7 +13669,7 @@ static void Cmd_handleballthrow(void) { u32 odds, i; u8 catchRate; - + gLastThrownBall = gLastUsedItem; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) catchRate = gBattleStruct->safariCatchFactor * 1275 / 100; From 54ee960970c31a49ebd83dfb2d396c67b2e6abc1 Mon Sep 17 00:00:00 2001 From: crater-git Date: Fri, 26 Aug 2022 10:12:11 -0400 Subject: [PATCH 129/271] Fixed Battle Frontier tutor move IDs --- data/maps/BattleFrontier_Lounge7/scripts.inc | 40 ++++++++++---------- include/constants/party_menu.h | 2 - src/field_specials.c | 40 +++----------------- 3 files changed, 26 insertions(+), 56 deletions(-) diff --git a/data/maps/BattleFrontier_Lounge7/scripts.inc b/data/maps/BattleFrontier_Lounge7/scripts.inc index c52df3cafb..a51fd9d076 100644 --- a/data/maps/BattleFrontier_Lounge7/scripts.inc +++ b/data/maps/BattleFrontier_Lounge7/scripts.inc @@ -66,52 +66,52 @@ BattleFrontier_Lounge7_EventScript_ChooseNewLeftTutorMove:: end BattleFrontier_Lounge7_EventScript_Softboiled:: - setvar VAR_0x8008, 16 + setvar VAR_0x8008, MOVE_SOFT_BOILED goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_SeismicToss:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_SEISMIC_TOSS goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_DreamEater:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_DREAM_EATER goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MegaPunch:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_MEGA_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MegaKick:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_MEGA_KICK goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_BodySlam:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_BODY_SLAM goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_RockSlide:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_ROCK_SLIDE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Counter:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_COUNTER goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_ThunderWave:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_THUNDER_WAVE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_SwordsDance:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_SWORDS_DANCE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end @@ -180,52 +180,52 @@ BattleFrontier_Lounge7_EventScript_ChooseNewRightTutorMove:: end BattleFrontier_Lounge7_EventScript_DefenseCurl:: - setvar VAR_0x8008, 16 + setvar VAR_0x8008, MOVE_DEFENSE_CURL goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Snore:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_SNORE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MudSlap:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_MUD_SLAP goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Swift:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_SWIFT goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_IcyWind:: - setvar VAR_0x8008, 24 + setvar VAR_0x8008, MOVE_ICY_WIND goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Endure:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_ENDURE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_PsychUp:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_PSYCH_UP goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_IcePunch:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_ICE_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_ThunderPunch:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_THUNDER_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_FirePunch:: - setvar VAR_0x8008, 48 + setvar VAR_0x8008, MOVE_FIRE_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h index 36b68f0631..2c632d30cf 100644 --- a/include/constants/party_menu.h +++ b/include/constants/party_menu.h @@ -12,8 +12,6 @@ #define AILMENT_PKRS 6 #define AILMENT_FNT 7 -#define TUTOR_MOVE_COUNT 30 - #define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_DOUBLE 1 #define PARTY_LAYOUT_MULTI 2 diff --git a/src/field_specials.c b/src/field_specials.c index 3692a592c2..434d2f776d 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -2986,40 +2986,12 @@ static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) } } -static const u16 sBattleFrontier_TutorMoves1[] = -{ - MOVE_SOFT_BOILED, - MOVE_SEISMIC_TOSS, - MOVE_DREAM_EATER, - MOVE_MEGA_PUNCH, - MOVE_MEGA_KICK, - MOVE_BODY_SLAM, - MOVE_ROCK_SLIDE, - MOVE_COUNTER, - MOVE_THUNDER_WAVE, - MOVE_SWORDS_DANCE -}; - -static const u16 sBattleFrontier_TutorMoves2[] = -{ - MOVE_DEFENSE_CURL, - MOVE_SNORE, - MOVE_MUD_SLAP, - MOVE_SWIFT, - MOVE_ICY_WIND, - MOVE_ENDURE, - MOVE_PSYCH_UP, - MOVE_ICE_PUNCH, - MOVE_THUNDER_PUNCH, - MOVE_FIRE_PUNCH -}; - void BufferBattleFrontierTutorMoveName(void) { if (gSpecialVar_0x8005 != 0) - StringCopy(gStringVar1, gMoveNames[sBattleFrontier_TutorMoves2[gSpecialVar_0x8004]]); + StringCopy(gStringVar1, gMoveNames[gSpecialVar_0x8004]); else - StringCopy(gStringVar1, gMoveNames[sBattleFrontier_TutorMoves1[gSpecialVar_0x8004]]); + StringCopy(gStringVar1, gMoveNames[gSpecialVar_0x8004]); } static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection) @@ -3130,26 +3102,26 @@ void GetBattleFrontierTutorMoveIndex(void) i = 0; do { - if (i == sBattleFrontier_TutorMoves2[moveIndex]) + if (i == moveIndex) { gSpecialVar_0x8005 = i; break; } i++; - } while (i < TUTOR_MOVE_COUNT); + } while (i < MOVES_COUNT); } else { i = 0; do { - if (i == sBattleFrontier_TutorMoves1[moveIndex]) + if (i == moveIndex) { gSpecialVar_0x8005 = i; break; } i++; - } while (i < TUTOR_MOVE_COUNT); + } while (i < MOVES_COUNT); } } From b8a3cc284650eebe2357986b07ed14fe1f94a5c2 Mon Sep 17 00:00:00 2001 From: crater-git Date: Fri, 26 Aug 2022 11:07:08 -0400 Subject: [PATCH 130/271] Consolidated funcs, renamed CanMonLearnMove --- include/pokemon.h | 3 +-- src/apprentice.c | 4 ++-- src/daycare.c | 2 +- src/party_menu.c | 12 ++++++------ src/pokemon.c | 25 ++----------------------- 5 files changed, 12 insertions(+), 34 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 92057e9b78..b4d60dacf1 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -510,8 +510,7 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); -u32 CanMonLearnTaughtMove(struct Pokemon *mon, u16 move); -u32 CanSpeciesLearnTaughtMove(u16 species, u16 move); +u8 CanLearnTaughtMove(u16 species, u16 move); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); diff --git a/src/apprentice.c b/src/apprentice.c index 71536065fa..b8a946d28d 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -338,7 +338,7 @@ static u16 GetRandomAlternateMove(u8 monId) const struct LevelUpMove *learnset; bool32 needTMs = FALSE; u16 moveId = MOVE_NONE; - bool32 shouldUseMove; + bool8 shouldUseMove; u8 level; id = APPRENTICE_SPECIES_ID(monId); @@ -376,7 +376,7 @@ static u16 GetRandomAlternateMove(u8 monId) do { id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES); - shouldUseMove = CanSpeciesLearnTaughtMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); + shouldUseMove = CanLearnTaughtMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); } while (!shouldUseMove); diff --git a/src/daycare.c b/src/daycare.c index ffc72c41f2..a73cedc857 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -696,7 +696,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j); - if (sHatchedEggFatherMoves[i] == moveId && CanMonLearnTaughtMove(egg, moveId)) + if (sHatchedEggFatherMoves[i] == moveId && CanLearnTaughtMove(GetMonData(egg, MON_DATA_SPECIES2), moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); diff --git a/src/party_menu.c b/src/party_menu.c index 0025e968fc..197b5f1f72 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -266,7 +266,7 @@ static void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct PartyMenuBox static void DisplayPartyPokemonDescriptionText(u8, struct PartyMenuBox *, u8); static bool8 IsMonAllowedInMinigame(u8); static void DisplayPartyPokemonDataToTeachMove(u8, u16); -static u8 CanMonLearnMove(struct Pokemon *, u16); +static u8 CanTeachMove(struct Pokemon *, u16); static void DisplayPartyPokemonBarDetail(u8, const u8 *, u8, const u8 *); static void DisplayPartyPokemonLevel(u8, struct PartyMenuBox *); static void DisplayPartyPokemonGender(u8, u16, u8 *, struct PartyMenuBox *); @@ -996,7 +996,7 @@ static bool8 DisplayPartyPokemonDataForMoveTutorOrEvolutionItem(u8 slot) static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 move) { - switch (CanMonLearnMove(&gPlayerParty[slot], move)) + switch (CanTeachMove(&gPlayerParty[slot], move)) { case CANNOT_LEARN_MOVE: case CANNOT_LEARN_MOVE_IS_EGG: @@ -2026,11 +2026,11 @@ static void Task_HandleCancelParticipationYesNoInput(u8 taskId) } } -static u8 CanMonLearnMove(struct Pokemon *mon, u16 move) +static u8 CanTeachMove(struct Pokemon *mon, u16 move) { if (GetMonData(mon, MON_DATA_IS_EGG)) return CANNOT_LEARN_MOVE_IS_EGG; - else if (!CanMonLearnTaughtMove(mon, move)) + else if (!CanLearnTaughtMove(GetMonData(mon, MON_DATA_SPECIES2), move)) return CANNOT_LEARN_MOVE; else if (MonKnowsMove(mon, move) == TRUE) return ALREADY_KNOWS_MOVE; @@ -4912,7 +4912,7 @@ void ItemUseCB_TMHM(u8 taskId, TaskFunc task) GetMonNickname(mon, gStringVar1); StringCopy(gStringVar2, gMoveNames[move]); - switch (CanMonLearnMove(mon, move)) + switch (CanTeachMove(mon, move)) { case CANNOT_LEARN_MOVE: DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); @@ -5646,7 +5646,7 @@ static void TryTutorSelectedMon(u8 taskId) gPartyMenu.data1 = gSpecialVar_0x8005; StringCopy(gStringVar2, gMoveNames[gPartyMenu.data1]); move[1] = 2; - switch (CanMonLearnMove(mon, gPartyMenu.data1)) + switch (CanTeachMove(mon, gPartyMenu.data1)) { case CANNOT_LEARN_MOVE: DisplayLearnMoveMessageAndClose(taskId, gText_PkmnCantLearnMove); diff --git a/src/pokemon.c b/src/pokemon.c index 723a3977e3..6ee4696684 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7244,28 +7244,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) } } -u32 CanMonLearnTaughtMove(struct Pokemon *mon, u16 move) -{ - u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); - - if (species == SPECIES_EGG) - { - return FALSE; - } - else - { - u32 i; - for (i = 0; gTeachLearnsets[species][i] != MOVE_UNAVAILABLE; i++) - { - if (gTeachLearnsets[species][i] == move) { - return TRUE; - } - } - return FALSE; - } -} - -u32 CanSpeciesLearnTaughtMove(u16 species, u16 move) +u8 CanLearnTaughtMove(u16 species, u16 move) { if (species == SPECIES_EGG) { @@ -7273,7 +7252,7 @@ u32 CanSpeciesLearnTaughtMove(u16 species, u16 move) } else { - u32 i; + u8 i; for (i = 0; gTeachLearnsets[species][i] != MOVE_UNAVAILABLE; i++) { if (gTeachLearnsets[species][i] == move) { From f8fb4e8cf247f0ad4b164686bbf42697d7908eb1 Mon Sep 17 00:00:00 2001 From: crater-git Date: Fri, 26 Aug 2022 14:48:06 -0400 Subject: [PATCH 131/271] Renamed funcs, lists, etc. - Teach->Teachable --- include/pokemon.h | 4 +- src/apprentice.c | 2 +- src/data/pokemon/teach_learnset_pointers.h | 1279 ----------- .../pokemon/teachable_learnset_pointers.h | 1279 +++++++++++ ...each_learnsets.h => teachable_learnsets.h} | 1908 ++++++++--------- src/daycare.c | 2 +- src/party_menu.c | 2 +- src/pokemon.c | 10 +- 8 files changed, 2243 insertions(+), 2243 deletions(-) delete mode 100644 src/data/pokemon/teach_learnset_pointers.h create mode 100644 src/data/pokemon/teachable_learnset_pointers.h rename src/data/pokemon/{teach_learnsets.h => teachable_learnsets.h} (92%) diff --git a/include/pokemon.h b/include/pokemon.h index b4d60dacf1..0057c3f42a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -397,7 +397,7 @@ extern const struct BaseStats gBaseStats[]; extern const u8 *const gItemEffectTable[]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const struct LevelUpMove *const gLevelUpLearnsets[]; -extern const u16 *const gTeachLearnsets[]; +extern const u16 *const gTeachableLearnsets[]; extern const u8 gPPUpGetMask[]; extern const u8 gPPUpClearMask[]; extern const u8 gPPUpAddValues[]; @@ -510,7 +510,7 @@ u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection); void UpdatePartyPokerusTime(u16 days); void PartySpreadPokerus(struct Pokemon *party); bool8 TryIncrementMonLevel(struct Pokemon *mon); -u8 CanLearnTaughtMove(u16 species, u16 move); +u8 CanLearnTeachableMove(u16 species, u16 move); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves); u8 GetNumberOfRelearnableMoves(struct Pokemon *mon); diff --git a/src/apprentice.c b/src/apprentice.c index b8a946d28d..439bcc6569 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -376,7 +376,7 @@ static u16 GetRandomAlternateMove(u8 monId) do { id = Random() % (NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES); - shouldUseMove = CanLearnTaughtMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); + shouldUseMove = CanLearnTeachableMove(species, ItemIdToBattleMoveId(ITEM_TM01 + id)); } while (!shouldUseMove); diff --git a/src/data/pokemon/teach_learnset_pointers.h b/src/data/pokemon/teach_learnset_pointers.h deleted file mode 100644 index cdb9e1b56d..0000000000 --- a/src/data/pokemon/teach_learnset_pointers.h +++ /dev/null @@ -1,1279 +0,0 @@ -const u16 *const gTeachLearnsets[NUM_SPECIES] = -{ - [SPECIES_NONE] = sBulbasaurTeachLearnset, - [SPECIES_BULBASAUR] = sBulbasaurTeachLearnset, - [SPECIES_IVYSAUR] = sIvysaurTeachLearnset, - [SPECIES_VENUSAUR] = sVenusaurTeachLearnset, - [SPECIES_CHARMANDER] = sCharmanderTeachLearnset, - [SPECIES_CHARMELEON] = sCharmeleonTeachLearnset, - [SPECIES_CHARIZARD] = sCharizardTeachLearnset, - [SPECIES_SQUIRTLE] = sSquirtleTeachLearnset, - [SPECIES_WARTORTLE] = sWartortleTeachLearnset, - [SPECIES_BLASTOISE] = sBlastoiseTeachLearnset, - [SPECIES_CATERPIE] = sCaterpieTeachLearnset, - [SPECIES_METAPOD] = sMetapodTeachLearnset, - [SPECIES_BUTTERFREE] = sButterfreeTeachLearnset, - [SPECIES_WEEDLE] = sWeedleTeachLearnset, - [SPECIES_KAKUNA] = sKakunaTeachLearnset, - [SPECIES_BEEDRILL] = sBeedrillTeachLearnset, - [SPECIES_PIDGEY] = sPidgeyTeachLearnset, - [SPECIES_PIDGEOTTO] = sPidgeottoTeachLearnset, - [SPECIES_PIDGEOT] = sPidgeotTeachLearnset, - [SPECIES_RATTATA] = sRattataTeachLearnset, - [SPECIES_RATICATE] = sRaticateTeachLearnset, - [SPECIES_SPEAROW] = sSpearowTeachLearnset, - [SPECIES_FEAROW] = sFearowTeachLearnset, - [SPECIES_EKANS] = sEkansTeachLearnset, - [SPECIES_ARBOK] = sArbokTeachLearnset, - [SPECIES_PIKACHU] = sPikachuTeachLearnset, - [SPECIES_RAICHU] = sRaichuTeachLearnset, - [SPECIES_SANDSHREW] = sSandshrewTeachLearnset, - [SPECIES_SANDSLASH] = sSandslashTeachLearnset, - [SPECIES_NIDORAN_F] = sNidoranFTeachLearnset, - [SPECIES_NIDORINA] = sNidorinaTeachLearnset, - [SPECIES_NIDOQUEEN] = sNidoqueenTeachLearnset, - [SPECIES_NIDORAN_M] = sNidoranMTeachLearnset, - [SPECIES_NIDORINO] = sNidorinoTeachLearnset, - [SPECIES_NIDOKING] = sNidokingTeachLearnset, - [SPECIES_CLEFAIRY] = sClefairyTeachLearnset, - [SPECIES_CLEFABLE] = sClefableTeachLearnset, - [SPECIES_VULPIX] = sVulpixTeachLearnset, - [SPECIES_NINETALES] = sNinetalesTeachLearnset, - [SPECIES_JIGGLYPUFF] = sJigglypuffTeachLearnset, - [SPECIES_WIGGLYTUFF] = sWigglytuffTeachLearnset, - [SPECIES_ZUBAT] = sZubatTeachLearnset, - [SPECIES_GOLBAT] = sGolbatTeachLearnset, - [SPECIES_ODDISH] = sOddishTeachLearnset, - [SPECIES_GLOOM] = sGloomTeachLearnset, - [SPECIES_VILEPLUME] = sVileplumeTeachLearnset, - [SPECIES_PARAS] = sParasTeachLearnset, - [SPECIES_PARASECT] = sParasectTeachLearnset, - [SPECIES_VENONAT] = sVenonatTeachLearnset, - [SPECIES_VENOMOTH] = sVenomothTeachLearnset, - [SPECIES_DIGLETT] = sDiglettTeachLearnset, - [SPECIES_DUGTRIO] = sDugtrioTeachLearnset, - [SPECIES_MEOWTH] = sMeowthTeachLearnset, - [SPECIES_PERSIAN] = sPersianTeachLearnset, - [SPECIES_PSYDUCK] = sPsyduckTeachLearnset, - [SPECIES_GOLDUCK] = sGolduckTeachLearnset, - [SPECIES_MANKEY] = sMankeyTeachLearnset, - [SPECIES_PRIMEAPE] = sPrimeapeTeachLearnset, - [SPECIES_GROWLITHE] = sGrowlitheTeachLearnset, - [SPECIES_ARCANINE] = sArcanineTeachLearnset, - [SPECIES_POLIWAG] = sPoliwagTeachLearnset, - [SPECIES_POLIWHIRL] = sPoliwhirlTeachLearnset, - [SPECIES_POLIWRATH] = sPoliwrathTeachLearnset, - [SPECIES_ABRA] = sAbraTeachLearnset, - [SPECIES_KADABRA] = sKadabraTeachLearnset, - [SPECIES_ALAKAZAM] = sAlakazamTeachLearnset, - [SPECIES_MACHOP] = sMachopTeachLearnset, - [SPECIES_MACHOKE] = sMachokeTeachLearnset, - [SPECIES_MACHAMP] = sMachampTeachLearnset, - [SPECIES_BELLSPROUT] = sBellsproutTeachLearnset, - [SPECIES_WEEPINBELL] = sWeepinbellTeachLearnset, - [SPECIES_VICTREEBEL] = sVictreebelTeachLearnset, - [SPECIES_TENTACOOL] = sTentacoolTeachLearnset, - [SPECIES_TENTACRUEL] = sTentacruelTeachLearnset, - [SPECIES_GEODUDE] = sGeodudeTeachLearnset, - [SPECIES_GRAVELER] = sGravelerTeachLearnset, - [SPECIES_GOLEM] = sGolemTeachLearnset, - [SPECIES_PONYTA] = sPonytaTeachLearnset, - [SPECIES_RAPIDASH] = sRapidashTeachLearnset, - [SPECIES_SLOWPOKE] = sSlowpokeTeachLearnset, - [SPECIES_SLOWBRO] = sSlowbroTeachLearnset, - [SPECIES_MAGNEMITE] = sMagnemiteTeachLearnset, - [SPECIES_MAGNETON] = sMagnetonTeachLearnset, - [SPECIES_FARFETCHD] = sFarfetchdTeachLearnset, - [SPECIES_DODUO] = sDoduoTeachLearnset, - [SPECIES_DODRIO] = sDodrioTeachLearnset, - [SPECIES_SEEL] = sSeelTeachLearnset, - [SPECIES_DEWGONG] = sDewgongTeachLearnset, - [SPECIES_GRIMER] = sGrimerTeachLearnset, - [SPECIES_MUK] = sMukTeachLearnset, - [SPECIES_SHELLDER] = sShellderTeachLearnset, - [SPECIES_CLOYSTER] = sCloysterTeachLearnset, - [SPECIES_GASTLY] = sGastlyTeachLearnset, - [SPECIES_HAUNTER] = sHaunterTeachLearnset, - [SPECIES_GENGAR] = sGengarTeachLearnset, - [SPECIES_ONIX] = sOnixTeachLearnset, - [SPECIES_DROWZEE] = sDrowzeeTeachLearnset, - [SPECIES_HYPNO] = sHypnoTeachLearnset, - [SPECIES_KRABBY] = sKrabbyTeachLearnset, - [SPECIES_KINGLER] = sKinglerTeachLearnset, - [SPECIES_VOLTORB] = sVoltorbTeachLearnset, - [SPECIES_ELECTRODE] = sElectrodeTeachLearnset, - [SPECIES_EXEGGCUTE] = sExeggcuteTeachLearnset, - [SPECIES_EXEGGUTOR] = sExeggutorTeachLearnset, - [SPECIES_CUBONE] = sCuboneTeachLearnset, - [SPECIES_MAROWAK] = sMarowakTeachLearnset, - [SPECIES_HITMONLEE] = sHitmonleeTeachLearnset, - [SPECIES_HITMONCHAN] = sHitmonchanTeachLearnset, - [SPECIES_LICKITUNG] = sLickitungTeachLearnset, - [SPECIES_KOFFING] = sKoffingTeachLearnset, - [SPECIES_WEEZING] = sWeezingTeachLearnset, - [SPECIES_RHYHORN] = sRhyhornTeachLearnset, - [SPECIES_RHYDON] = sRhydonTeachLearnset, - [SPECIES_CHANSEY] = sChanseyTeachLearnset, - [SPECIES_TANGELA] = sTangelaTeachLearnset, - [SPECIES_KANGASKHAN] = sKangaskhanTeachLearnset, - [SPECIES_HORSEA] = sHorseaTeachLearnset, - [SPECIES_SEADRA] = sSeadraTeachLearnset, - [SPECIES_GOLDEEN] = sGoldeenTeachLearnset, - [SPECIES_SEAKING] = sSeakingTeachLearnset, - [SPECIES_STARYU] = sStaryuTeachLearnset, - [SPECIES_STARMIE] = sStarmieTeachLearnset, - [SPECIES_MR_MIME] = sMrMimeTeachLearnset, - [SPECIES_SCYTHER] = sScytherTeachLearnset, - [SPECIES_JYNX] = sJynxTeachLearnset, - [SPECIES_ELECTABUZZ] = sElectabuzzTeachLearnset, - [SPECIES_MAGMAR] = sMagmarTeachLearnset, - [SPECIES_PINSIR] = sPinsirTeachLearnset, - [SPECIES_TAUROS] = sTaurosTeachLearnset, - [SPECIES_MAGIKARP] = sMagikarpTeachLearnset, - [SPECIES_GYARADOS] = sGyaradosTeachLearnset, - [SPECIES_LAPRAS] = sLaprasTeachLearnset, - [SPECIES_DITTO] = sDittoTeachLearnset, - [SPECIES_EEVEE] = sEeveeTeachLearnset, - [SPECIES_VAPOREON] = sVaporeonTeachLearnset, - [SPECIES_JOLTEON] = sJolteonTeachLearnset, - [SPECIES_FLAREON] = sFlareonTeachLearnset, - [SPECIES_PORYGON] = sPorygonTeachLearnset, - [SPECIES_OMANYTE] = sOmanyteTeachLearnset, - [SPECIES_OMASTAR] = sOmastarTeachLearnset, - [SPECIES_KABUTO] = sKabutoTeachLearnset, - [SPECIES_KABUTOPS] = sKabutopsTeachLearnset, - [SPECIES_AERODACTYL] = sAerodactylTeachLearnset, - [SPECIES_SNORLAX] = sSnorlaxTeachLearnset, - [SPECIES_ARTICUNO] = sArticunoTeachLearnset, - [SPECIES_ZAPDOS] = sZapdosTeachLearnset, - [SPECIES_MOLTRES] = sMoltresTeachLearnset, - [SPECIES_DRATINI] = sDratiniTeachLearnset, - [SPECIES_DRAGONAIR] = sDragonairTeachLearnset, - [SPECIES_DRAGONITE] = sDragoniteTeachLearnset, - [SPECIES_MEWTWO] = sMewtwoTeachLearnset, - [SPECIES_MEW] = sMewTeachLearnset, - [SPECIES_CHIKORITA] = sChikoritaTeachLearnset, - [SPECIES_BAYLEEF] = sBayleefTeachLearnset, - [SPECIES_MEGANIUM] = sMeganiumTeachLearnset, - [SPECIES_CYNDAQUIL] = sCyndaquilTeachLearnset, - [SPECIES_QUILAVA] = sQuilavaTeachLearnset, - [SPECIES_TYPHLOSION] = sTyphlosionTeachLearnset, - [SPECIES_TOTODILE] = sTotodileTeachLearnset, - [SPECIES_CROCONAW] = sCroconawTeachLearnset, - [SPECIES_FERALIGATR] = sFeraligatrTeachLearnset, - [SPECIES_SENTRET] = sSentretTeachLearnset, - [SPECIES_FURRET] = sFurretTeachLearnset, - [SPECIES_HOOTHOOT] = sHoothootTeachLearnset, - [SPECIES_NOCTOWL] = sNoctowlTeachLearnset, - [SPECIES_LEDYBA] = sLedybaTeachLearnset, - [SPECIES_LEDIAN] = sLedianTeachLearnset, - [SPECIES_SPINARAK] = sSpinarakTeachLearnset, - [SPECIES_ARIADOS] = sAriadosTeachLearnset, - [SPECIES_CROBAT] = sCrobatTeachLearnset, - [SPECIES_CHINCHOU] = sChinchouTeachLearnset, - [SPECIES_LANTURN] = sLanturnTeachLearnset, - [SPECIES_PICHU] = sPichuTeachLearnset, - [SPECIES_CLEFFA] = sCleffaTeachLearnset, - [SPECIES_IGGLYBUFF] = sIgglybuffTeachLearnset, - [SPECIES_TOGEPI] = sTogepiTeachLearnset, - [SPECIES_TOGETIC] = sTogeticTeachLearnset, - [SPECIES_NATU] = sNatuTeachLearnset, - [SPECIES_XATU] = sXatuTeachLearnset, - [SPECIES_MAREEP] = sMareepTeachLearnset, - [SPECIES_FLAAFFY] = sFlaaffyTeachLearnset, - [SPECIES_AMPHAROS] = sAmpharosTeachLearnset, - [SPECIES_BELLOSSOM] = sBellossomTeachLearnset, - [SPECIES_MARILL] = sMarillTeachLearnset, - [SPECIES_AZUMARILL] = sAzumarillTeachLearnset, - [SPECIES_SUDOWOODO] = sSudowoodoTeachLearnset, - [SPECIES_POLITOED] = sPolitoedTeachLearnset, - [SPECIES_HOPPIP] = sHoppipTeachLearnset, - [SPECIES_SKIPLOOM] = sSkiploomTeachLearnset, - [SPECIES_JUMPLUFF] = sJumpluffTeachLearnset, - [SPECIES_AIPOM] = sAipomTeachLearnset, - [SPECIES_SUNKERN] = sSunkernTeachLearnset, - [SPECIES_SUNFLORA] = sSunfloraTeachLearnset, - [SPECIES_YANMA] = sYanmaTeachLearnset, - [SPECIES_WOOPER] = sWooperTeachLearnset, - [SPECIES_QUAGSIRE] = sQuagsireTeachLearnset, - [SPECIES_ESPEON] = sEspeonTeachLearnset, - [SPECIES_UMBREON] = sUmbreonTeachLearnset, - [SPECIES_MURKROW] = sMurkrowTeachLearnset, - [SPECIES_SLOWKING] = sSlowkingTeachLearnset, - [SPECIES_MISDREAVUS] = sMisdreavusTeachLearnset, - [SPECIES_UNOWN] = sUnownTeachLearnset, - [SPECIES_WOBBUFFET] = sWobbuffetTeachLearnset, - [SPECIES_GIRAFARIG] = sGirafarigTeachLearnset, - [SPECIES_PINECO] = sPinecoTeachLearnset, - [SPECIES_FORRETRESS] = sForretressTeachLearnset, - [SPECIES_DUNSPARCE] = sDunsparceTeachLearnset, - [SPECIES_GLIGAR] = sGligarTeachLearnset, - [SPECIES_STEELIX] = sSteelixTeachLearnset, - [SPECIES_SNUBBULL] = sSnubbullTeachLearnset, - [SPECIES_GRANBULL] = sGranbullTeachLearnset, - [SPECIES_QWILFISH] = sQwilfishTeachLearnset, - [SPECIES_SCIZOR] = sScizorTeachLearnset, - [SPECIES_SHUCKLE] = sShuckleTeachLearnset, - [SPECIES_HERACROSS] = sHeracrossTeachLearnset, - [SPECIES_SNEASEL] = sSneaselTeachLearnset, - [SPECIES_TEDDIURSA] = sTeddiursaTeachLearnset, - [SPECIES_URSARING] = sUrsaringTeachLearnset, - [SPECIES_SLUGMA] = sSlugmaTeachLearnset, - [SPECIES_MAGCARGO] = sMagcargoTeachLearnset, - [SPECIES_SWINUB] = sSwinubTeachLearnset, - [SPECIES_PILOSWINE] = sPiloswineTeachLearnset, - [SPECIES_CORSOLA] = sCorsolaTeachLearnset, - [SPECIES_REMORAID] = sRemoraidTeachLearnset, - [SPECIES_OCTILLERY] = sOctilleryTeachLearnset, - [SPECIES_DELIBIRD] = sDelibirdTeachLearnset, - [SPECIES_MANTINE] = sMantineTeachLearnset, - [SPECIES_SKARMORY] = sSkarmoryTeachLearnset, - [SPECIES_HOUNDOUR] = sHoundourTeachLearnset, - [SPECIES_HOUNDOOM] = sHoundoomTeachLearnset, - [SPECIES_KINGDRA] = sKingdraTeachLearnset, - [SPECIES_PHANPY] = sPhanpyTeachLearnset, - [SPECIES_DONPHAN] = sDonphanTeachLearnset, - [SPECIES_PORYGON2] = sPorygon2TeachLearnset, - [SPECIES_STANTLER] = sStantlerTeachLearnset, - [SPECIES_SMEARGLE] = sSmeargleTeachLearnset, - [SPECIES_TYROGUE] = sTyrogueTeachLearnset, - [SPECIES_HITMONTOP] = sHitmontopTeachLearnset, - [SPECIES_SMOOCHUM] = sSmoochumTeachLearnset, - [SPECIES_ELEKID] = sElekidTeachLearnset, - [SPECIES_MAGBY] = sMagbyTeachLearnset, - [SPECIES_MILTANK] = sMiltankTeachLearnset, - [SPECIES_BLISSEY] = sBlisseyTeachLearnset, - [SPECIES_RAIKOU] = sRaikouTeachLearnset, - [SPECIES_ENTEI] = sEnteiTeachLearnset, - [SPECIES_SUICUNE] = sSuicuneTeachLearnset, - [SPECIES_LARVITAR] = sLarvitarTeachLearnset, - [SPECIES_PUPITAR] = sPupitarTeachLearnset, - [SPECIES_TYRANITAR] = sTyranitarTeachLearnset, - [SPECIES_LUGIA] = sLugiaTeachLearnset, - [SPECIES_HO_OH] = sHoOhTeachLearnset, - [SPECIES_CELEBI] = sCelebiTeachLearnset, - [SPECIES_TREECKO] = sTreeckoTeachLearnset, - [SPECIES_GROVYLE] = sGrovyleTeachLearnset, - [SPECIES_SCEPTILE] = sSceptileTeachLearnset, - [SPECIES_TORCHIC] = sTorchicTeachLearnset, - [SPECIES_COMBUSKEN] = sCombuskenTeachLearnset, - [SPECIES_BLAZIKEN] = sBlazikenTeachLearnset, - [SPECIES_MUDKIP] = sMudkipTeachLearnset, - [SPECIES_MARSHTOMP] = sMarshtompTeachLearnset, - [SPECIES_SWAMPERT] = sSwampertTeachLearnset, - [SPECIES_POOCHYENA] = sPoochyenaTeachLearnset, - [SPECIES_MIGHTYENA] = sMightyenaTeachLearnset, - [SPECIES_ZIGZAGOON] = sZigzagoonTeachLearnset, - [SPECIES_LINOONE] = sLinooneTeachLearnset, - [SPECIES_WURMPLE] = sWurmpleTeachLearnset, - [SPECIES_SILCOON] = sSilcoonTeachLearnset, - [SPECIES_BEAUTIFLY] = sBeautiflyTeachLearnset, - [SPECIES_CASCOON] = sCascoonTeachLearnset, - [SPECIES_DUSTOX] = sDustoxTeachLearnset, - [SPECIES_LOTAD] = sLotadTeachLearnset, - [SPECIES_LOMBRE] = sLombreTeachLearnset, - [SPECIES_LUDICOLO] = sLudicoloTeachLearnset, - [SPECIES_SEEDOT] = sSeedotTeachLearnset, - [SPECIES_NUZLEAF] = sNuzleafTeachLearnset, - [SPECIES_SHIFTRY] = sShiftryTeachLearnset, - [SPECIES_NINCADA] = sNincadaTeachLearnset, - [SPECIES_NINJASK] = sNinjaskTeachLearnset, - [SPECIES_SHEDINJA] = sShedinjaTeachLearnset, - [SPECIES_TAILLOW] = sTaillowTeachLearnset, - [SPECIES_SWELLOW] = sSwellowTeachLearnset, - [SPECIES_SHROOMISH] = sShroomishTeachLearnset, - [SPECIES_BRELOOM] = sBreloomTeachLearnset, - [SPECIES_SPINDA] = sSpindaTeachLearnset, - [SPECIES_WINGULL] = sWingullTeachLearnset, - [SPECIES_PELIPPER] = sPelipperTeachLearnset, - [SPECIES_SURSKIT] = sSurskitTeachLearnset, - [SPECIES_MASQUERAIN] = sMasquerainTeachLearnset, - [SPECIES_WAILMER] = sWailmerTeachLearnset, - [SPECIES_WAILORD] = sWailordTeachLearnset, - [SPECIES_SKITTY] = sSkittyTeachLearnset, - [SPECIES_DELCATTY] = sDelcattyTeachLearnset, - [SPECIES_KECLEON] = sKecleonTeachLearnset, - [SPECIES_BALTOY] = sBaltoyTeachLearnset, - [SPECIES_CLAYDOL] = sClaydolTeachLearnset, - [SPECIES_NOSEPASS] = sNosepassTeachLearnset, - [SPECIES_TORKOAL] = sTorkoalTeachLearnset, - [SPECIES_SABLEYE] = sSableyeTeachLearnset, - [SPECIES_BARBOACH] = sBarboachTeachLearnset, - [SPECIES_WHISCASH] = sWhiscashTeachLearnset, - [SPECIES_LUVDISC] = sLuvdiscTeachLearnset, - [SPECIES_CORPHISH] = sCorphishTeachLearnset, - [SPECIES_CRAWDAUNT] = sCrawdauntTeachLearnset, - [SPECIES_FEEBAS] = sFeebasTeachLearnset, - [SPECIES_MILOTIC] = sMiloticTeachLearnset, - [SPECIES_CARVANHA] = sCarvanhaTeachLearnset, - [SPECIES_SHARPEDO] = sSharpedoTeachLearnset, - [SPECIES_TRAPINCH] = sTrapinchTeachLearnset, - [SPECIES_VIBRAVA] = sVibravaTeachLearnset, - [SPECIES_FLYGON] = sFlygonTeachLearnset, - [SPECIES_MAKUHITA] = sMakuhitaTeachLearnset, - [SPECIES_HARIYAMA] = sHariyamaTeachLearnset, - [SPECIES_ELECTRIKE] = sElectrikeTeachLearnset, - [SPECIES_MANECTRIC] = sManectricTeachLearnset, - [SPECIES_NUMEL] = sNumelTeachLearnset, - [SPECIES_CAMERUPT] = sCameruptTeachLearnset, - [SPECIES_SPHEAL] = sSphealTeachLearnset, - [SPECIES_SEALEO] = sSealeoTeachLearnset, - [SPECIES_WALREIN] = sWalreinTeachLearnset, - [SPECIES_CACNEA] = sCacneaTeachLearnset, - [SPECIES_CACTURNE] = sCacturneTeachLearnset, - [SPECIES_SNORUNT] = sSnoruntTeachLearnset, - [SPECIES_GLALIE] = sGlalieTeachLearnset, - [SPECIES_LUNATONE] = sLunatoneTeachLearnset, - [SPECIES_SOLROCK] = sSolrockTeachLearnset, - [SPECIES_AZURILL] = sAzurillTeachLearnset, - [SPECIES_SPOINK] = sSpoinkTeachLearnset, - [SPECIES_GRUMPIG] = sGrumpigTeachLearnset, - [SPECIES_PLUSLE] = sPlusleTeachLearnset, - [SPECIES_MINUN] = sMinunTeachLearnset, - [SPECIES_MAWILE] = sMawileTeachLearnset, - [SPECIES_MEDITITE] = sMedititeTeachLearnset, - [SPECIES_MEDICHAM] = sMedichamTeachLearnset, - [SPECIES_SWABLU] = sSwabluTeachLearnset, - [SPECIES_ALTARIA] = sAltariaTeachLearnset, - [SPECIES_WYNAUT] = sWynautTeachLearnset, - [SPECIES_DUSKULL] = sDuskullTeachLearnset, - [SPECIES_DUSCLOPS] = sDusclopsTeachLearnset, - [SPECIES_ROSELIA] = sRoseliaTeachLearnset, - [SPECIES_SLAKOTH] = sSlakothTeachLearnset, - [SPECIES_VIGOROTH] = sVigorothTeachLearnset, - [SPECIES_SLAKING] = sSlakingTeachLearnset, - [SPECIES_GULPIN] = sGulpinTeachLearnset, - [SPECIES_SWALOT] = sSwalotTeachLearnset, - [SPECIES_TROPIUS] = sTropiusTeachLearnset, - [SPECIES_WHISMUR] = sWhismurTeachLearnset, - [SPECIES_LOUDRED] = sLoudredTeachLearnset, - [SPECIES_EXPLOUD] = sExploudTeachLearnset, - [SPECIES_CLAMPERL] = sClamperlTeachLearnset, - [SPECIES_HUNTAIL] = sHuntailTeachLearnset, - [SPECIES_GOREBYSS] = sGorebyssTeachLearnset, - [SPECIES_ABSOL] = sAbsolTeachLearnset, - [SPECIES_SHUPPET] = sShuppetTeachLearnset, - [SPECIES_BANETTE] = sBanetteTeachLearnset, - [SPECIES_SEVIPER] = sSeviperTeachLearnset, - [SPECIES_ZANGOOSE] = sZangooseTeachLearnset, - [SPECIES_RELICANTH] = sRelicanthTeachLearnset, - [SPECIES_ARON] = sAronTeachLearnset, - [SPECIES_LAIRON] = sLaironTeachLearnset, - [SPECIES_AGGRON] = sAggronTeachLearnset, - [SPECIES_CASTFORM] = sCastformTeachLearnset, - [SPECIES_VOLBEAT] = sVolbeatTeachLearnset, - [SPECIES_ILLUMISE] = sIllumiseTeachLearnset, - [SPECIES_LILEEP] = sLileepTeachLearnset, - [SPECIES_CRADILY] = sCradilyTeachLearnset, - [SPECIES_ANORITH] = sAnorithTeachLearnset, - [SPECIES_ARMALDO] = sArmaldoTeachLearnset, - [SPECIES_RALTS] = sRaltsTeachLearnset, - [SPECIES_KIRLIA] = sKirliaTeachLearnset, - [SPECIES_GARDEVOIR] = sGardevoirTeachLearnset, - [SPECIES_BAGON] = sBagonTeachLearnset, - [SPECIES_SHELGON] = sShelgonTeachLearnset, - [SPECIES_SALAMENCE] = sSalamenceTeachLearnset, - [SPECIES_BELDUM] = sBeldumTeachLearnset, - [SPECIES_METANG] = sMetangTeachLearnset, - [SPECIES_METAGROSS] = sMetagrossTeachLearnset, - [SPECIES_REGIROCK] = sRegirockTeachLearnset, - [SPECIES_REGICE] = sRegiceTeachLearnset, - [SPECIES_REGISTEEL] = sRegisteelTeachLearnset, - [SPECIES_KYOGRE] = sKyogreTeachLearnset, - [SPECIES_GROUDON] = sGroudonTeachLearnset, - [SPECIES_RAYQUAZA] = sRayquazaTeachLearnset, - [SPECIES_LATIAS] = sLatiasTeachLearnset, - [SPECIES_LATIOS] = sLatiosTeachLearnset, - [SPECIES_JIRACHI] = sJirachiTeachLearnset, - [SPECIES_DEOXYS] = sDeoxysTeachLearnset, - [SPECIES_CHIMECHO] = sChimechoTeachLearnset, -#if P_NEW_POKEMON == TRUE - [SPECIES_TURTWIG] = sTurtwigTeachLearnset, - [SPECIES_GROTLE] = sGrotleTeachLearnset, - [SPECIES_TORTERRA] = sTorterraTeachLearnset, - [SPECIES_CHIMCHAR] = sChimcharTeachLearnset, - [SPECIES_MONFERNO] = sMonfernoTeachLearnset, - [SPECIES_INFERNAPE] = sInfernapeTeachLearnset, - [SPECIES_PIPLUP] = sPiplupTeachLearnset, - [SPECIES_PRINPLUP] = sPrinplupTeachLearnset, - [SPECIES_EMPOLEON] = sEmpoleonTeachLearnset, - [SPECIES_STARLY] = sStarlyTeachLearnset, - [SPECIES_STARAVIA] = sStaraviaTeachLearnset, - [SPECIES_STARAPTOR] = sStaraptorTeachLearnset, - [SPECIES_BIDOOF] = sBidoofTeachLearnset, - [SPECIES_BIBAREL] = sBibarelTeachLearnset, - [SPECIES_KRICKETOT] = sKricketotTeachLearnset, - [SPECIES_KRICKETUNE] = sKricketuneTeachLearnset, - [SPECIES_SHINX] = sShinxTeachLearnset, - [SPECIES_LUXIO] = sLuxioTeachLearnset, - [SPECIES_LUXRAY] = sLuxrayTeachLearnset, - [SPECIES_BUDEW] = sBudewTeachLearnset, - [SPECIES_ROSERADE] = sRoseradeTeachLearnset, - [SPECIES_CRANIDOS] = sCranidosTeachLearnset, - [SPECIES_RAMPARDOS] = sRampardosTeachLearnset, - [SPECIES_SHIELDON] = sShieldonTeachLearnset, - [SPECIES_BASTIODON] = sBastiodonTeachLearnset, - [SPECIES_BURMY] = sBurmyTeachLearnset, - [SPECIES_WORMADAM] = sWormadamTeachLearnset, - [SPECIES_MOTHIM] = sMothimTeachLearnset, - [SPECIES_COMBEE] = sCombeeTeachLearnset, - [SPECIES_VESPIQUEN] = sVespiquenTeachLearnset, - [SPECIES_PACHIRISU] = sPachirisuTeachLearnset, - [SPECIES_BUIZEL] = sBuizelTeachLearnset, - [SPECIES_FLOATZEL] = sFloatzelTeachLearnset, - [SPECIES_CHERUBI] = sCherubiTeachLearnset, - [SPECIES_CHERRIM] = sCherrimTeachLearnset, - [SPECIES_SHELLOS] = sShellosTeachLearnset, - [SPECIES_GASTRODON] = sGastrodonTeachLearnset, - [SPECIES_AMBIPOM] = sAmbipomTeachLearnset, - [SPECIES_DRIFLOON] = sDrifloonTeachLearnset, - [SPECIES_DRIFBLIM] = sDrifblimTeachLearnset, - [SPECIES_BUNEARY] = sBunearyTeachLearnset, - [SPECIES_LOPUNNY] = sLopunnyTeachLearnset, - [SPECIES_MISMAGIUS] = sMismagiusTeachLearnset, - [SPECIES_HONCHKROW] = sHonchkrowTeachLearnset, - [SPECIES_GLAMEOW] = sGlameowTeachLearnset, - [SPECIES_PURUGLY] = sPuruglyTeachLearnset, - [SPECIES_CHINGLING] = sChinglingTeachLearnset, - [SPECIES_STUNKY] = sStunkyTeachLearnset, - [SPECIES_SKUNTANK] = sSkuntankTeachLearnset, - [SPECIES_BRONZOR] = sBronzorTeachLearnset, - [SPECIES_BRONZONG] = sBronzongTeachLearnset, - [SPECIES_BONSLY] = sBonslyTeachLearnset, - [SPECIES_MIME_JR] = sMimeJrTeachLearnset, - [SPECIES_HAPPINY] = sHappinyTeachLearnset, - [SPECIES_CHATOT] = sChatotTeachLearnset, - [SPECIES_SPIRITOMB] = sSpiritombTeachLearnset, - [SPECIES_GIBLE] = sGibleTeachLearnset, - [SPECIES_GABITE] = sGabiteTeachLearnset, - [SPECIES_GARCHOMP] = sGarchompTeachLearnset, - [SPECIES_MUNCHLAX] = sMunchlaxTeachLearnset, - [SPECIES_RIOLU] = sRioluTeachLearnset, - [SPECIES_LUCARIO] = sLucarioTeachLearnset, - [SPECIES_HIPPOPOTAS] = sHippopotasTeachLearnset, - [SPECIES_HIPPOWDON] = sHippowdonTeachLearnset, - [SPECIES_SKORUPI] = sSkorupiTeachLearnset, - [SPECIES_DRAPION] = sDrapionTeachLearnset, - [SPECIES_CROAGUNK] = sCroagunkTeachLearnset, - [SPECIES_TOXICROAK] = sToxicroakTeachLearnset, - [SPECIES_CARNIVINE] = sCarnivineTeachLearnset, - [SPECIES_FINNEON] = sFinneonTeachLearnset, - [SPECIES_LUMINEON] = sLumineonTeachLearnset, - [SPECIES_MANTYKE] = sMantykeTeachLearnset, - [SPECIES_SNOVER] = sSnoverTeachLearnset, - [SPECIES_ABOMASNOW] = sAbomasnowTeachLearnset, - [SPECIES_WEAVILE] = sWeavileTeachLearnset, - [SPECIES_MAGNEZONE] = sMagnezoneTeachLearnset, - [SPECIES_LICKILICKY] = sLickilickyTeachLearnset, - [SPECIES_RHYPERIOR] = sRhyperiorTeachLearnset, - [SPECIES_TANGROWTH] = sTangrowthTeachLearnset, - [SPECIES_ELECTIVIRE] = sElectivireTeachLearnset, - [SPECIES_MAGMORTAR] = sMagmortarTeachLearnset, - [SPECIES_TOGEKISS] = sTogekissTeachLearnset, - [SPECIES_YANMEGA] = sYanmegaTeachLearnset, - [SPECIES_LEAFEON] = sLeafeonTeachLearnset, - [SPECIES_GLACEON] = sGlaceonTeachLearnset, - [SPECIES_GLISCOR] = sGliscorTeachLearnset, - [SPECIES_MAMOSWINE] = sMamoswineTeachLearnset, - [SPECIES_PORYGON_Z] = sPorygonZTeachLearnset, - [SPECIES_GALLADE] = sGalladeTeachLearnset, - [SPECIES_PROBOPASS] = sProbopassTeachLearnset, - [SPECIES_DUSKNOIR] = sDusknoirTeachLearnset, - [SPECIES_FROSLASS] = sFroslassTeachLearnset, - [SPECIES_ROTOM] = sRotomTeachLearnset, - [SPECIES_UXIE] = sUxieTeachLearnset, - [SPECIES_MESPRIT] = sMespritTeachLearnset, - [SPECIES_AZELF] = sAzelfTeachLearnset, - [SPECIES_DIALGA] = sDialgaTeachLearnset, - [SPECIES_PALKIA] = sPalkiaTeachLearnset, - [SPECIES_HEATRAN] = sHeatranTeachLearnset, - [SPECIES_REGIGIGAS] = sRegigigasTeachLearnset, - [SPECIES_GIRATINA] = sGiratinaTeachLearnset, - [SPECIES_CRESSELIA] = sCresseliaTeachLearnset, - [SPECIES_PHIONE] = sPhioneTeachLearnset, - [SPECIES_MANAPHY] = sManaphyTeachLearnset, - [SPECIES_DARKRAI] = sDarkraiTeachLearnset, - [SPECIES_SHAYMIN] = sShayminTeachLearnset, - [SPECIES_ARCEUS] = sArceusTeachLearnset, - [SPECIES_VICTINI] = sVictiniTeachLearnset, - [SPECIES_SNIVY] = sSnivyTeachLearnset, - [SPECIES_SERVINE] = sServineTeachLearnset, - [SPECIES_SERPERIOR] = sSerperiorTeachLearnset, - [SPECIES_TEPIG] = sTepigTeachLearnset, - [SPECIES_PIGNITE] = sPigniteTeachLearnset, - [SPECIES_EMBOAR] = sEmboarTeachLearnset, - [SPECIES_OSHAWOTT] = sOshawottTeachLearnset, - [SPECIES_DEWOTT] = sDewottTeachLearnset, - [SPECIES_SAMUROTT] = sSamurottTeachLearnset, - [SPECIES_PATRAT] = sPatratTeachLearnset, - [SPECIES_WATCHOG] = sWatchogTeachLearnset, - [SPECIES_LILLIPUP] = sLillipupTeachLearnset, - [SPECIES_HERDIER] = sHerdierTeachLearnset, - [SPECIES_STOUTLAND] = sStoutlandTeachLearnset, - [SPECIES_PURRLOIN] = sPurrloinTeachLearnset, - [SPECIES_LIEPARD] = sLiepardTeachLearnset, - [SPECIES_PANSAGE] = sPansageTeachLearnset, - [SPECIES_SIMISAGE] = sSimisageTeachLearnset, - [SPECIES_PANSEAR] = sPansearTeachLearnset, - [SPECIES_SIMISEAR] = sSimisearTeachLearnset, - [SPECIES_PANPOUR] = sPanpourTeachLearnset, - [SPECIES_SIMIPOUR] = sSimipourTeachLearnset, - [SPECIES_MUNNA] = sMunnaTeachLearnset, - [SPECIES_MUSHARNA] = sMusharnaTeachLearnset, - [SPECIES_PIDOVE] = sPidoveTeachLearnset, - [SPECIES_TRANQUILL] = sTranquillTeachLearnset, - [SPECIES_UNFEZANT] = sUnfezantTeachLearnset, - [SPECIES_BLITZLE] = sBlitzleTeachLearnset, - [SPECIES_ZEBSTRIKA] = sZebstrikaTeachLearnset, - [SPECIES_ROGGENROLA] = sRoggenrolaTeachLearnset, - [SPECIES_BOLDORE] = sBoldoreTeachLearnset, - [SPECIES_GIGALITH] = sGigalithTeachLearnset, - [SPECIES_WOOBAT] = sWoobatTeachLearnset, - [SPECIES_SWOOBAT] = sSwoobatTeachLearnset, - [SPECIES_DRILBUR] = sDrilburTeachLearnset, - [SPECIES_EXCADRILL] = sExcadrillTeachLearnset, - [SPECIES_AUDINO] = sAudinoTeachLearnset, - [SPECIES_TIMBURR] = sTimburrTeachLearnset, - [SPECIES_GURDURR] = sGurdurrTeachLearnset, - [SPECIES_CONKELDURR] = sConkeldurrTeachLearnset, - [SPECIES_TYMPOLE] = sTympoleTeachLearnset, - [SPECIES_PALPITOAD] = sPalpitoadTeachLearnset, - [SPECIES_SEISMITOAD] = sSeismitoadTeachLearnset, - [SPECIES_THROH] = sThrohTeachLearnset, - [SPECIES_SAWK] = sSawkTeachLearnset, - [SPECIES_SEWADDLE] = sSewaddleTeachLearnset, - [SPECIES_SWADLOON] = sSwadloonTeachLearnset, - [SPECIES_LEAVANNY] = sLeavannyTeachLearnset, - [SPECIES_VENIPEDE] = sVenipedeTeachLearnset, - [SPECIES_WHIRLIPEDE] = sWhirlipedeTeachLearnset, - [SPECIES_SCOLIPEDE] = sScolipedeTeachLearnset, - [SPECIES_COTTONEE] = sCottoneeTeachLearnset, - [SPECIES_WHIMSICOTT] = sWhimsicottTeachLearnset, - [SPECIES_PETILIL] = sPetililTeachLearnset, - [SPECIES_LILLIGANT] = sLilligantTeachLearnset, - [SPECIES_BASCULIN] = sBasculinTeachLearnset, - [SPECIES_SANDILE] = sSandileTeachLearnset, - [SPECIES_KROKOROK] = sKrokorokTeachLearnset, - [SPECIES_KROOKODILE] = sKrookodileTeachLearnset, - [SPECIES_DARUMAKA] = sDarumakaTeachLearnset, - [SPECIES_DARMANITAN] = sDarmanitanTeachLearnset, - [SPECIES_MARACTUS] = sMaractusTeachLearnset, - [SPECIES_DWEBBLE] = sDwebbleTeachLearnset, - [SPECIES_CRUSTLE] = sCrustleTeachLearnset, - [SPECIES_SCRAGGY] = sScraggyTeachLearnset, - [SPECIES_SCRAFTY] = sScraftyTeachLearnset, - [SPECIES_SIGILYPH] = sSigilyphTeachLearnset, - [SPECIES_YAMASK] = sYamaskTeachLearnset, - [SPECIES_COFAGRIGUS] = sCofagrigusTeachLearnset, - [SPECIES_TIRTOUGA] = sTirtougaTeachLearnset, - [SPECIES_CARRACOSTA] = sCarracostaTeachLearnset, - [SPECIES_ARCHEN] = sArchenTeachLearnset, - [SPECIES_ARCHEOPS] = sArcheopsTeachLearnset, - [SPECIES_TRUBBISH] = sTrubbishTeachLearnset, - [SPECIES_GARBODOR] = sGarbodorTeachLearnset, - [SPECIES_ZORUA] = sZoruaTeachLearnset, - [SPECIES_ZOROARK] = sZoroarkTeachLearnset, - [SPECIES_MINCCINO] = sMinccinoTeachLearnset, - [SPECIES_CINCCINO] = sCinccinoTeachLearnset, - [SPECIES_GOTHITA] = sGothitaTeachLearnset, - [SPECIES_GOTHORITA] = sGothoritaTeachLearnset, - [SPECIES_GOTHITELLE] = sGothitelleTeachLearnset, - [SPECIES_SOLOSIS] = sSolosisTeachLearnset, - [SPECIES_DUOSION] = sDuosionTeachLearnset, - [SPECIES_REUNICLUS] = sReuniclusTeachLearnset, - [SPECIES_DUCKLETT] = sDucklettTeachLearnset, - [SPECIES_SWANNA] = sSwannaTeachLearnset, - [SPECIES_VANILLITE] = sVanilliteTeachLearnset, - [SPECIES_VANILLISH] = sVanillishTeachLearnset, - [SPECIES_VANILLUXE] = sVanilluxeTeachLearnset, - [SPECIES_DEERLING] = sDeerlingTeachLearnset, - [SPECIES_SAWSBUCK] = sSawsbuckTeachLearnset, - [SPECIES_EMOLGA] = sEmolgaTeachLearnset, - [SPECIES_KARRABLAST] = sKarrablastTeachLearnset, - [SPECIES_ESCAVALIER] = sEscavalierTeachLearnset, - [SPECIES_FOONGUS] = sFoongusTeachLearnset, - [SPECIES_AMOONGUSS] = sAmoongussTeachLearnset, - [SPECIES_FRILLISH] = sFrillishTeachLearnset, - [SPECIES_JELLICENT] = sJellicentTeachLearnset, - [SPECIES_ALOMOMOLA] = sAlomomolaTeachLearnset, - [SPECIES_JOLTIK] = sJoltikTeachLearnset, - [SPECIES_GALVANTULA] = sGalvantulaTeachLearnset, - [SPECIES_FERROSEED] = sFerroseedTeachLearnset, - [SPECIES_FERROTHORN] = sFerrothornTeachLearnset, - [SPECIES_KLINK] = sKlinkTeachLearnset, - [SPECIES_KLANG] = sKlangTeachLearnset, - [SPECIES_KLINKLANG] = sKlinklangTeachLearnset, - [SPECIES_TYNAMO] = sTynamoTeachLearnset, - [SPECIES_EELEKTRIK] = sEelektrikTeachLearnset, - [SPECIES_EELEKTROSS] = sEelektrossTeachLearnset, - [SPECIES_ELGYEM] = sElgyemTeachLearnset, - [SPECIES_BEHEEYEM] = sBeheeyemTeachLearnset, - [SPECIES_LITWICK] = sLitwickTeachLearnset, - [SPECIES_LAMPENT] = sLampentTeachLearnset, - [SPECIES_CHANDELURE] = sChandelureTeachLearnset, - [SPECIES_AXEW] = sAxewTeachLearnset, - [SPECIES_FRAXURE] = sFraxureTeachLearnset, - [SPECIES_HAXORUS] = sHaxorusTeachLearnset, - [SPECIES_CUBCHOO] = sCubchooTeachLearnset, - [SPECIES_BEARTIC] = sBearticTeachLearnset, - [SPECIES_CRYOGONAL] = sCryogonalTeachLearnset, - [SPECIES_SHELMET] = sShelmetTeachLearnset, - [SPECIES_ACCELGOR] = sAccelgorTeachLearnset, - [SPECIES_STUNFISK] = sStunfiskTeachLearnset, - [SPECIES_MIENFOO] = sMienfooTeachLearnset, - [SPECIES_MIENSHAO] = sMienshaoTeachLearnset, - [SPECIES_DRUDDIGON] = sDruddigonTeachLearnset, - [SPECIES_GOLETT] = sGolettTeachLearnset, - [SPECIES_GOLURK] = sGolurkTeachLearnset, - [SPECIES_PAWNIARD] = sPawniardTeachLearnset, - [SPECIES_BISHARP] = sBisharpTeachLearnset, - [SPECIES_BOUFFALANT] = sBouffalantTeachLearnset, - [SPECIES_RUFFLET] = sRuffletTeachLearnset, - [SPECIES_BRAVIARY] = sBraviaryTeachLearnset, - [SPECIES_VULLABY] = sVullabyTeachLearnset, - [SPECIES_MANDIBUZZ] = sMandibuzzTeachLearnset, - [SPECIES_HEATMOR] = sHeatmorTeachLearnset, - [SPECIES_DURANT] = sDurantTeachLearnset, - [SPECIES_DEINO] = sDeinoTeachLearnset, - [SPECIES_ZWEILOUS] = sZweilousTeachLearnset, - [SPECIES_HYDREIGON] = sHydreigonTeachLearnset, - [SPECIES_LARVESTA] = sLarvestaTeachLearnset, - [SPECIES_VOLCARONA] = sVolcaronaTeachLearnset, - [SPECIES_COBALION] = sCobalionTeachLearnset, - [SPECIES_TERRAKION] = sTerrakionTeachLearnset, - [SPECIES_VIRIZION] = sVirizionTeachLearnset, - [SPECIES_TORNADUS] = sTornadusTeachLearnset, - [SPECIES_THUNDURUS] = sThundurusTeachLearnset, - [SPECIES_RESHIRAM] = sReshiramTeachLearnset, - [SPECIES_ZEKROM] = sZekromTeachLearnset, - [SPECIES_LANDORUS] = sLandorusTeachLearnset, - [SPECIES_KYUREM] = sKyuremTeachLearnset, - [SPECIES_KELDEO] = sKeldeoTeachLearnset, - [SPECIES_MELOETTA] = sMeloettaTeachLearnset, - [SPECIES_GENESECT] = sGenesectTeachLearnset, - [SPECIES_CHESPIN] = sChespinTeachLearnset, - [SPECIES_QUILLADIN] = sQuilladinTeachLearnset, - [SPECIES_CHESNAUGHT] = sChesnaughtTeachLearnset, - [SPECIES_FENNEKIN] = sFennekinTeachLearnset, - [SPECIES_BRAIXEN] = sBraixenTeachLearnset, - [SPECIES_DELPHOX] = sDelphoxTeachLearnset, - [SPECIES_FROAKIE] = sFroakieTeachLearnset, - [SPECIES_FROGADIER] = sFrogadierTeachLearnset, - [SPECIES_GRENINJA] = sGreninjaTeachLearnset, - [SPECIES_BUNNELBY] = sBunnelbyTeachLearnset, - [SPECIES_DIGGERSBY] = sDiggersbyTeachLearnset, - [SPECIES_FLETCHLING] = sFletchlingTeachLearnset, - [SPECIES_FLETCHINDER] = sFletchinderTeachLearnset, - [SPECIES_TALONFLAME] = sTalonflameTeachLearnset, - [SPECIES_SCATTERBUG] = sScatterbugTeachLearnset, - [SPECIES_SPEWPA] = sSpewpaTeachLearnset, - [SPECIES_VIVILLON] = sVivillonTeachLearnset, - [SPECIES_LITLEO] = sLitleoTeachLearnset, - [SPECIES_PYROAR] = sPyroarTeachLearnset, - [SPECIES_FLABEBE] = sFlabebeTeachLearnset, - [SPECIES_FLOETTE] = sFloetteTeachLearnset, - [SPECIES_FLORGES] = sFlorgesTeachLearnset, - [SPECIES_SKIDDO] = sSkiddoTeachLearnset, - [SPECIES_GOGOAT] = sGogoatTeachLearnset, - [SPECIES_PANCHAM] = sPanchamTeachLearnset, - [SPECIES_PANGORO] = sPangoroTeachLearnset, - [SPECIES_FURFROU] = sFurfrouTeachLearnset, - [SPECIES_ESPURR] = sEspurrTeachLearnset, - [SPECIES_MEOWSTIC] = sMeowsticTeachLearnset, - [SPECIES_HONEDGE] = sHonedgeTeachLearnset, - [SPECIES_DOUBLADE] = sDoubladeTeachLearnset, - [SPECIES_AEGISLASH] = sAegislashTeachLearnset, - [SPECIES_SPRITZEE] = sSpritzeeTeachLearnset, - [SPECIES_AROMATISSE] = sAromatisseTeachLearnset, - [SPECIES_SWIRLIX] = sSwirlixTeachLearnset, - [SPECIES_SLURPUFF] = sSlurpuffTeachLearnset, - [SPECIES_INKAY] = sInkayTeachLearnset, - [SPECIES_MALAMAR] = sMalamarTeachLearnset, - [SPECIES_BINACLE] = sBinacleTeachLearnset, - [SPECIES_BARBARACLE] = sBarbaracleTeachLearnset, - [SPECIES_SKRELP] = sSkrelpTeachLearnset, - [SPECIES_DRAGALGE] = sDragalgeTeachLearnset, - [SPECIES_CLAUNCHER] = sClauncherTeachLearnset, - [SPECIES_CLAWITZER] = sClawitzerTeachLearnset, - [SPECIES_HELIOPTILE] = sHelioptileTeachLearnset, - [SPECIES_HELIOLISK] = sHelioliskTeachLearnset, - [SPECIES_TYRUNT] = sTyruntTeachLearnset, - [SPECIES_TYRANTRUM] = sTyrantrumTeachLearnset, - [SPECIES_AMAURA] = sAmauraTeachLearnset, - [SPECIES_AURORUS] = sAurorusTeachLearnset, - [SPECIES_SYLVEON] = sSylveonTeachLearnset, - [SPECIES_HAWLUCHA] = sHawluchaTeachLearnset, - [SPECIES_DEDENNE] = sDedenneTeachLearnset, - [SPECIES_CARBINK] = sCarbinkTeachLearnset, - [SPECIES_GOOMY] = sGoomyTeachLearnset, - [SPECIES_SLIGGOO] = sSliggooTeachLearnset, - [SPECIES_GOODRA] = sGoodraTeachLearnset, - [SPECIES_KLEFKI] = sKlefkiTeachLearnset, - [SPECIES_PHANTUMP] = sPhantumpTeachLearnset, - [SPECIES_TREVENANT] = sTrevenantTeachLearnset, - [SPECIES_PUMPKABOO] = sPumpkabooTeachLearnset, - [SPECIES_GOURGEIST] = sGourgeistTeachLearnset, - [SPECIES_BERGMITE] = sBergmiteTeachLearnset, - [SPECIES_AVALUGG] = sAvaluggTeachLearnset, - [SPECIES_NOIBAT] = sNoibatTeachLearnset, - [SPECIES_NOIVERN] = sNoivernTeachLearnset, - [SPECIES_XERNEAS] = sXerneasTeachLearnset, - [SPECIES_YVELTAL] = sYveltalTeachLearnset, - [SPECIES_ZYGARDE] = sZygardeTeachLearnset, - [SPECIES_DIANCIE] = sDiancieTeachLearnset, - [SPECIES_HOOPA] = sHoopaTeachLearnset, - [SPECIES_VOLCANION] = sVolcanionTeachLearnset, - [SPECIES_ROWLET] = sRowletTeachLearnset, - [SPECIES_DARTRIX] = sDartrixTeachLearnset, - [SPECIES_DECIDUEYE] = sDecidueyeTeachLearnset, - [SPECIES_LITTEN] = sLittenTeachLearnset, - [SPECIES_TORRACAT] = sTorracatTeachLearnset, - [SPECIES_INCINEROAR] = sIncineroarTeachLearnset, - [SPECIES_POPPLIO] = sPopplioTeachLearnset, - [SPECIES_BRIONNE] = sBrionneTeachLearnset, - [SPECIES_PRIMARINA] = sPrimarinaTeachLearnset, - [SPECIES_PIKIPEK] = sPikipekTeachLearnset, - [SPECIES_TRUMBEAK] = sTrumbeakTeachLearnset, - [SPECIES_TOUCANNON] = sToucannonTeachLearnset, - [SPECIES_YUNGOOS] = sYungoosTeachLearnset, - [SPECIES_GUMSHOOS] = sGumshoosTeachLearnset, - [SPECIES_GRUBBIN] = sGrubbinTeachLearnset, - [SPECIES_CHARJABUG] = sCharjabugTeachLearnset, - [SPECIES_VIKAVOLT] = sVikavoltTeachLearnset, - [SPECIES_CRABRAWLER] = sCrabrawlerTeachLearnset, - [SPECIES_CRABOMINABLE] = sCrabominableTeachLearnset, - [SPECIES_ORICORIO] = sOricorioTeachLearnset, - [SPECIES_CUTIEFLY] = sCutieflyTeachLearnset, - [SPECIES_RIBOMBEE] = sRibombeeTeachLearnset, - [SPECIES_ROCKRUFF] = sRockruffTeachLearnset, - [SPECIES_LYCANROC] = sLycanrocTeachLearnset, - [SPECIES_WISHIWASHI] = sWishiwashiTeachLearnset, - [SPECIES_MAREANIE] = sMareanieTeachLearnset, - [SPECIES_TOXAPEX] = sToxapexTeachLearnset, - [SPECIES_MUDBRAY] = sMudbrayTeachLearnset, - [SPECIES_MUDSDALE] = sMudsdaleTeachLearnset, - [SPECIES_DEWPIDER] = sDewpiderTeachLearnset, - [SPECIES_ARAQUANID] = sAraquanidTeachLearnset, - [SPECIES_FOMANTIS] = sFomantisTeachLearnset, - [SPECIES_LURANTIS] = sLurantisTeachLearnset, - [SPECIES_MORELULL] = sMorelullTeachLearnset, - [SPECIES_SHIINOTIC] = sShiinoticTeachLearnset, - [SPECIES_SALANDIT] = sSalanditTeachLearnset, - [SPECIES_SALAZZLE] = sSalazzleTeachLearnset, - [SPECIES_STUFFUL] = sStuffulTeachLearnset, - [SPECIES_BEWEAR] = sBewearTeachLearnset, - [SPECIES_BOUNSWEET] = sBounsweetTeachLearnset, - [SPECIES_STEENEE] = sSteeneeTeachLearnset, - [SPECIES_TSAREENA] = sTsareenaTeachLearnset, - [SPECIES_COMFEY] = sComfeyTeachLearnset, - [SPECIES_ORANGURU] = sOranguruTeachLearnset, - [SPECIES_PASSIMIAN] = sPassimianTeachLearnset, - [SPECIES_WIMPOD] = sWimpodTeachLearnset, - [SPECIES_GOLISOPOD] = sGolisopodTeachLearnset, - [SPECIES_SANDYGAST] = sSandygastTeachLearnset, - [SPECIES_PALOSSAND] = sPalossandTeachLearnset, - [SPECIES_PYUKUMUKU] = sPyukumukuTeachLearnset, - [SPECIES_TYPE_NULL] = sTypeNullTeachLearnset, - [SPECIES_SILVALLY] = sSilvallyTeachLearnset, - [SPECIES_MINIOR] = sMiniorTeachLearnset, - [SPECIES_KOMALA] = sKomalaTeachLearnset, - [SPECIES_TURTONATOR] = sTurtonatorTeachLearnset, - [SPECIES_TOGEDEMARU] = sTogedemaruTeachLearnset, - [SPECIES_MIMIKYU] = sMimikyuTeachLearnset, - [SPECIES_BRUXISH] = sBruxishTeachLearnset, - [SPECIES_DRAMPA] = sDrampaTeachLearnset, - [SPECIES_DHELMISE] = sDhelmiseTeachLearnset, - [SPECIES_JANGMO_O] = sJangmooTeachLearnset, - [SPECIES_HAKAMO_O] = sHakamooTeachLearnset, - [SPECIES_KOMMO_O] = sKommooTeachLearnset, - [SPECIES_TAPU_KOKO] = sTapuKokoTeachLearnset, - [SPECIES_TAPU_LELE] = sTapuLeleTeachLearnset, - [SPECIES_TAPU_BULU] = sTapuBuluTeachLearnset, - [SPECIES_TAPU_FINI] = sTapuFiniTeachLearnset, - [SPECIES_COSMOG] = sCosmogTeachLearnset, - [SPECIES_COSMOEM] = sCosmoemTeachLearnset, - [SPECIES_SOLGALEO] = sSolgaleoTeachLearnset, - [SPECIES_LUNALA] = sLunalaTeachLearnset, - [SPECIES_NIHILEGO] = sNihilegoTeachLearnset, - [SPECIES_BUZZWOLE] = sBuzzwoleTeachLearnset, - [SPECIES_PHEROMOSA] = sPheromosaTeachLearnset, - [SPECIES_XURKITREE] = sXurkitreeTeachLearnset, - [SPECIES_CELESTEELA] = sCelesteelaTeachLearnset, - [SPECIES_KARTANA] = sKartanaTeachLearnset, - [SPECIES_GUZZLORD] = sGuzzlordTeachLearnset, - [SPECIES_NECROZMA] = sNecrozmaTeachLearnset, - [SPECIES_MAGEARNA] = sMagearnaTeachLearnset, - [SPECIES_MARSHADOW] = sMarshadowTeachLearnset, - [SPECIES_POIPOLE] = sPoipoleTeachLearnset, - [SPECIES_NAGANADEL] = sNaganadelTeachLearnset, - [SPECIES_STAKATAKA] = sStakatakaTeachLearnset, - [SPECIES_BLACEPHALON] = sBlacephalonTeachLearnset, - [SPECIES_ZERAORA] = sZeraoraTeachLearnset, - [SPECIES_MELTAN] = sMeltanTeachLearnset, - [SPECIES_MELMETAL] = sMelmetalTeachLearnset, - [SPECIES_GROOKEY] = sGrookeyTeachLearnset, - [SPECIES_THWACKEY] = sThwackeyTeachLearnset, - [SPECIES_RILLABOOM] = sRillaboomTeachLearnset, - [SPECIES_SCORBUNNY] = sScorbunnyTeachLearnset, - [SPECIES_RABOOT] = sRabootTeachLearnset, - [SPECIES_CINDERACE] = sCinderaceTeachLearnset, - [SPECIES_SOBBLE] = sSobbleTeachLearnset, - [SPECIES_DRIZZILE] = sDrizzileTeachLearnset, - [SPECIES_INTELEON] = sInteleonTeachLearnset, - [SPECIES_SKWOVET] = sSkwovetTeachLearnset, - [SPECIES_GREEDENT] = sGreedentTeachLearnset, - [SPECIES_ROOKIDEE] = sRookideeTeachLearnset, - [SPECIES_CORVISQUIRE] = sCorvisquireTeachLearnset, - [SPECIES_CORVIKNIGHT] = sCorviknightTeachLearnset, - [SPECIES_BLIPBUG] = sBlipbugTeachLearnset, - [SPECIES_DOTTLER] = sDottlerTeachLearnset, - [SPECIES_ORBEETLE] = sOrbeetleTeachLearnset, - [SPECIES_NICKIT] = sNickitTeachLearnset, - [SPECIES_THIEVUL] = sThievulTeachLearnset, - [SPECIES_GOSSIFLEUR] = sGossifleurTeachLearnset, - [SPECIES_ELDEGOSS] = sEldegossTeachLearnset, - [SPECIES_WOOLOO] = sWoolooTeachLearnset, - [SPECIES_DUBWOOL] = sDubwoolTeachLearnset, - [SPECIES_CHEWTLE] = sChewtleTeachLearnset, - [SPECIES_DREDNAW] = sDrednawTeachLearnset, - [SPECIES_YAMPER] = sYamperTeachLearnset, - [SPECIES_BOLTUND] = sBoltundTeachLearnset, - [SPECIES_ROLYCOLY] = sRolycolyTeachLearnset, - [SPECIES_CARKOL] = sCarkolTeachLearnset, - [SPECIES_COALOSSAL] = sCoalossalTeachLearnset, - [SPECIES_APPLIN] = sApplinTeachLearnset, - [SPECIES_FLAPPLE] = sFlappleTeachLearnset, - [SPECIES_APPLETUN] = sAppletunTeachLearnset, - [SPECIES_SILICOBRA] = sSilicobraTeachLearnset, - [SPECIES_SANDACONDA] = sSandacondaTeachLearnset, - [SPECIES_CRAMORANT] = sCramorantTeachLearnset, - [SPECIES_ARROKUDA] = sArrokudaTeachLearnset, - [SPECIES_BARRASKEWDA] = sBarraskewdaTeachLearnset, - [SPECIES_TOXEL] = sToxelTeachLearnset, - [SPECIES_TOXTRICITY] = sToxtricityTeachLearnset, - [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachLearnset, - [SPECIES_CENTISKORCH] = sCentiskorchTeachLearnset, - [SPECIES_CLOBBOPUS] = sClobbopusTeachLearnset, - [SPECIES_GRAPPLOCT] = sGrapploctTeachLearnset, - [SPECIES_SINISTEA] = sSinisteaTeachLearnset, - [SPECIES_POLTEAGEIST] = sPolteageistTeachLearnset, - [SPECIES_HATENNA] = sHatennaTeachLearnset, - [SPECIES_HATTREM] = sHattremTeachLearnset, - [SPECIES_HATTERENE] = sHattereneTeachLearnset, - [SPECIES_IMPIDIMP] = sImpidimpTeachLearnset, - [SPECIES_MORGREM] = sMorgremTeachLearnset, - [SPECIES_GRIMMSNARL] = sGrimmsnarlTeachLearnset, - [SPECIES_OBSTAGOON] = sObstagoonTeachLearnset, - [SPECIES_PERRSERKER] = sPerrserkerTeachLearnset, - [SPECIES_CURSOLA] = sCursolaTeachLearnset, - [SPECIES_SIRFETCHD] = sSirfetchdTeachLearnset, - [SPECIES_MR_RIME] = sMrRimeTeachLearnset, - [SPECIES_RUNERIGUS] = sRunerigusTeachLearnset, - [SPECIES_MILCERY] = sMilceryTeachLearnset, - [SPECIES_ALCREMIE] = sAlcremieTeachLearnset, - [SPECIES_FALINKS] = sFalinksTeachLearnset, - [SPECIES_PINCURCHIN] = sPincurchinTeachLearnset, - [SPECIES_SNOM] = sSnomTeachLearnset, - [SPECIES_FROSMOTH] = sFrosmothTeachLearnset, - [SPECIES_STONJOURNER] = sStonjournerTeachLearnset, - [SPECIES_EISCUE] = sEiscueTeachLearnset, - [SPECIES_INDEEDEE] = sIndeedeeTeachLearnset, - [SPECIES_MORPEKO] = sMorpekoTeachLearnset, - [SPECIES_CUFANT] = sCufantTeachLearnset, - [SPECIES_COPPERAJAH] = sCopperajahTeachLearnset, - [SPECIES_DRACOZOLT] = sDracozoltTeachLearnset, - [SPECIES_ARCTOZOLT] = sArctozoltTeachLearnset, - [SPECIES_DRACOVISH] = sDracovishTeachLearnset, - [SPECIES_ARCTOVISH] = sArctovishTeachLearnset, - [SPECIES_DURALUDON] = sDuraludonTeachLearnset, - [SPECIES_DREEPY] = sDreepyTeachLearnset, - [SPECIES_DRAKLOAK] = sDrakloakTeachLearnset, - [SPECIES_DRAGAPULT] = sDragapultTeachLearnset, - [SPECIES_ZACIAN] = sZacianTeachLearnset, - [SPECIES_ZAMAZENTA] = sZamazentaTeachLearnset, - [SPECIES_ETERNATUS] = sEternatusTeachLearnset, - [SPECIES_KUBFU] = sKubfuTeachLearnset, - [SPECIES_URSHIFU] = sUrshifuTeachLearnset, - [SPECIES_ZARUDE] = sZarudeTeachLearnset, - [SPECIES_REGIELEKI] = sRegielekiTeachLearnset, - [SPECIES_REGIDRAGO] = sRegidragoTeachLearnset, - [SPECIES_GLASTRIER] = sGlastrierTeachLearnset, - [SPECIES_SPECTRIER] = sSpectrierTeachLearnset, - [SPECIES_CALYREX] = sCalyrexTeachLearnset, - // Megas - [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachLearnset, - [SPECIES_CHARIZARD_MEGA_X] = sCharizardTeachLearnset, - [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTeachLearnset, - [SPECIES_BLASTOISE_MEGA] = sBlastoiseTeachLearnset, - [SPECIES_BEEDRILL_MEGA] = sBeedrillTeachLearnset, - [SPECIES_PIDGEOT_MEGA] = sPidgeotTeachLearnset, - [SPECIES_ALAKAZAM_MEGA] = sAlakazamTeachLearnset, - [SPECIES_SLOWBRO_MEGA] = sSlowbroTeachLearnset, - [SPECIES_GENGAR_MEGA] = sGengarTeachLearnset, - [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTeachLearnset, - [SPECIES_PINSIR_MEGA] = sPinsirTeachLearnset, - [SPECIES_GYARADOS_MEGA] = sGyaradosTeachLearnset, - [SPECIES_AERODACTYL_MEGA] = sAerodactylTeachLearnset, - [SPECIES_MEWTWO_MEGA_X] = sMewtwoTeachLearnset, - [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTeachLearnset, - [SPECIES_AMPHAROS_MEGA] = sAmpharosTeachLearnset, - [SPECIES_STEELIX_MEGA] = sSteelixTeachLearnset, - [SPECIES_SCIZOR_MEGA] = sScizorTeachLearnset, - [SPECIES_HERACROSS_MEGA] = sHeracrossTeachLearnset, - [SPECIES_HOUNDOOM_MEGA] = sHoundoomTeachLearnset, - [SPECIES_TYRANITAR_MEGA] = sTyranitarTeachLearnset, - [SPECIES_SCEPTILE_MEGA] = sSceptileTeachLearnset, - [SPECIES_BLAZIKEN_MEGA] = sBlazikenTeachLearnset, - [SPECIES_SWAMPERT_MEGA] = sSwampertTeachLearnset, - [SPECIES_GARDEVOIR_MEGA] = sGardevoirTeachLearnset, - [SPECIES_SABLEYE_MEGA] = sSableyeTeachLearnset, - [SPECIES_MAWILE_MEGA] = sMawileTeachLearnset, - [SPECIES_AGGRON_MEGA] = sAggronTeachLearnset, - [SPECIES_MEDICHAM_MEGA] = sMedichamTeachLearnset, - [SPECIES_MANECTRIC_MEGA] = sManectricTeachLearnset, - [SPECIES_SHARPEDO_MEGA] = sSharpedoTeachLearnset, - [SPECIES_CAMERUPT_MEGA] = sCameruptTeachLearnset, - [SPECIES_ALTARIA_MEGA] = sAltariaTeachLearnset, - [SPECIES_BANETTE_MEGA] = sBanetteTeachLearnset, - [SPECIES_ABSOL_MEGA] = sAbsolTeachLearnset, - [SPECIES_GLALIE_MEGA] = sGlalieTeachLearnset, - [SPECIES_SALAMENCE_MEGA] = sSalamenceTeachLearnset, - [SPECIES_METAGROSS_MEGA] = sMetagrossTeachLearnset, - [SPECIES_LATIAS_MEGA] = sLatiasTeachLearnset, - [SPECIES_LATIOS_MEGA] = sLatiosTeachLearnset, - [SPECIES_LOPUNNY_MEGA] = sLopunnyTeachLearnset, - [SPECIES_GARCHOMP_MEGA] = sGarchompTeachLearnset, - [SPECIES_LUCARIO_MEGA] = sLucarioTeachLearnset, - [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTeachLearnset, - [SPECIES_GALLADE_MEGA] = sGalladeTeachLearnset, - [SPECIES_AUDINO_MEGA] = sAudinoTeachLearnset, - [SPECIES_DIANCIE_MEGA] = sDiancieTeachLearnset, - // Special Mega + Primals - [SPECIES_RAYQUAZA_MEGA] = sRayquazaTeachLearnset, - [SPECIES_KYOGRE_PRIMAL] = sKyogreTeachLearnset, - [SPECIES_GROUDON_PRIMAL] = sGroudonTeachLearnset, - // Alolan Forms - [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTeachLearnset, - [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTeachLearnset, - [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTeachLearnset, - [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTeachLearnset, - [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTeachLearnset, - [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTeachLearnset, - [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTeachLearnset, - [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTeachLearnset, - [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTeachLearnset, - [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTeachLearnset, - [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTeachLearnset, - [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTeachLearnset, - [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTeachLearnset, - [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTeachLearnset, - [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTeachLearnset, - [SPECIES_MUK_ALOLAN] = sMukAlolanTeachLearnset, - [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTeachLearnset, - [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTeachLearnset, - // Galarian Forms - [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTeachLearnset, - [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTeachLearnset, - [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTeachLearnset, - [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTeachLearnset, - [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTeachLearnset, - [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTeachLearnset, - [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTeachLearnset, - [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTeachLearnset, - [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTeachLearnset, - [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTeachLearnset, - [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTeachLearnset, - [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTeachLearnset, - [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTeachLearnset, - [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTeachLearnset, - [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachLearnset, - [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachLearnset, - [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachLearnset, - [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachLearnset, - [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachLearnset, - // Misc Forms - // Cosplay Pikachu - [SPECIES_PIKACHU_COSPLAY] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_BELLE] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_POP_STAR] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_PH_D] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_LIBRE] = sPikachuTeachLearnset, - // Cap Pikachu - [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTeachLearnset, - [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTeachLearnset, - // Pichu - [SPECIES_PICHU_SPIKY_EARED] = sPichuTeachLearnset, -#endif - // Unown - [SPECIES_UNOWN_B] = sUnownTeachLearnset, - [SPECIES_UNOWN_C] = sUnownTeachLearnset, - [SPECIES_UNOWN_D] = sUnownTeachLearnset, - [SPECIES_UNOWN_E] = sUnownTeachLearnset, - [SPECIES_UNOWN_F] = sUnownTeachLearnset, - [SPECIES_UNOWN_G] = sUnownTeachLearnset, - [SPECIES_UNOWN_H] = sUnownTeachLearnset, - [SPECIES_UNOWN_I] = sUnownTeachLearnset, - [SPECIES_UNOWN_J] = sUnownTeachLearnset, - [SPECIES_UNOWN_K] = sUnownTeachLearnset, - [SPECIES_UNOWN_L] = sUnownTeachLearnset, - [SPECIES_UNOWN_M] = sUnownTeachLearnset, - [SPECIES_UNOWN_N] = sUnownTeachLearnset, - [SPECIES_UNOWN_O] = sUnownTeachLearnset, - [SPECIES_UNOWN_P] = sUnownTeachLearnset, - [SPECIES_UNOWN_Q] = sUnownTeachLearnset, - [SPECIES_UNOWN_R] = sUnownTeachLearnset, - [SPECIES_UNOWN_S] = sUnownTeachLearnset, - [SPECIES_UNOWN_T] = sUnownTeachLearnset, - [SPECIES_UNOWN_U] = sUnownTeachLearnset, - [SPECIES_UNOWN_V] = sUnownTeachLearnset, - [SPECIES_UNOWN_W] = sUnownTeachLearnset, - [SPECIES_UNOWN_X] = sUnownTeachLearnset, - [SPECIES_UNOWN_Y] = sUnownTeachLearnset, - [SPECIES_UNOWN_Z] = sUnownTeachLearnset, - [SPECIES_UNOWN_EMARK] = sUnownTeachLearnset, - [SPECIES_UNOWN_QMARK] = sUnownTeachLearnset, - // Castform - [SPECIES_CASTFORM_SUNNY] = sCastformTeachLearnset, - [SPECIES_CASTFORM_RAINY] = sCastformTeachLearnset, - [SPECIES_CASTFORM_SNOWY] = sCastformTeachLearnset, - // Deoxys - [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTeachLearnset, - [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTeachLearnset, - [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTeachLearnset, -#if P_NEW_POKEMON == TRUE - // Burmy - [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTeachLearnset, - [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTeachLearnset, - // Wormadam - [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTeachLearnset, - [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTeachLearnset, - // Cherrim - [SPECIES_CHERRIM_SUNSHINE] = sCherrimTeachLearnset, - // Shellos - [SPECIES_SHELLOS_EAST_SEA] = sShellosTeachLearnset, - // Gastrodon - [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTeachLearnset, - // Rotom - [SPECIES_ROTOM_HEAT] = sRotomTeachLearnset, - [SPECIES_ROTOM_WASH] = sRotomTeachLearnset, - [SPECIES_ROTOM_FROST] = sRotomTeachLearnset, - [SPECIES_ROTOM_FAN] = sRotomTeachLearnset, - [SPECIES_ROTOM_MOW] = sRotomTeachLearnset, - // Giratina - [SPECIES_GIRATINA_ORIGIN] = sGiratinaTeachLearnset, - // Shaymin - [SPECIES_SHAYMIN_SKY] = sShayminSkyTeachLearnset, - // Arceus - [SPECIES_ARCEUS_FIGHTING] = sArceusTeachLearnset, - [SPECIES_ARCEUS_FLYING] = sArceusTeachLearnset, - [SPECIES_ARCEUS_POISON] = sArceusTeachLearnset, - [SPECIES_ARCEUS_GROUND] = sArceusTeachLearnset, - [SPECIES_ARCEUS_ROCK] = sArceusTeachLearnset, - [SPECIES_ARCEUS_BUG] = sArceusTeachLearnset, - [SPECIES_ARCEUS_GHOST] = sArceusTeachLearnset, - [SPECIES_ARCEUS_STEEL] = sArceusTeachLearnset, - [SPECIES_ARCEUS_FIRE] = sArceusTeachLearnset, - [SPECIES_ARCEUS_WATER] = sArceusTeachLearnset, - [SPECIES_ARCEUS_GRASS] = sArceusTeachLearnset, - [SPECIES_ARCEUS_ELECTRIC] = sArceusTeachLearnset, - [SPECIES_ARCEUS_PSYCHIC] = sArceusTeachLearnset, - [SPECIES_ARCEUS_ICE] = sArceusTeachLearnset, - [SPECIES_ARCEUS_DRAGON] = sArceusTeachLearnset, - [SPECIES_ARCEUS_DARK] = sArceusTeachLearnset, - [SPECIES_ARCEUS_FAIRY] = sArceusTeachLearnset, - // Basculin - [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTeachLearnset, - // Darmanitan - [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachLearnset, - [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachLearnset, - // Deerling - [SPECIES_DEERLING_SUMMER] = sDeerlingTeachLearnset, - [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachLearnset, - [SPECIES_DEERLING_WINTER] = sDeerlingTeachLearnset, - // Sawsbuck - [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTeachLearnset, - [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTeachLearnset, - [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTeachLearnset, - // Therian Forms - [SPECIES_TORNADUS_THERIAN] = sTornadusTeachLearnset, - [SPECIES_THUNDURUS_THERIAN] = sThundurusTeachLearnset, - [SPECIES_LANDORUS_THERIAN] = sLandorusTeachLearnset, - // Kyurem - [SPECIES_KYUREM_WHITE] = sKyuremTeachLearnset, - [SPECIES_KYUREM_BLACK] = sKyuremTeachLearnset, - // Keldeo - [SPECIES_KELDEO_RESOLUTE] = sKeldeoTeachLearnset, - // Meloetta - [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTeachLearnset, - // Genesect - [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTeachLearnset, - [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTeachLearnset, - [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTeachLearnset, - [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTeachLearnset, - // Greninja - [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTeachLearnset, - [SPECIES_GRENINJA_ASH] = sGreninjaTeachLearnset, - // Vivillon - [SPECIES_VIVILLON_POLAR] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_TUNDRA] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_GARDEN] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_ELEGANT] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_MEADOW] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_MODERN] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_MARINE] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_SANDSTORM] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_RIVER] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_MONSOON] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_SAVANNA] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_SUN] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_OCEAN] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_JUNGLE] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_FANCY] = sVivillonTeachLearnset, - [SPECIES_VIVILLON_POKE_BALL] = sVivillonTeachLearnset, - // Flabébé - [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTeachLearnset, - [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTeachLearnset, - [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTeachLearnset, - [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTeachLearnset, - // Floette - [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTeachLearnset, - [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTeachLearnset, - [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTeachLearnset, - [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTeachLearnset, - [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTeachLearnset, - // Florges - [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTeachLearnset, - [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTeachLearnset, - [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTeachLearnset, - [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTeachLearnset, - //Furfrou - [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTeachLearnset, - [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTeachLearnset, - // Meowstic - [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTeachLearnset, - // Aegislash - [SPECIES_AEGISLASH_BLADE] = sAegislashTeachLearnset, - // Pumpkaboo - [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTeachLearnset, - [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTeachLearnset, - [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTeachLearnset, - // Gourgeist - [SPECIES_GOURGEIST_SMALL] = sGourgeistTeachLearnset, - [SPECIES_GOURGEIST_LARGE] = sGourgeistTeachLearnset, - [SPECIES_GOURGEIST_SUPER] = sGourgeistTeachLearnset, - // Xerneas - [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachLearnset, - // Zygarde - [SPECIES_ZYGARDE_10] = sZygardeTeachLearnset, - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachLearnset, - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachLearnset, - [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachLearnset, - // Hoopa - [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTeachLearnset, - // Oricorio - [SPECIES_ORICORIO_POM_POM] = sOricorioTeachLearnset, - [SPECIES_ORICORIO_PAU] = sOricorioTeachLearnset, - [SPECIES_ORICORIO_SENSU] = sOricorioTeachLearnset, - // Rockruff - [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTeachLearnset, - // Lycanroc - [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTeachLearnset, - [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTeachLearnset, - // Wishiwashi - [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTeachLearnset, - // Silvally - [SPECIES_SILVALLY_FIGHTING] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_FLYING] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_POISON] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_GROUND] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_ROCK] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_BUG] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_GHOST] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_STEEL] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_FIRE] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_WATER] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_GRASS] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_ICE] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_DRAGON] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_DARK] = sSilvallyTeachLearnset, - [SPECIES_SILVALLY_FAIRY] = sSilvallyTeachLearnset, - // Minior - [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTeachLearnset, - [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTeachLearnset, - [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTeachLearnset, - [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTeachLearnset, - [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTeachLearnset, - [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_RED] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_GREEN] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_BLUE] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTeachLearnset, - [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTeachLearnset, - // Mimikyu - [SPECIES_MIMIKYU_BUSTED] = sMimikyuTeachLearnset, - // Necrozma - [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTeachLearnset, - [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTeachLearnset, - [SPECIES_NECROZMA_ULTRA] = sNecrozmaTeachLearnset, - // Magearna - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTeachLearnset, - // Cramorant - [SPECIES_CRAMORANT_GULPING] = sCramorantTeachLearnset, - [SPECIES_CRAMORANT_GORGING] = sCramorantTeachLearnset, - // Toxtricity - [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTeachLearnset, - // Sinistea - [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachLearnset, - // Polteageist - [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachLearnset, - // Alcremie - [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachLearnset, - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachLearnset, - // Eiscue - [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachLearnset, - // Indeedee - [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTeachLearnset, - // Morpeko - [SPECIES_MORPEKO_HANGRY] = sMorpekoTeachLearnset, - // Zacian - [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTeachLearnset, - // Zamazenta - [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTeachLearnset, - // Eternatus - [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTeachLearnset, - // Urshifu - [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTeachLearnset, - // Zarude - [SPECIES_ZARUDE_DADA] = sZarudeTeachLearnset, - // Calyrex - [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTeachLearnset, - [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachLearnset, -#endif -}; diff --git a/src/data/pokemon/teachable_learnset_pointers.h b/src/data/pokemon/teachable_learnset_pointers.h new file mode 100644 index 0000000000..7d943561c1 --- /dev/null +++ b/src/data/pokemon/teachable_learnset_pointers.h @@ -0,0 +1,1279 @@ +const u16 *const gTeachableLearnsets[NUM_SPECIES] = +{ + [SPECIES_NONE] = sBulbasaurTeachableLearnset, + [SPECIES_BULBASAUR] = sBulbasaurTeachableLearnset, + [SPECIES_IVYSAUR] = sIvysaurTeachableLearnset, + [SPECIES_VENUSAUR] = sVenusaurTeachableLearnset, + [SPECIES_CHARMANDER] = sCharmanderTeachableLearnset, + [SPECIES_CHARMELEON] = sCharmeleonTeachableLearnset, + [SPECIES_CHARIZARD] = sCharizardTeachableLearnset, + [SPECIES_SQUIRTLE] = sSquirtleTeachableLearnset, + [SPECIES_WARTORTLE] = sWartortleTeachableLearnset, + [SPECIES_BLASTOISE] = sBlastoiseTeachableLearnset, + [SPECIES_CATERPIE] = sCaterpieTeachableLearnset, + [SPECIES_METAPOD] = sMetapodTeachableLearnset, + [SPECIES_BUTTERFREE] = sButterfreeTeachableLearnset, + [SPECIES_WEEDLE] = sWeedleTeachableLearnset, + [SPECIES_KAKUNA] = sKakunaTeachableLearnset, + [SPECIES_BEEDRILL] = sBeedrillTeachableLearnset, + [SPECIES_PIDGEY] = sPidgeyTeachableLearnset, + [SPECIES_PIDGEOTTO] = sPidgeottoTeachableLearnset, + [SPECIES_PIDGEOT] = sPidgeotTeachableLearnset, + [SPECIES_RATTATA] = sRattataTeachableLearnset, + [SPECIES_RATICATE] = sRaticateTeachableLearnset, + [SPECIES_SPEAROW] = sSpearowTeachableLearnset, + [SPECIES_FEAROW] = sFearowTeachableLearnset, + [SPECIES_EKANS] = sEkansTeachableLearnset, + [SPECIES_ARBOK] = sArbokTeachableLearnset, + [SPECIES_PIKACHU] = sPikachuTeachableLearnset, + [SPECIES_RAICHU] = sRaichuTeachableLearnset, + [SPECIES_SANDSHREW] = sSandshrewTeachableLearnset, + [SPECIES_SANDSLASH] = sSandslashTeachableLearnset, + [SPECIES_NIDORAN_F] = sNidoranFTeachableLearnset, + [SPECIES_NIDORINA] = sNidorinaTeachableLearnset, + [SPECIES_NIDOQUEEN] = sNidoqueenTeachableLearnset, + [SPECIES_NIDORAN_M] = sNidoranMTeachableLearnset, + [SPECIES_NIDORINO] = sNidorinoTeachableLearnset, + [SPECIES_NIDOKING] = sNidokingTeachableLearnset, + [SPECIES_CLEFAIRY] = sClefairyTeachableLearnset, + [SPECIES_CLEFABLE] = sClefableTeachableLearnset, + [SPECIES_VULPIX] = sVulpixTeachableLearnset, + [SPECIES_NINETALES] = sNinetalesTeachableLearnset, + [SPECIES_JIGGLYPUFF] = sJigglypuffTeachableLearnset, + [SPECIES_WIGGLYTUFF] = sWigglytuffTeachableLearnset, + [SPECIES_ZUBAT] = sZubatTeachableLearnset, + [SPECIES_GOLBAT] = sGolbatTeachableLearnset, + [SPECIES_ODDISH] = sOddishTeachableLearnset, + [SPECIES_GLOOM] = sGloomTeachableLearnset, + [SPECIES_VILEPLUME] = sVileplumeTeachableLearnset, + [SPECIES_PARAS] = sParasTeachableLearnset, + [SPECIES_PARASECT] = sParasectTeachableLearnset, + [SPECIES_VENONAT] = sVenonatTeachableLearnset, + [SPECIES_VENOMOTH] = sVenomothTeachableLearnset, + [SPECIES_DIGLETT] = sDiglettTeachableLearnset, + [SPECIES_DUGTRIO] = sDugtrioTeachableLearnset, + [SPECIES_MEOWTH] = sMeowthTeachableLearnset, + [SPECIES_PERSIAN] = sPersianTeachableLearnset, + [SPECIES_PSYDUCK] = sPsyduckTeachableLearnset, + [SPECIES_GOLDUCK] = sGolduckTeachableLearnset, + [SPECIES_MANKEY] = sMankeyTeachableLearnset, + [SPECIES_PRIMEAPE] = sPrimeapeTeachableLearnset, + [SPECIES_GROWLITHE] = sGrowlitheTeachableLearnset, + [SPECIES_ARCANINE] = sArcanineTeachableLearnset, + [SPECIES_POLIWAG] = sPoliwagTeachableLearnset, + [SPECIES_POLIWHIRL] = sPoliwhirlTeachableLearnset, + [SPECIES_POLIWRATH] = sPoliwrathTeachableLearnset, + [SPECIES_ABRA] = sAbraTeachableLearnset, + [SPECIES_KADABRA] = sKadabraTeachableLearnset, + [SPECIES_ALAKAZAM] = sAlakazamTeachableLearnset, + [SPECIES_MACHOP] = sMachopTeachableLearnset, + [SPECIES_MACHOKE] = sMachokeTeachableLearnset, + [SPECIES_MACHAMP] = sMachampTeachableLearnset, + [SPECIES_BELLSPROUT] = sBellsproutTeachableLearnset, + [SPECIES_WEEPINBELL] = sWeepinbellTeachableLearnset, + [SPECIES_VICTREEBEL] = sVictreebelTeachableLearnset, + [SPECIES_TENTACOOL] = sTentacoolTeachableLearnset, + [SPECIES_TENTACRUEL] = sTentacruelTeachableLearnset, + [SPECIES_GEODUDE] = sGeodudeTeachableLearnset, + [SPECIES_GRAVELER] = sGravelerTeachableLearnset, + [SPECIES_GOLEM] = sGolemTeachableLearnset, + [SPECIES_PONYTA] = sPonytaTeachableLearnset, + [SPECIES_RAPIDASH] = sRapidashTeachableLearnset, + [SPECIES_SLOWPOKE] = sSlowpokeTeachableLearnset, + [SPECIES_SLOWBRO] = sSlowbroTeachableLearnset, + [SPECIES_MAGNEMITE] = sMagnemiteTeachableLearnset, + [SPECIES_MAGNETON] = sMagnetonTeachableLearnset, + [SPECIES_FARFETCHD] = sFarfetchdTeachableLearnset, + [SPECIES_DODUO] = sDoduoTeachableLearnset, + [SPECIES_DODRIO] = sDodrioTeachableLearnset, + [SPECIES_SEEL] = sSeelTeachableLearnset, + [SPECIES_DEWGONG] = sDewgongTeachableLearnset, + [SPECIES_GRIMER] = sGrimerTeachableLearnset, + [SPECIES_MUK] = sMukTeachableLearnset, + [SPECIES_SHELLDER] = sShellderTeachableLearnset, + [SPECIES_CLOYSTER] = sCloysterTeachableLearnset, + [SPECIES_GASTLY] = sGastlyTeachableLearnset, + [SPECIES_HAUNTER] = sHaunterTeachableLearnset, + [SPECIES_GENGAR] = sGengarTeachableLearnset, + [SPECIES_ONIX] = sOnixTeachableLearnset, + [SPECIES_DROWZEE] = sDrowzeeTeachableLearnset, + [SPECIES_HYPNO] = sHypnoTeachableLearnset, + [SPECIES_KRABBY] = sKrabbyTeachableLearnset, + [SPECIES_KINGLER] = sKinglerTeachableLearnset, + [SPECIES_VOLTORB] = sVoltorbTeachableLearnset, + [SPECIES_ELECTRODE] = sElectrodeTeachableLearnset, + [SPECIES_EXEGGCUTE] = sExeggcuteTeachableLearnset, + [SPECIES_EXEGGUTOR] = sExeggutorTeachableLearnset, + [SPECIES_CUBONE] = sCuboneTeachableLearnset, + [SPECIES_MAROWAK] = sMarowakTeachableLearnset, + [SPECIES_HITMONLEE] = sHitmonleeTeachableLearnset, + [SPECIES_HITMONCHAN] = sHitmonchanTeachableLearnset, + [SPECIES_LICKITUNG] = sLickitungTeachableLearnset, + [SPECIES_KOFFING] = sKoffingTeachableLearnset, + [SPECIES_WEEZING] = sWeezingTeachableLearnset, + [SPECIES_RHYHORN] = sRhyhornTeachableLearnset, + [SPECIES_RHYDON] = sRhydonTeachableLearnset, + [SPECIES_CHANSEY] = sChanseyTeachableLearnset, + [SPECIES_TANGELA] = sTangelaTeachableLearnset, + [SPECIES_KANGASKHAN] = sKangaskhanTeachableLearnset, + [SPECIES_HORSEA] = sHorseaTeachableLearnset, + [SPECIES_SEADRA] = sSeadraTeachableLearnset, + [SPECIES_GOLDEEN] = sGoldeenTeachableLearnset, + [SPECIES_SEAKING] = sSeakingTeachableLearnset, + [SPECIES_STARYU] = sStaryuTeachableLearnset, + [SPECIES_STARMIE] = sStarmieTeachableLearnset, + [SPECIES_MR_MIME] = sMrMimeTeachableLearnset, + [SPECIES_SCYTHER] = sScytherTeachableLearnset, + [SPECIES_JYNX] = sJynxTeachableLearnset, + [SPECIES_ELECTABUZZ] = sElectabuzzTeachableLearnset, + [SPECIES_MAGMAR] = sMagmarTeachableLearnset, + [SPECIES_PINSIR] = sPinsirTeachableLearnset, + [SPECIES_TAUROS] = sTaurosTeachableLearnset, + [SPECIES_MAGIKARP] = sMagikarpTeachableLearnset, + [SPECIES_GYARADOS] = sGyaradosTeachableLearnset, + [SPECIES_LAPRAS] = sLaprasTeachableLearnset, + [SPECIES_DITTO] = sDittoTeachableLearnset, + [SPECIES_EEVEE] = sEeveeTeachableLearnset, + [SPECIES_VAPOREON] = sVaporeonTeachableLearnset, + [SPECIES_JOLTEON] = sJolteonTeachableLearnset, + [SPECIES_FLAREON] = sFlareonTeachableLearnset, + [SPECIES_PORYGON] = sPorygonTeachableLearnset, + [SPECIES_OMANYTE] = sOmanyteTeachableLearnset, + [SPECIES_OMASTAR] = sOmastarTeachableLearnset, + [SPECIES_KABUTO] = sKabutoTeachableLearnset, + [SPECIES_KABUTOPS] = sKabutopsTeachableLearnset, + [SPECIES_AERODACTYL] = sAerodactylTeachableLearnset, + [SPECIES_SNORLAX] = sSnorlaxTeachableLearnset, + [SPECIES_ARTICUNO] = sArticunoTeachableLearnset, + [SPECIES_ZAPDOS] = sZapdosTeachableLearnset, + [SPECIES_MOLTRES] = sMoltresTeachableLearnset, + [SPECIES_DRATINI] = sDratiniTeachableLearnset, + [SPECIES_DRAGONAIR] = sDragonairTeachableLearnset, + [SPECIES_DRAGONITE] = sDragoniteTeachableLearnset, + [SPECIES_MEWTWO] = sMewtwoTeachableLearnset, + [SPECIES_MEW] = sMewTeachableLearnset, + [SPECIES_CHIKORITA] = sChikoritaTeachableLearnset, + [SPECIES_BAYLEEF] = sBayleefTeachableLearnset, + [SPECIES_MEGANIUM] = sMeganiumTeachableLearnset, + [SPECIES_CYNDAQUIL] = sCyndaquilTeachableLearnset, + [SPECIES_QUILAVA] = sQuilavaTeachableLearnset, + [SPECIES_TYPHLOSION] = sTyphlosionTeachableLearnset, + [SPECIES_TOTODILE] = sTotodileTeachableLearnset, + [SPECIES_CROCONAW] = sCroconawTeachableLearnset, + [SPECIES_FERALIGATR] = sFeraligatrTeachableLearnset, + [SPECIES_SENTRET] = sSentretTeachableLearnset, + [SPECIES_FURRET] = sFurretTeachableLearnset, + [SPECIES_HOOTHOOT] = sHoothootTeachableLearnset, + [SPECIES_NOCTOWL] = sNoctowlTeachableLearnset, + [SPECIES_LEDYBA] = sLedybaTeachableLearnset, + [SPECIES_LEDIAN] = sLedianTeachableLearnset, + [SPECIES_SPINARAK] = sSpinarakTeachableLearnset, + [SPECIES_ARIADOS] = sAriadosTeachableLearnset, + [SPECIES_CROBAT] = sCrobatTeachableLearnset, + [SPECIES_CHINCHOU] = sChinchouTeachableLearnset, + [SPECIES_LANTURN] = sLanturnTeachableLearnset, + [SPECIES_PICHU] = sPichuTeachableLearnset, + [SPECIES_CLEFFA] = sCleffaTeachableLearnset, + [SPECIES_IGGLYBUFF] = sIgglybuffTeachableLearnset, + [SPECIES_TOGEPI] = sTogepiTeachableLearnset, + [SPECIES_TOGETIC] = sTogeticTeachableLearnset, + [SPECIES_NATU] = sNatuTeachableLearnset, + [SPECIES_XATU] = sXatuTeachableLearnset, + [SPECIES_MAREEP] = sMareepTeachableLearnset, + [SPECIES_FLAAFFY] = sFlaaffyTeachableLearnset, + [SPECIES_AMPHAROS] = sAmpharosTeachableLearnset, + [SPECIES_BELLOSSOM] = sBellossomTeachableLearnset, + [SPECIES_MARILL] = sMarillTeachableLearnset, + [SPECIES_AZUMARILL] = sAzumarillTeachableLearnset, + [SPECIES_SUDOWOODO] = sSudowoodoTeachableLearnset, + [SPECIES_POLITOED] = sPolitoedTeachableLearnset, + [SPECIES_HOPPIP] = sHoppipTeachableLearnset, + [SPECIES_SKIPLOOM] = sSkiploomTeachableLearnset, + [SPECIES_JUMPLUFF] = sJumpluffTeachableLearnset, + [SPECIES_AIPOM] = sAipomTeachableLearnset, + [SPECIES_SUNKERN] = sSunkernTeachableLearnset, + [SPECIES_SUNFLORA] = sSunfloraTeachableLearnset, + [SPECIES_YANMA] = sYanmaTeachableLearnset, + [SPECIES_WOOPER] = sWooperTeachableLearnset, + [SPECIES_QUAGSIRE] = sQuagsireTeachableLearnset, + [SPECIES_ESPEON] = sEspeonTeachableLearnset, + [SPECIES_UMBREON] = sUmbreonTeachableLearnset, + [SPECIES_MURKROW] = sMurkrowTeachableLearnset, + [SPECIES_SLOWKING] = sSlowkingTeachableLearnset, + [SPECIES_MISDREAVUS] = sMisdreavusTeachableLearnset, + [SPECIES_UNOWN] = sUnownTeachableLearnset, + [SPECIES_WOBBUFFET] = sWobbuffetTeachableLearnset, + [SPECIES_GIRAFARIG] = sGirafarigTeachableLearnset, + [SPECIES_PINECO] = sPinecoTeachableLearnset, + [SPECIES_FORRETRESS] = sForretressTeachableLearnset, + [SPECIES_DUNSPARCE] = sDunsparceTeachableLearnset, + [SPECIES_GLIGAR] = sGligarTeachableLearnset, + [SPECIES_STEELIX] = sSteelixTeachableLearnset, + [SPECIES_SNUBBULL] = sSnubbullTeachableLearnset, + [SPECIES_GRANBULL] = sGranbullTeachableLearnset, + [SPECIES_QWILFISH] = sQwilfishTeachableLearnset, + [SPECIES_SCIZOR] = sScizorTeachableLearnset, + [SPECIES_SHUCKLE] = sShuckleTeachableLearnset, + [SPECIES_HERACROSS] = sHeracrossTeachableLearnset, + [SPECIES_SNEASEL] = sSneaselTeachableLearnset, + [SPECIES_TEDDIURSA] = sTeddiursaTeachableLearnset, + [SPECIES_URSARING] = sUrsaringTeachableLearnset, + [SPECIES_SLUGMA] = sSlugmaTeachableLearnset, + [SPECIES_MAGCARGO] = sMagcargoTeachableLearnset, + [SPECIES_SWINUB] = sSwinubTeachableLearnset, + [SPECIES_PILOSWINE] = sPiloswineTeachableLearnset, + [SPECIES_CORSOLA] = sCorsolaTeachableLearnset, + [SPECIES_REMORAID] = sRemoraidTeachableLearnset, + [SPECIES_OCTILLERY] = sOctilleryTeachableLearnset, + [SPECIES_DELIBIRD] = sDelibirdTeachableLearnset, + [SPECIES_MANTINE] = sMantineTeachableLearnset, + [SPECIES_SKARMORY] = sSkarmoryTeachableLearnset, + [SPECIES_HOUNDOUR] = sHoundourTeachableLearnset, + [SPECIES_HOUNDOOM] = sHoundoomTeachableLearnset, + [SPECIES_KINGDRA] = sKingdraTeachableLearnset, + [SPECIES_PHANPY] = sPhanpyTeachableLearnset, + [SPECIES_DONPHAN] = sDonphanTeachableLearnset, + [SPECIES_PORYGON2] = sPorygon2TeachableLearnset, + [SPECIES_STANTLER] = sStantlerTeachableLearnset, + [SPECIES_SMEARGLE] = sSmeargleTeachableLearnset, + [SPECIES_TYROGUE] = sTyrogueTeachableLearnset, + [SPECIES_HITMONTOP] = sHitmontopTeachableLearnset, + [SPECIES_SMOOCHUM] = sSmoochumTeachableLearnset, + [SPECIES_ELEKID] = sElekidTeachableLearnset, + [SPECIES_MAGBY] = sMagbyTeachableLearnset, + [SPECIES_MILTANK] = sMiltankTeachableLearnset, + [SPECIES_BLISSEY] = sBlisseyTeachableLearnset, + [SPECIES_RAIKOU] = sRaikouTeachableLearnset, + [SPECIES_ENTEI] = sEnteiTeachableLearnset, + [SPECIES_SUICUNE] = sSuicuneTeachableLearnset, + [SPECIES_LARVITAR] = sLarvitarTeachableLearnset, + [SPECIES_PUPITAR] = sPupitarTeachableLearnset, + [SPECIES_TYRANITAR] = sTyranitarTeachableLearnset, + [SPECIES_LUGIA] = sLugiaTeachableLearnset, + [SPECIES_HO_OH] = sHoOhTeachableLearnset, + [SPECIES_CELEBI] = sCelebiTeachableLearnset, + [SPECIES_TREECKO] = sTreeckoTeachableLearnset, + [SPECIES_GROVYLE] = sGrovyleTeachableLearnset, + [SPECIES_SCEPTILE] = sSceptileTeachableLearnset, + [SPECIES_TORCHIC] = sTorchicTeachableLearnset, + [SPECIES_COMBUSKEN] = sCombuskenTeachableLearnset, + [SPECIES_BLAZIKEN] = sBlazikenTeachableLearnset, + [SPECIES_MUDKIP] = sMudkipTeachableLearnset, + [SPECIES_MARSHTOMP] = sMarshtompTeachableLearnset, + [SPECIES_SWAMPERT] = sSwampertTeachableLearnset, + [SPECIES_POOCHYENA] = sPoochyenaTeachableLearnset, + [SPECIES_MIGHTYENA] = sMightyenaTeachableLearnset, + [SPECIES_ZIGZAGOON] = sZigzagoonTeachableLearnset, + [SPECIES_LINOONE] = sLinooneTeachableLearnset, + [SPECIES_WURMPLE] = sWurmpleTeachableLearnset, + [SPECIES_SILCOON] = sSilcoonTeachableLearnset, + [SPECIES_BEAUTIFLY] = sBeautiflyTeachableLearnset, + [SPECIES_CASCOON] = sCascoonTeachableLearnset, + [SPECIES_DUSTOX] = sDustoxTeachableLearnset, + [SPECIES_LOTAD] = sLotadTeachableLearnset, + [SPECIES_LOMBRE] = sLombreTeachableLearnset, + [SPECIES_LUDICOLO] = sLudicoloTeachableLearnset, + [SPECIES_SEEDOT] = sSeedotTeachableLearnset, + [SPECIES_NUZLEAF] = sNuzleafTeachableLearnset, + [SPECIES_SHIFTRY] = sShiftryTeachableLearnset, + [SPECIES_NINCADA] = sNincadaTeachableLearnset, + [SPECIES_NINJASK] = sNinjaskTeachableLearnset, + [SPECIES_SHEDINJA] = sShedinjaTeachableLearnset, + [SPECIES_TAILLOW] = sTaillowTeachableLearnset, + [SPECIES_SWELLOW] = sSwellowTeachableLearnset, + [SPECIES_SHROOMISH] = sShroomishTeachableLearnset, + [SPECIES_BRELOOM] = sBreloomTeachableLearnset, + [SPECIES_SPINDA] = sSpindaTeachableLearnset, + [SPECIES_WINGULL] = sWingullTeachableLearnset, + [SPECIES_PELIPPER] = sPelipperTeachableLearnset, + [SPECIES_SURSKIT] = sSurskitTeachableLearnset, + [SPECIES_MASQUERAIN] = sMasquerainTeachableLearnset, + [SPECIES_WAILMER] = sWailmerTeachableLearnset, + [SPECIES_WAILORD] = sWailordTeachableLearnset, + [SPECIES_SKITTY] = sSkittyTeachableLearnset, + [SPECIES_DELCATTY] = sDelcattyTeachableLearnset, + [SPECIES_KECLEON] = sKecleonTeachableLearnset, + [SPECIES_BALTOY] = sBaltoyTeachableLearnset, + [SPECIES_CLAYDOL] = sClaydolTeachableLearnset, + [SPECIES_NOSEPASS] = sNosepassTeachableLearnset, + [SPECIES_TORKOAL] = sTorkoalTeachableLearnset, + [SPECIES_SABLEYE] = sSableyeTeachableLearnset, + [SPECIES_BARBOACH] = sBarboachTeachableLearnset, + [SPECIES_WHISCASH] = sWhiscashTeachableLearnset, + [SPECIES_LUVDISC] = sLuvdiscTeachableLearnset, + [SPECIES_CORPHISH] = sCorphishTeachableLearnset, + [SPECIES_CRAWDAUNT] = sCrawdauntTeachableLearnset, + [SPECIES_FEEBAS] = sFeebasTeachableLearnset, + [SPECIES_MILOTIC] = sMiloticTeachableLearnset, + [SPECIES_CARVANHA] = sCarvanhaTeachableLearnset, + [SPECIES_SHARPEDO] = sSharpedoTeachableLearnset, + [SPECIES_TRAPINCH] = sTrapinchTeachableLearnset, + [SPECIES_VIBRAVA] = sVibravaTeachableLearnset, + [SPECIES_FLYGON] = sFlygonTeachableLearnset, + [SPECIES_MAKUHITA] = sMakuhitaTeachableLearnset, + [SPECIES_HARIYAMA] = sHariyamaTeachableLearnset, + [SPECIES_ELECTRIKE] = sElectrikeTeachableLearnset, + [SPECIES_MANECTRIC] = sManectricTeachableLearnset, + [SPECIES_NUMEL] = sNumelTeachableLearnset, + [SPECIES_CAMERUPT] = sCameruptTeachableLearnset, + [SPECIES_SPHEAL] = sSphealTeachableLearnset, + [SPECIES_SEALEO] = sSealeoTeachableLearnset, + [SPECIES_WALREIN] = sWalreinTeachableLearnset, + [SPECIES_CACNEA] = sCacneaTeachableLearnset, + [SPECIES_CACTURNE] = sCacturneTeachableLearnset, + [SPECIES_SNORUNT] = sSnoruntTeachableLearnset, + [SPECIES_GLALIE] = sGlalieTeachableLearnset, + [SPECIES_LUNATONE] = sLunatoneTeachableLearnset, + [SPECIES_SOLROCK] = sSolrockTeachableLearnset, + [SPECIES_AZURILL] = sAzurillTeachableLearnset, + [SPECIES_SPOINK] = sSpoinkTeachableLearnset, + [SPECIES_GRUMPIG] = sGrumpigTeachableLearnset, + [SPECIES_PLUSLE] = sPlusleTeachableLearnset, + [SPECIES_MINUN] = sMinunTeachableLearnset, + [SPECIES_MAWILE] = sMawileTeachableLearnset, + [SPECIES_MEDITITE] = sMedititeTeachableLearnset, + [SPECIES_MEDICHAM] = sMedichamTeachableLearnset, + [SPECIES_SWABLU] = sSwabluTeachableLearnset, + [SPECIES_ALTARIA] = sAltariaTeachableLearnset, + [SPECIES_WYNAUT] = sWynautTeachableLearnset, + [SPECIES_DUSKULL] = sDuskullTeachableLearnset, + [SPECIES_DUSCLOPS] = sDusclopsTeachableLearnset, + [SPECIES_ROSELIA] = sRoseliaTeachableLearnset, + [SPECIES_SLAKOTH] = sSlakothTeachableLearnset, + [SPECIES_VIGOROTH] = sVigorothTeachableLearnset, + [SPECIES_SLAKING] = sSlakingTeachableLearnset, + [SPECIES_GULPIN] = sGulpinTeachableLearnset, + [SPECIES_SWALOT] = sSwalotTeachableLearnset, + [SPECIES_TROPIUS] = sTropiusTeachableLearnset, + [SPECIES_WHISMUR] = sWhismurTeachableLearnset, + [SPECIES_LOUDRED] = sLoudredTeachableLearnset, + [SPECIES_EXPLOUD] = sExploudTeachableLearnset, + [SPECIES_CLAMPERL] = sClamperlTeachableLearnset, + [SPECIES_HUNTAIL] = sHuntailTeachableLearnset, + [SPECIES_GOREBYSS] = sGorebyssTeachableLearnset, + [SPECIES_ABSOL] = sAbsolTeachableLearnset, + [SPECIES_SHUPPET] = sShuppetTeachableLearnset, + [SPECIES_BANETTE] = sBanetteTeachableLearnset, + [SPECIES_SEVIPER] = sSeviperTeachableLearnset, + [SPECIES_ZANGOOSE] = sZangooseTeachableLearnset, + [SPECIES_RELICANTH] = sRelicanthTeachableLearnset, + [SPECIES_ARON] = sAronTeachableLearnset, + [SPECIES_LAIRON] = sLaironTeachableLearnset, + [SPECIES_AGGRON] = sAggronTeachableLearnset, + [SPECIES_CASTFORM] = sCastformTeachableLearnset, + [SPECIES_VOLBEAT] = sVolbeatTeachableLearnset, + [SPECIES_ILLUMISE] = sIllumiseTeachableLearnset, + [SPECIES_LILEEP] = sLileepTeachableLearnset, + [SPECIES_CRADILY] = sCradilyTeachableLearnset, + [SPECIES_ANORITH] = sAnorithTeachableLearnset, + [SPECIES_ARMALDO] = sArmaldoTeachableLearnset, + [SPECIES_RALTS] = sRaltsTeachableLearnset, + [SPECIES_KIRLIA] = sKirliaTeachableLearnset, + [SPECIES_GARDEVOIR] = sGardevoirTeachableLearnset, + [SPECIES_BAGON] = sBagonTeachableLearnset, + [SPECIES_SHELGON] = sShelgonTeachableLearnset, + [SPECIES_SALAMENCE] = sSalamenceTeachableLearnset, + [SPECIES_BELDUM] = sBeldumTeachableLearnset, + [SPECIES_METANG] = sMetangTeachableLearnset, + [SPECIES_METAGROSS] = sMetagrossTeachableLearnset, + [SPECIES_REGIROCK] = sRegirockTeachableLearnset, + [SPECIES_REGICE] = sRegiceTeachableLearnset, + [SPECIES_REGISTEEL] = sRegisteelTeachableLearnset, + [SPECIES_KYOGRE] = sKyogreTeachableLearnset, + [SPECIES_GROUDON] = sGroudonTeachableLearnset, + [SPECIES_RAYQUAZA] = sRayquazaTeachableLearnset, + [SPECIES_LATIAS] = sLatiasTeachableLearnset, + [SPECIES_LATIOS] = sLatiosTeachableLearnset, + [SPECIES_JIRACHI] = sJirachiTeachableLearnset, + [SPECIES_DEOXYS] = sDeoxysTeachableLearnset, + [SPECIES_CHIMECHO] = sChimechoTeachableLearnset, +#if P_NEW_POKEMON == TRUE + [SPECIES_TURTWIG] = sTurtwigTeachableLearnset, + [SPECIES_GROTLE] = sGrotleTeachableLearnset, + [SPECIES_TORTERRA] = sTorterraTeachableLearnset, + [SPECIES_CHIMCHAR] = sChimcharTeachableLearnset, + [SPECIES_MONFERNO] = sMonfernoTeachableLearnset, + [SPECIES_INFERNAPE] = sInfernapeTeachableLearnset, + [SPECIES_PIPLUP] = sPiplupTeachableLearnset, + [SPECIES_PRINPLUP] = sPrinplupTeachableLearnset, + [SPECIES_EMPOLEON] = sEmpoleonTeachableLearnset, + [SPECIES_STARLY] = sStarlyTeachableLearnset, + [SPECIES_STARAVIA] = sStaraviaTeachableLearnset, + [SPECIES_STARAPTOR] = sStaraptorTeachableLearnset, + [SPECIES_BIDOOF] = sBidoofTeachableLearnset, + [SPECIES_BIBAREL] = sBibarelTeachableLearnset, + [SPECIES_KRICKETOT] = sKricketotTeachableLearnset, + [SPECIES_KRICKETUNE] = sKricketuneTeachableLearnset, + [SPECIES_SHINX] = sShinxTeachableLearnset, + [SPECIES_LUXIO] = sLuxioTeachableLearnset, + [SPECIES_LUXRAY] = sLuxrayTeachableLearnset, + [SPECIES_BUDEW] = sBudewTeachableLearnset, + [SPECIES_ROSERADE] = sRoseradeTeachableLearnset, + [SPECIES_CRANIDOS] = sCranidosTeachableLearnset, + [SPECIES_RAMPARDOS] = sRampardosTeachableLearnset, + [SPECIES_SHIELDON] = sShieldonTeachableLearnset, + [SPECIES_BASTIODON] = sBastiodonTeachableLearnset, + [SPECIES_BURMY] = sBurmyTeachableLearnset, + [SPECIES_WORMADAM] = sWormadamTeachableLearnset, + [SPECIES_MOTHIM] = sMothimTeachableLearnset, + [SPECIES_COMBEE] = sCombeeTeachableLearnset, + [SPECIES_VESPIQUEN] = sVespiquenTeachableLearnset, + [SPECIES_PACHIRISU] = sPachirisuTeachableLearnset, + [SPECIES_BUIZEL] = sBuizelTeachableLearnset, + [SPECIES_FLOATZEL] = sFloatzelTeachableLearnset, + [SPECIES_CHERUBI] = sCherubiTeachableLearnset, + [SPECIES_CHERRIM] = sCherrimTeachableLearnset, + [SPECIES_SHELLOS] = sShellosTeachableLearnset, + [SPECIES_GASTRODON] = sGastrodonTeachableLearnset, + [SPECIES_AMBIPOM] = sAmbipomTeachableLearnset, + [SPECIES_DRIFLOON] = sDrifloonTeachableLearnset, + [SPECIES_DRIFBLIM] = sDrifblimTeachableLearnset, + [SPECIES_BUNEARY] = sBunearyTeachableLearnset, + [SPECIES_LOPUNNY] = sLopunnyTeachableLearnset, + [SPECIES_MISMAGIUS] = sMismagiusTeachableLearnset, + [SPECIES_HONCHKROW] = sHonchkrowTeachableLearnset, + [SPECIES_GLAMEOW] = sGlameowTeachableLearnset, + [SPECIES_PURUGLY] = sPuruglyTeachableLearnset, + [SPECIES_CHINGLING] = sChinglingTeachableLearnset, + [SPECIES_STUNKY] = sStunkyTeachableLearnset, + [SPECIES_SKUNTANK] = sSkuntankTeachableLearnset, + [SPECIES_BRONZOR] = sBronzorTeachableLearnset, + [SPECIES_BRONZONG] = sBronzongTeachableLearnset, + [SPECIES_BONSLY] = sBonslyTeachableLearnset, + [SPECIES_MIME_JR] = sMimeJrTeachableLearnset, + [SPECIES_HAPPINY] = sHappinyTeachableLearnset, + [SPECIES_CHATOT] = sChatotTeachableLearnset, + [SPECIES_SPIRITOMB] = sSpiritombTeachableLearnset, + [SPECIES_GIBLE] = sGibleTeachableLearnset, + [SPECIES_GABITE] = sGabiteTeachableLearnset, + [SPECIES_GARCHOMP] = sGarchompTeachableLearnset, + [SPECIES_MUNCHLAX] = sMunchlaxTeachableLearnset, + [SPECIES_RIOLU] = sRioluTeachableLearnset, + [SPECIES_LUCARIO] = sLucarioTeachableLearnset, + [SPECIES_HIPPOPOTAS] = sHippopotasTeachableLearnset, + [SPECIES_HIPPOWDON] = sHippowdonTeachableLearnset, + [SPECIES_SKORUPI] = sSkorupiTeachableLearnset, + [SPECIES_DRAPION] = sDrapionTeachableLearnset, + [SPECIES_CROAGUNK] = sCroagunkTeachableLearnset, + [SPECIES_TOXICROAK] = sToxicroakTeachableLearnset, + [SPECIES_CARNIVINE] = sCarnivineTeachableLearnset, + [SPECIES_FINNEON] = sFinneonTeachableLearnset, + [SPECIES_LUMINEON] = sLumineonTeachableLearnset, + [SPECIES_MANTYKE] = sMantykeTeachableLearnset, + [SPECIES_SNOVER] = sSnoverTeachableLearnset, + [SPECIES_ABOMASNOW] = sAbomasnowTeachableLearnset, + [SPECIES_WEAVILE] = sWeavileTeachableLearnset, + [SPECIES_MAGNEZONE] = sMagnezoneTeachableLearnset, + [SPECIES_LICKILICKY] = sLickilickyTeachableLearnset, + [SPECIES_RHYPERIOR] = sRhyperiorTeachableLearnset, + [SPECIES_TANGROWTH] = sTangrowthTeachableLearnset, + [SPECIES_ELECTIVIRE] = sElectivireTeachableLearnset, + [SPECIES_MAGMORTAR] = sMagmortarTeachableLearnset, + [SPECIES_TOGEKISS] = sTogekissTeachableLearnset, + [SPECIES_YANMEGA] = sYanmegaTeachableLearnset, + [SPECIES_LEAFEON] = sLeafeonTeachableLearnset, + [SPECIES_GLACEON] = sGlaceonTeachableLearnset, + [SPECIES_GLISCOR] = sGliscorTeachableLearnset, + [SPECIES_MAMOSWINE] = sMamoswineTeachableLearnset, + [SPECIES_PORYGON_Z] = sPorygonZTeachableLearnset, + [SPECIES_GALLADE] = sGalladeTeachableLearnset, + [SPECIES_PROBOPASS] = sProbopassTeachableLearnset, + [SPECIES_DUSKNOIR] = sDusknoirTeachableLearnset, + [SPECIES_FROSLASS] = sFroslassTeachableLearnset, + [SPECIES_ROTOM] = sRotomTeachableLearnset, + [SPECIES_UXIE] = sUxieTeachableLearnset, + [SPECIES_MESPRIT] = sMespritTeachableLearnset, + [SPECIES_AZELF] = sAzelfTeachableLearnset, + [SPECIES_DIALGA] = sDialgaTeachableLearnset, + [SPECIES_PALKIA] = sPalkiaTeachableLearnset, + [SPECIES_HEATRAN] = sHeatranTeachableLearnset, + [SPECIES_REGIGIGAS] = sRegigigasTeachableLearnset, + [SPECIES_GIRATINA] = sGiratinaTeachableLearnset, + [SPECIES_CRESSELIA] = sCresseliaTeachableLearnset, + [SPECIES_PHIONE] = sPhioneTeachableLearnset, + [SPECIES_MANAPHY] = sManaphyTeachableLearnset, + [SPECIES_DARKRAI] = sDarkraiTeachableLearnset, + [SPECIES_SHAYMIN] = sShayminTeachableLearnset, + [SPECIES_ARCEUS] = sArceusTeachableLearnset, + [SPECIES_VICTINI] = sVictiniTeachableLearnset, + [SPECIES_SNIVY] = sSnivyTeachableLearnset, + [SPECIES_SERVINE] = sServineTeachableLearnset, + [SPECIES_SERPERIOR] = sSerperiorTeachableLearnset, + [SPECIES_TEPIG] = sTepigTeachableLearnset, + [SPECIES_PIGNITE] = sPigniteTeachableLearnset, + [SPECIES_EMBOAR] = sEmboarTeachableLearnset, + [SPECIES_OSHAWOTT] = sOshawottTeachableLearnset, + [SPECIES_DEWOTT] = sDewottTeachableLearnset, + [SPECIES_SAMUROTT] = sSamurottTeachableLearnset, + [SPECIES_PATRAT] = sPatratTeachableLearnset, + [SPECIES_WATCHOG] = sWatchogTeachableLearnset, + [SPECIES_LILLIPUP] = sLillipupTeachableLearnset, + [SPECIES_HERDIER] = sHerdierTeachableLearnset, + [SPECIES_STOUTLAND] = sStoutlandTeachableLearnset, + [SPECIES_PURRLOIN] = sPurrloinTeachableLearnset, + [SPECIES_LIEPARD] = sLiepardTeachableLearnset, + [SPECIES_PANSAGE] = sPansageTeachableLearnset, + [SPECIES_SIMISAGE] = sSimisageTeachableLearnset, + [SPECIES_PANSEAR] = sPansearTeachableLearnset, + [SPECIES_SIMISEAR] = sSimisearTeachableLearnset, + [SPECIES_PANPOUR] = sPanpourTeachableLearnset, + [SPECIES_SIMIPOUR] = sSimipourTeachableLearnset, + [SPECIES_MUNNA] = sMunnaTeachableLearnset, + [SPECIES_MUSHARNA] = sMusharnaTeachableLearnset, + [SPECIES_PIDOVE] = sPidoveTeachableLearnset, + [SPECIES_TRANQUILL] = sTranquillTeachableLearnset, + [SPECIES_UNFEZANT] = sUnfezantTeachableLearnset, + [SPECIES_BLITZLE] = sBlitzleTeachableLearnset, + [SPECIES_ZEBSTRIKA] = sZebstrikaTeachableLearnset, + [SPECIES_ROGGENROLA] = sRoggenrolaTeachableLearnset, + [SPECIES_BOLDORE] = sBoldoreTeachableLearnset, + [SPECIES_GIGALITH] = sGigalithTeachableLearnset, + [SPECIES_WOOBAT] = sWoobatTeachableLearnset, + [SPECIES_SWOOBAT] = sSwoobatTeachableLearnset, + [SPECIES_DRILBUR] = sDrilburTeachableLearnset, + [SPECIES_EXCADRILL] = sExcadrillTeachableLearnset, + [SPECIES_AUDINO] = sAudinoTeachableLearnset, + [SPECIES_TIMBURR] = sTimburrTeachableLearnset, + [SPECIES_GURDURR] = sGurdurrTeachableLearnset, + [SPECIES_CONKELDURR] = sConkeldurrTeachableLearnset, + [SPECIES_TYMPOLE] = sTympoleTeachableLearnset, + [SPECIES_PALPITOAD] = sPalpitoadTeachableLearnset, + [SPECIES_SEISMITOAD] = sSeismitoadTeachableLearnset, + [SPECIES_THROH] = sThrohTeachableLearnset, + [SPECIES_SAWK] = sSawkTeachableLearnset, + [SPECIES_SEWADDLE] = sSewaddleTeachableLearnset, + [SPECIES_SWADLOON] = sSwadloonTeachableLearnset, + [SPECIES_LEAVANNY] = sLeavannyTeachableLearnset, + [SPECIES_VENIPEDE] = sVenipedeTeachableLearnset, + [SPECIES_WHIRLIPEDE] = sWhirlipedeTeachableLearnset, + [SPECIES_SCOLIPEDE] = sScolipedeTeachableLearnset, + [SPECIES_COTTONEE] = sCottoneeTeachableLearnset, + [SPECIES_WHIMSICOTT] = sWhimsicottTeachableLearnset, + [SPECIES_PETILIL] = sPetililTeachableLearnset, + [SPECIES_LILLIGANT] = sLilligantTeachableLearnset, + [SPECIES_BASCULIN] = sBasculinTeachableLearnset, + [SPECIES_SANDILE] = sSandileTeachableLearnset, + [SPECIES_KROKOROK] = sKrokorokTeachableLearnset, + [SPECIES_KROOKODILE] = sKrookodileTeachableLearnset, + [SPECIES_DARUMAKA] = sDarumakaTeachableLearnset, + [SPECIES_DARMANITAN] = sDarmanitanTeachableLearnset, + [SPECIES_MARACTUS] = sMaractusTeachableLearnset, + [SPECIES_DWEBBLE] = sDwebbleTeachableLearnset, + [SPECIES_CRUSTLE] = sCrustleTeachableLearnset, + [SPECIES_SCRAGGY] = sScraggyTeachableLearnset, + [SPECIES_SCRAFTY] = sScraftyTeachableLearnset, + [SPECIES_SIGILYPH] = sSigilyphTeachableLearnset, + [SPECIES_YAMASK] = sYamaskTeachableLearnset, + [SPECIES_COFAGRIGUS] = sCofagrigusTeachableLearnset, + [SPECIES_TIRTOUGA] = sTirtougaTeachableLearnset, + [SPECIES_CARRACOSTA] = sCarracostaTeachableLearnset, + [SPECIES_ARCHEN] = sArchenTeachableLearnset, + [SPECIES_ARCHEOPS] = sArcheopsTeachableLearnset, + [SPECIES_TRUBBISH] = sTrubbishTeachableLearnset, + [SPECIES_GARBODOR] = sGarbodorTeachableLearnset, + [SPECIES_ZORUA] = sZoruaTeachableLearnset, + [SPECIES_ZOROARK] = sZoroarkTeachableLearnset, + [SPECIES_MINCCINO] = sMinccinoTeachableLearnset, + [SPECIES_CINCCINO] = sCinccinoTeachableLearnset, + [SPECIES_GOTHITA] = sGothitaTeachableLearnset, + [SPECIES_GOTHORITA] = sGothoritaTeachableLearnset, + [SPECIES_GOTHITELLE] = sGothitelleTeachableLearnset, + [SPECIES_SOLOSIS] = sSolosisTeachableLearnset, + [SPECIES_DUOSION] = sDuosionTeachableLearnset, + [SPECIES_REUNICLUS] = sReuniclusTeachableLearnset, + [SPECIES_DUCKLETT] = sDucklettTeachableLearnset, + [SPECIES_SWANNA] = sSwannaTeachableLearnset, + [SPECIES_VANILLITE] = sVanilliteTeachableLearnset, + [SPECIES_VANILLISH] = sVanillishTeachableLearnset, + [SPECIES_VANILLUXE] = sVanilluxeTeachableLearnset, + [SPECIES_DEERLING] = sDeerlingTeachableLearnset, + [SPECIES_SAWSBUCK] = sSawsbuckTeachableLearnset, + [SPECIES_EMOLGA] = sEmolgaTeachableLearnset, + [SPECIES_KARRABLAST] = sKarrablastTeachableLearnset, + [SPECIES_ESCAVALIER] = sEscavalierTeachableLearnset, + [SPECIES_FOONGUS] = sFoongusTeachableLearnset, + [SPECIES_AMOONGUSS] = sAmoongussTeachableLearnset, + [SPECIES_FRILLISH] = sFrillishTeachableLearnset, + [SPECIES_JELLICENT] = sJellicentTeachableLearnset, + [SPECIES_ALOMOMOLA] = sAlomomolaTeachableLearnset, + [SPECIES_JOLTIK] = sJoltikTeachableLearnset, + [SPECIES_GALVANTULA] = sGalvantulaTeachableLearnset, + [SPECIES_FERROSEED] = sFerroseedTeachableLearnset, + [SPECIES_FERROTHORN] = sFerrothornTeachableLearnset, + [SPECIES_KLINK] = sKlinkTeachableLearnset, + [SPECIES_KLANG] = sKlangTeachableLearnset, + [SPECIES_KLINKLANG] = sKlinklangTeachableLearnset, + [SPECIES_TYNAMO] = sTynamoTeachableLearnset, + [SPECIES_EELEKTRIK] = sEelektrikTeachableLearnset, + [SPECIES_EELEKTROSS] = sEelektrossTeachableLearnset, + [SPECIES_ELGYEM] = sElgyemTeachableLearnset, + [SPECIES_BEHEEYEM] = sBeheeyemTeachableLearnset, + [SPECIES_LITWICK] = sLitwickTeachableLearnset, + [SPECIES_LAMPENT] = sLampentTeachableLearnset, + [SPECIES_CHANDELURE] = sChandelureTeachableLearnset, + [SPECIES_AXEW] = sAxewTeachableLearnset, + [SPECIES_FRAXURE] = sFraxureTeachableLearnset, + [SPECIES_HAXORUS] = sHaxorusTeachableLearnset, + [SPECIES_CUBCHOO] = sCubchooTeachableLearnset, + [SPECIES_BEARTIC] = sBearticTeachableLearnset, + [SPECIES_CRYOGONAL] = sCryogonalTeachableLearnset, + [SPECIES_SHELMET] = sShelmetTeachableLearnset, + [SPECIES_ACCELGOR] = sAccelgorTeachableLearnset, + [SPECIES_STUNFISK] = sStunfiskTeachableLearnset, + [SPECIES_MIENFOO] = sMienfooTeachableLearnset, + [SPECIES_MIENSHAO] = sMienshaoTeachableLearnset, + [SPECIES_DRUDDIGON] = sDruddigonTeachableLearnset, + [SPECIES_GOLETT] = sGolettTeachableLearnset, + [SPECIES_GOLURK] = sGolurkTeachableLearnset, + [SPECIES_PAWNIARD] = sPawniardTeachableLearnset, + [SPECIES_BISHARP] = sBisharpTeachableLearnset, + [SPECIES_BOUFFALANT] = sBouffalantTeachableLearnset, + [SPECIES_RUFFLET] = sRuffletTeachableLearnset, + [SPECIES_BRAVIARY] = sBraviaryTeachableLearnset, + [SPECIES_VULLABY] = sVullabyTeachableLearnset, + [SPECIES_MANDIBUZZ] = sMandibuzzTeachableLearnset, + [SPECIES_HEATMOR] = sHeatmorTeachableLearnset, + [SPECIES_DURANT] = sDurantTeachableLearnset, + [SPECIES_DEINO] = sDeinoTeachableLearnset, + [SPECIES_ZWEILOUS] = sZweilousTeachableLearnset, + [SPECIES_HYDREIGON] = sHydreigonTeachableLearnset, + [SPECIES_LARVESTA] = sLarvestaTeachableLearnset, + [SPECIES_VOLCARONA] = sVolcaronaTeachableLearnset, + [SPECIES_COBALION] = sCobalionTeachableLearnset, + [SPECIES_TERRAKION] = sTerrakionTeachableLearnset, + [SPECIES_VIRIZION] = sVirizionTeachableLearnset, + [SPECIES_TORNADUS] = sTornadusTeachableLearnset, + [SPECIES_THUNDURUS] = sThundurusTeachableLearnset, + [SPECIES_RESHIRAM] = sReshiramTeachableLearnset, + [SPECIES_ZEKROM] = sZekromTeachableLearnset, + [SPECIES_LANDORUS] = sLandorusTeachableLearnset, + [SPECIES_KYUREM] = sKyuremTeachableLearnset, + [SPECIES_KELDEO] = sKeldeoTeachableLearnset, + [SPECIES_MELOETTA] = sMeloettaTeachableLearnset, + [SPECIES_GENESECT] = sGenesectTeachableLearnset, + [SPECIES_CHESPIN] = sChespinTeachableLearnset, + [SPECIES_QUILLADIN] = sQuilladinTeachableLearnset, + [SPECIES_CHESNAUGHT] = sChesnaughtTeachableLearnset, + [SPECIES_FENNEKIN] = sFennekinTeachableLearnset, + [SPECIES_BRAIXEN] = sBraixenTeachableLearnset, + [SPECIES_DELPHOX] = sDelphoxTeachableLearnset, + [SPECIES_FROAKIE] = sFroakieTeachableLearnset, + [SPECIES_FROGADIER] = sFrogadierTeachableLearnset, + [SPECIES_GRENINJA] = sGreninjaTeachableLearnset, + [SPECIES_BUNNELBY] = sBunnelbyTeachableLearnset, + [SPECIES_DIGGERSBY] = sDiggersbyTeachableLearnset, + [SPECIES_FLETCHLING] = sFletchlingTeachableLearnset, + [SPECIES_FLETCHINDER] = sFletchinderTeachableLearnset, + [SPECIES_TALONFLAME] = sTalonflameTeachableLearnset, + [SPECIES_SCATTERBUG] = sScatterbugTeachableLearnset, + [SPECIES_SPEWPA] = sSpewpaTeachableLearnset, + [SPECIES_VIVILLON] = sVivillonTeachableLearnset, + [SPECIES_LITLEO] = sLitleoTeachableLearnset, + [SPECIES_PYROAR] = sPyroarTeachableLearnset, + [SPECIES_FLABEBE] = sFlabebeTeachableLearnset, + [SPECIES_FLOETTE] = sFloetteTeachableLearnset, + [SPECIES_FLORGES] = sFlorgesTeachableLearnset, + [SPECIES_SKIDDO] = sSkiddoTeachableLearnset, + [SPECIES_GOGOAT] = sGogoatTeachableLearnset, + [SPECIES_PANCHAM] = sPanchamTeachableLearnset, + [SPECIES_PANGORO] = sPangoroTeachableLearnset, + [SPECIES_FURFROU] = sFurfrouTeachableLearnset, + [SPECIES_ESPURR] = sEspurrTeachableLearnset, + [SPECIES_MEOWSTIC] = sMeowsticTeachableLearnset, + [SPECIES_HONEDGE] = sHonedgeTeachableLearnset, + [SPECIES_DOUBLADE] = sDoubladeTeachableLearnset, + [SPECIES_AEGISLASH] = sAegislashTeachableLearnset, + [SPECIES_SPRITZEE] = sSpritzeeTeachableLearnset, + [SPECIES_AROMATISSE] = sAromatisseTeachableLearnset, + [SPECIES_SWIRLIX] = sSwirlixTeachableLearnset, + [SPECIES_SLURPUFF] = sSlurpuffTeachableLearnset, + [SPECIES_INKAY] = sInkayTeachableLearnset, + [SPECIES_MALAMAR] = sMalamarTeachableLearnset, + [SPECIES_BINACLE] = sBinacleTeachableLearnset, + [SPECIES_BARBARACLE] = sBarbaracleTeachableLearnset, + [SPECIES_SKRELP] = sSkrelpTeachableLearnset, + [SPECIES_DRAGALGE] = sDragalgeTeachableLearnset, + [SPECIES_CLAUNCHER] = sClauncherTeachableLearnset, + [SPECIES_CLAWITZER] = sClawitzerTeachableLearnset, + [SPECIES_HELIOPTILE] = sHelioptileTeachableLearnset, + [SPECIES_HELIOLISK] = sHelioliskTeachableLearnset, + [SPECIES_TYRUNT] = sTyruntTeachableLearnset, + [SPECIES_TYRANTRUM] = sTyrantrumTeachableLearnset, + [SPECIES_AMAURA] = sAmauraTeachableLearnset, + [SPECIES_AURORUS] = sAurorusTeachableLearnset, + [SPECIES_SYLVEON] = sSylveonTeachableLearnset, + [SPECIES_HAWLUCHA] = sHawluchaTeachableLearnset, + [SPECIES_DEDENNE] = sDedenneTeachableLearnset, + [SPECIES_CARBINK] = sCarbinkTeachableLearnset, + [SPECIES_GOOMY] = sGoomyTeachableLearnset, + [SPECIES_SLIGGOO] = sSliggooTeachableLearnset, + [SPECIES_GOODRA] = sGoodraTeachableLearnset, + [SPECIES_KLEFKI] = sKlefkiTeachableLearnset, + [SPECIES_PHANTUMP] = sPhantumpTeachableLearnset, + [SPECIES_TREVENANT] = sTrevenantTeachableLearnset, + [SPECIES_PUMPKABOO] = sPumpkabooTeachableLearnset, + [SPECIES_GOURGEIST] = sGourgeistTeachableLearnset, + [SPECIES_BERGMITE] = sBergmiteTeachableLearnset, + [SPECIES_AVALUGG] = sAvaluggTeachableLearnset, + [SPECIES_NOIBAT] = sNoibatTeachableLearnset, + [SPECIES_NOIVERN] = sNoivernTeachableLearnset, + [SPECIES_XERNEAS] = sXerneasTeachableLearnset, + [SPECIES_YVELTAL] = sYveltalTeachableLearnset, + [SPECIES_ZYGARDE] = sZygardeTeachableLearnset, + [SPECIES_DIANCIE] = sDiancieTeachableLearnset, + [SPECIES_HOOPA] = sHoopaTeachableLearnset, + [SPECIES_VOLCANION] = sVolcanionTeachableLearnset, + [SPECIES_ROWLET] = sRowletTeachableLearnset, + [SPECIES_DARTRIX] = sDartrixTeachableLearnset, + [SPECIES_DECIDUEYE] = sDecidueyeTeachableLearnset, + [SPECIES_LITTEN] = sLittenTeachableLearnset, + [SPECIES_TORRACAT] = sTorracatTeachableLearnset, + [SPECIES_INCINEROAR] = sIncineroarTeachableLearnset, + [SPECIES_POPPLIO] = sPopplioTeachableLearnset, + [SPECIES_BRIONNE] = sBrionneTeachableLearnset, + [SPECIES_PRIMARINA] = sPrimarinaTeachableLearnset, + [SPECIES_PIKIPEK] = sPikipekTeachableLearnset, + [SPECIES_TRUMBEAK] = sTrumbeakTeachableLearnset, + [SPECIES_TOUCANNON] = sToucannonTeachableLearnset, + [SPECIES_YUNGOOS] = sYungoosTeachableLearnset, + [SPECIES_GUMSHOOS] = sGumshoosTeachableLearnset, + [SPECIES_GRUBBIN] = sGrubbinTeachableLearnset, + [SPECIES_CHARJABUG] = sCharjabugTeachableLearnset, + [SPECIES_VIKAVOLT] = sVikavoltTeachableLearnset, + [SPECIES_CRABRAWLER] = sCrabrawlerTeachableLearnset, + [SPECIES_CRABOMINABLE] = sCrabominableTeachableLearnset, + [SPECIES_ORICORIO] = sOricorioTeachableLearnset, + [SPECIES_CUTIEFLY] = sCutieflyTeachableLearnset, + [SPECIES_RIBOMBEE] = sRibombeeTeachableLearnset, + [SPECIES_ROCKRUFF] = sRockruffTeachableLearnset, + [SPECIES_LYCANROC] = sLycanrocTeachableLearnset, + [SPECIES_WISHIWASHI] = sWishiwashiTeachableLearnset, + [SPECIES_MAREANIE] = sMareanieTeachableLearnset, + [SPECIES_TOXAPEX] = sToxapexTeachableLearnset, + [SPECIES_MUDBRAY] = sMudbrayTeachableLearnset, + [SPECIES_MUDSDALE] = sMudsdaleTeachableLearnset, + [SPECIES_DEWPIDER] = sDewpiderTeachableLearnset, + [SPECIES_ARAQUANID] = sAraquanidTeachableLearnset, + [SPECIES_FOMANTIS] = sFomantisTeachableLearnset, + [SPECIES_LURANTIS] = sLurantisTeachableLearnset, + [SPECIES_MORELULL] = sMorelullTeachableLearnset, + [SPECIES_SHIINOTIC] = sShiinoticTeachableLearnset, + [SPECIES_SALANDIT] = sSalanditTeachableLearnset, + [SPECIES_SALAZZLE] = sSalazzleTeachableLearnset, + [SPECIES_STUFFUL] = sStuffulTeachableLearnset, + [SPECIES_BEWEAR] = sBewearTeachableLearnset, + [SPECIES_BOUNSWEET] = sBounsweetTeachableLearnset, + [SPECIES_STEENEE] = sSteeneeTeachableLearnset, + [SPECIES_TSAREENA] = sTsareenaTeachableLearnset, + [SPECIES_COMFEY] = sComfeyTeachableLearnset, + [SPECIES_ORANGURU] = sOranguruTeachableLearnset, + [SPECIES_PASSIMIAN] = sPassimianTeachableLearnset, + [SPECIES_WIMPOD] = sWimpodTeachableLearnset, + [SPECIES_GOLISOPOD] = sGolisopodTeachableLearnset, + [SPECIES_SANDYGAST] = sSandygastTeachableLearnset, + [SPECIES_PALOSSAND] = sPalossandTeachableLearnset, + [SPECIES_PYUKUMUKU] = sPyukumukuTeachableLearnset, + [SPECIES_TYPE_NULL] = sTypeNullTeachableLearnset, + [SPECIES_SILVALLY] = sSilvallyTeachableLearnset, + [SPECIES_MINIOR] = sMiniorTeachableLearnset, + [SPECIES_KOMALA] = sKomalaTeachableLearnset, + [SPECIES_TURTONATOR] = sTurtonatorTeachableLearnset, + [SPECIES_TOGEDEMARU] = sTogedemaruTeachableLearnset, + [SPECIES_MIMIKYU] = sMimikyuTeachableLearnset, + [SPECIES_BRUXISH] = sBruxishTeachableLearnset, + [SPECIES_DRAMPA] = sDrampaTeachableLearnset, + [SPECIES_DHELMISE] = sDhelmiseTeachableLearnset, + [SPECIES_JANGMO_O] = sJangmooTeachableLearnset, + [SPECIES_HAKAMO_O] = sHakamooTeachableLearnset, + [SPECIES_KOMMO_O] = sKommooTeachableLearnset, + [SPECIES_TAPU_KOKO] = sTapuKokoTeachableLearnset, + [SPECIES_TAPU_LELE] = sTapuLeleTeachableLearnset, + [SPECIES_TAPU_BULU] = sTapuBuluTeachableLearnset, + [SPECIES_TAPU_FINI] = sTapuFiniTeachableLearnset, + [SPECIES_COSMOG] = sCosmogTeachableLearnset, + [SPECIES_COSMOEM] = sCosmoemTeachableLearnset, + [SPECIES_SOLGALEO] = sSolgaleoTeachableLearnset, + [SPECIES_LUNALA] = sLunalaTeachableLearnset, + [SPECIES_NIHILEGO] = sNihilegoTeachableLearnset, + [SPECIES_BUZZWOLE] = sBuzzwoleTeachableLearnset, + [SPECIES_PHEROMOSA] = sPheromosaTeachableLearnset, + [SPECIES_XURKITREE] = sXurkitreeTeachableLearnset, + [SPECIES_CELESTEELA] = sCelesteelaTeachableLearnset, + [SPECIES_KARTANA] = sKartanaTeachableLearnset, + [SPECIES_GUZZLORD] = sGuzzlordTeachableLearnset, + [SPECIES_NECROZMA] = sNecrozmaTeachableLearnset, + [SPECIES_MAGEARNA] = sMagearnaTeachableLearnset, + [SPECIES_MARSHADOW] = sMarshadowTeachableLearnset, + [SPECIES_POIPOLE] = sPoipoleTeachableLearnset, + [SPECIES_NAGANADEL] = sNaganadelTeachableLearnset, + [SPECIES_STAKATAKA] = sStakatakaTeachableLearnset, + [SPECIES_BLACEPHALON] = sBlacephalonTeachableLearnset, + [SPECIES_ZERAORA] = sZeraoraTeachableLearnset, + [SPECIES_MELTAN] = sMeltanTeachableLearnset, + [SPECIES_MELMETAL] = sMelmetalTeachableLearnset, + [SPECIES_GROOKEY] = sGrookeyTeachableLearnset, + [SPECIES_THWACKEY] = sThwackeyTeachableLearnset, + [SPECIES_RILLABOOM] = sRillaboomTeachableLearnset, + [SPECIES_SCORBUNNY] = sScorbunnyTeachableLearnset, + [SPECIES_RABOOT] = sRabootTeachableLearnset, + [SPECIES_CINDERACE] = sCinderaceTeachableLearnset, + [SPECIES_SOBBLE] = sSobbleTeachableLearnset, + [SPECIES_DRIZZILE] = sDrizzileTeachableLearnset, + [SPECIES_INTELEON] = sInteleonTeachableLearnset, + [SPECIES_SKWOVET] = sSkwovetTeachableLearnset, + [SPECIES_GREEDENT] = sGreedentTeachableLearnset, + [SPECIES_ROOKIDEE] = sRookideeTeachableLearnset, + [SPECIES_CORVISQUIRE] = sCorvisquireTeachableLearnset, + [SPECIES_CORVIKNIGHT] = sCorviknightTeachableLearnset, + [SPECIES_BLIPBUG] = sBlipbugTeachableLearnset, + [SPECIES_DOTTLER] = sDottlerTeachableLearnset, + [SPECIES_ORBEETLE] = sOrbeetleTeachableLearnset, + [SPECIES_NICKIT] = sNickitTeachableLearnset, + [SPECIES_THIEVUL] = sThievulTeachableLearnset, + [SPECIES_GOSSIFLEUR] = sGossifleurTeachableLearnset, + [SPECIES_ELDEGOSS] = sEldegossTeachableLearnset, + [SPECIES_WOOLOO] = sWoolooTeachableLearnset, + [SPECIES_DUBWOOL] = sDubwoolTeachableLearnset, + [SPECIES_CHEWTLE] = sChewtleTeachableLearnset, + [SPECIES_DREDNAW] = sDrednawTeachableLearnset, + [SPECIES_YAMPER] = sYamperTeachableLearnset, + [SPECIES_BOLTUND] = sBoltundTeachableLearnset, + [SPECIES_ROLYCOLY] = sRolycolyTeachableLearnset, + [SPECIES_CARKOL] = sCarkolTeachableLearnset, + [SPECIES_COALOSSAL] = sCoalossalTeachableLearnset, + [SPECIES_APPLIN] = sApplinTeachableLearnset, + [SPECIES_FLAPPLE] = sFlappleTeachableLearnset, + [SPECIES_APPLETUN] = sAppletunTeachableLearnset, + [SPECIES_SILICOBRA] = sSilicobraTeachableLearnset, + [SPECIES_SANDACONDA] = sSandacondaTeachableLearnset, + [SPECIES_CRAMORANT] = sCramorantTeachableLearnset, + [SPECIES_ARROKUDA] = sArrokudaTeachableLearnset, + [SPECIES_BARRASKEWDA] = sBarraskewdaTeachableLearnset, + [SPECIES_TOXEL] = sToxelTeachableLearnset, + [SPECIES_TOXTRICITY] = sToxtricityTeachableLearnset, + [SPECIES_SIZZLIPEDE] = sSizzlipedeTeachableLearnset, + [SPECIES_CENTISKORCH] = sCentiskorchTeachableLearnset, + [SPECIES_CLOBBOPUS] = sClobbopusTeachableLearnset, + [SPECIES_GRAPPLOCT] = sGrapploctTeachableLearnset, + [SPECIES_SINISTEA] = sSinisteaTeachableLearnset, + [SPECIES_POLTEAGEIST] = sPolteageistTeachableLearnset, + [SPECIES_HATENNA] = sHatennaTeachableLearnset, + [SPECIES_HATTREM] = sHattremTeachableLearnset, + [SPECIES_HATTERENE] = sHattereneTeachableLearnset, + [SPECIES_IMPIDIMP] = sImpidimpTeachableLearnset, + [SPECIES_MORGREM] = sMorgremTeachableLearnset, + [SPECIES_GRIMMSNARL] = sGrimmsnarlTeachableLearnset, + [SPECIES_OBSTAGOON] = sObstagoonTeachableLearnset, + [SPECIES_PERRSERKER] = sPerrserkerTeachableLearnset, + [SPECIES_CURSOLA] = sCursolaTeachableLearnset, + [SPECIES_SIRFETCHD] = sSirfetchdTeachableLearnset, + [SPECIES_MR_RIME] = sMrRimeTeachableLearnset, + [SPECIES_RUNERIGUS] = sRunerigusTeachableLearnset, + [SPECIES_MILCERY] = sMilceryTeachableLearnset, + [SPECIES_ALCREMIE] = sAlcremieTeachableLearnset, + [SPECIES_FALINKS] = sFalinksTeachableLearnset, + [SPECIES_PINCURCHIN] = sPincurchinTeachableLearnset, + [SPECIES_SNOM] = sSnomTeachableLearnset, + [SPECIES_FROSMOTH] = sFrosmothTeachableLearnset, + [SPECIES_STONJOURNER] = sStonjournerTeachableLearnset, + [SPECIES_EISCUE] = sEiscueTeachableLearnset, + [SPECIES_INDEEDEE] = sIndeedeeTeachableLearnset, + [SPECIES_MORPEKO] = sMorpekoTeachableLearnset, + [SPECIES_CUFANT] = sCufantTeachableLearnset, + [SPECIES_COPPERAJAH] = sCopperajahTeachableLearnset, + [SPECIES_DRACOZOLT] = sDracozoltTeachableLearnset, + [SPECIES_ARCTOZOLT] = sArctozoltTeachableLearnset, + [SPECIES_DRACOVISH] = sDracovishTeachableLearnset, + [SPECIES_ARCTOVISH] = sArctovishTeachableLearnset, + [SPECIES_DURALUDON] = sDuraludonTeachableLearnset, + [SPECIES_DREEPY] = sDreepyTeachableLearnset, + [SPECIES_DRAKLOAK] = sDrakloakTeachableLearnset, + [SPECIES_DRAGAPULT] = sDragapultTeachableLearnset, + [SPECIES_ZACIAN] = sZacianTeachableLearnset, + [SPECIES_ZAMAZENTA] = sZamazentaTeachableLearnset, + [SPECIES_ETERNATUS] = sEternatusTeachableLearnset, + [SPECIES_KUBFU] = sKubfuTeachableLearnset, + [SPECIES_URSHIFU] = sUrshifuTeachableLearnset, + [SPECIES_ZARUDE] = sZarudeTeachableLearnset, + [SPECIES_REGIELEKI] = sRegielekiTeachableLearnset, + [SPECIES_REGIDRAGO] = sRegidragoTeachableLearnset, + [SPECIES_GLASTRIER] = sGlastrierTeachableLearnset, + [SPECIES_SPECTRIER] = sSpectrierTeachableLearnset, + [SPECIES_CALYREX] = sCalyrexTeachableLearnset, + // Megas + [SPECIES_VENUSAUR_MEGA] = sVenusaurTeachableLearnset, + [SPECIES_CHARIZARD_MEGA_X] = sCharizardTeachableLearnset, + [SPECIES_CHARIZARD_MEGA_Y] = sCharizardTeachableLearnset, + [SPECIES_BLASTOISE_MEGA] = sBlastoiseTeachableLearnset, + [SPECIES_BEEDRILL_MEGA] = sBeedrillTeachableLearnset, + [SPECIES_PIDGEOT_MEGA] = sPidgeotTeachableLearnset, + [SPECIES_ALAKAZAM_MEGA] = sAlakazamTeachableLearnset, + [SPECIES_SLOWBRO_MEGA] = sSlowbroTeachableLearnset, + [SPECIES_GENGAR_MEGA] = sGengarTeachableLearnset, + [SPECIES_KANGASKHAN_MEGA] = sKangaskhanTeachableLearnset, + [SPECIES_PINSIR_MEGA] = sPinsirTeachableLearnset, + [SPECIES_GYARADOS_MEGA] = sGyaradosTeachableLearnset, + [SPECIES_AERODACTYL_MEGA] = sAerodactylTeachableLearnset, + [SPECIES_MEWTWO_MEGA_X] = sMewtwoTeachableLearnset, + [SPECIES_MEWTWO_MEGA_Y] = sMewtwoTeachableLearnset, + [SPECIES_AMPHAROS_MEGA] = sAmpharosTeachableLearnset, + [SPECIES_STEELIX_MEGA] = sSteelixTeachableLearnset, + [SPECIES_SCIZOR_MEGA] = sScizorTeachableLearnset, + [SPECIES_HERACROSS_MEGA] = sHeracrossTeachableLearnset, + [SPECIES_HOUNDOOM_MEGA] = sHoundoomTeachableLearnset, + [SPECIES_TYRANITAR_MEGA] = sTyranitarTeachableLearnset, + [SPECIES_SCEPTILE_MEGA] = sSceptileTeachableLearnset, + [SPECIES_BLAZIKEN_MEGA] = sBlazikenTeachableLearnset, + [SPECIES_SWAMPERT_MEGA] = sSwampertTeachableLearnset, + [SPECIES_GARDEVOIR_MEGA] = sGardevoirTeachableLearnset, + [SPECIES_SABLEYE_MEGA] = sSableyeTeachableLearnset, + [SPECIES_MAWILE_MEGA] = sMawileTeachableLearnset, + [SPECIES_AGGRON_MEGA] = sAggronTeachableLearnset, + [SPECIES_MEDICHAM_MEGA] = sMedichamTeachableLearnset, + [SPECIES_MANECTRIC_MEGA] = sManectricTeachableLearnset, + [SPECIES_SHARPEDO_MEGA] = sSharpedoTeachableLearnset, + [SPECIES_CAMERUPT_MEGA] = sCameruptTeachableLearnset, + [SPECIES_ALTARIA_MEGA] = sAltariaTeachableLearnset, + [SPECIES_BANETTE_MEGA] = sBanetteTeachableLearnset, + [SPECIES_ABSOL_MEGA] = sAbsolTeachableLearnset, + [SPECIES_GLALIE_MEGA] = sGlalieTeachableLearnset, + [SPECIES_SALAMENCE_MEGA] = sSalamenceTeachableLearnset, + [SPECIES_METAGROSS_MEGA] = sMetagrossTeachableLearnset, + [SPECIES_LATIAS_MEGA] = sLatiasTeachableLearnset, + [SPECIES_LATIOS_MEGA] = sLatiosTeachableLearnset, + [SPECIES_LOPUNNY_MEGA] = sLopunnyTeachableLearnset, + [SPECIES_GARCHOMP_MEGA] = sGarchompTeachableLearnset, + [SPECIES_LUCARIO_MEGA] = sLucarioTeachableLearnset, + [SPECIES_ABOMASNOW_MEGA] = sAbomasnowTeachableLearnset, + [SPECIES_GALLADE_MEGA] = sGalladeTeachableLearnset, + [SPECIES_AUDINO_MEGA] = sAudinoTeachableLearnset, + [SPECIES_DIANCIE_MEGA] = sDiancieTeachableLearnset, + // Special Mega + Primals + [SPECIES_RAYQUAZA_MEGA] = sRayquazaTeachableLearnset, + [SPECIES_KYOGRE_PRIMAL] = sKyogreTeachableLearnset, + [SPECIES_GROUDON_PRIMAL] = sGroudonTeachableLearnset, + // Alolan Forms + [SPECIES_RATTATA_ALOLAN] = sRattataAlolanTeachableLearnset, + [SPECIES_RATICATE_ALOLAN] = sRaticateAlolanTeachableLearnset, + [SPECIES_RAICHU_ALOLAN] = sRaichuAlolanTeachableLearnset, + [SPECIES_SANDSHREW_ALOLAN] = sSandshrewAlolanTeachableLearnset, + [SPECIES_SANDSLASH_ALOLAN] = sSandslashAlolanTeachableLearnset, + [SPECIES_VULPIX_ALOLAN] = sVulpixAlolanTeachableLearnset, + [SPECIES_NINETALES_ALOLAN] = sNinetalesAlolanTeachableLearnset, + [SPECIES_DIGLETT_ALOLAN] = sDiglettAlolanTeachableLearnset, + [SPECIES_DUGTRIO_ALOLAN] = sDugtrioAlolanTeachableLearnset, + [SPECIES_MEOWTH_ALOLAN] = sMeowthAlolanTeachableLearnset, + [SPECIES_PERSIAN_ALOLAN] = sPersianAlolanTeachableLearnset, + [SPECIES_GEODUDE_ALOLAN] = sGeodudeAlolanTeachableLearnset, + [SPECIES_GRAVELER_ALOLAN] = sGravelerAlolanTeachableLearnset, + [SPECIES_GOLEM_ALOLAN] = sGolemAlolanTeachableLearnset, + [SPECIES_GRIMER_ALOLAN] = sGrimerAlolanTeachableLearnset, + [SPECIES_MUK_ALOLAN] = sMukAlolanTeachableLearnset, + [SPECIES_EXEGGUTOR_ALOLAN] = sExeggutorAlolanTeachableLearnset, + [SPECIES_MAROWAK_ALOLAN] = sMarowakAlolanTeachableLearnset, + // Galarian Forms + [SPECIES_MEOWTH_GALARIAN] = sMeowthGalarianTeachableLearnset, + [SPECIES_PONYTA_GALARIAN] = sPonytaGalarianTeachableLearnset, + [SPECIES_RAPIDASH_GALARIAN] = sRapidashGalarianTeachableLearnset, + [SPECIES_SLOWPOKE_GALARIAN] = sSlowpokeGalarianTeachableLearnset, + [SPECIES_SLOWBRO_GALARIAN] = sSlowbroGalarianTeachableLearnset, + [SPECIES_FARFETCHD_GALARIAN] = sFarfetchdGalarianTeachableLearnset, + [SPECIES_WEEZING_GALARIAN] = sWeezingGalarianTeachableLearnset, + [SPECIES_MR_MIME_GALARIAN] = sMrMimeGalarianTeachableLearnset, + [SPECIES_ARTICUNO_GALARIAN] = sArticunoGalarianTeachableLearnset, + [SPECIES_ZAPDOS_GALARIAN] = sZapdosGalarianTeachableLearnset, + [SPECIES_MOLTRES_GALARIAN] = sMoltresGalarianTeachableLearnset, + [SPECIES_SLOWKING_GALARIAN] = sSlowkingGalarianTeachableLearnset, + [SPECIES_CORSOLA_GALARIAN] = sCorsolaGalarianTeachableLearnset, + [SPECIES_ZIGZAGOON_GALARIAN] = sZigzagoonGalarianTeachableLearnset, + [SPECIES_LINOONE_GALARIAN] = sLinooneGalarianTeachableLearnset, + [SPECIES_DARUMAKA_GALARIAN] = sDarumakaGalarianTeachableLearnset, + [SPECIES_DARMANITAN_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + [SPECIES_YAMASK_GALARIAN] = sYamaskGalarianTeachableLearnset, + [SPECIES_STUNFISK_GALARIAN] = sStunfiskGalarianTeachableLearnset, + // Misc Forms + // Cosplay Pikachu + [SPECIES_PIKACHU_COSPLAY] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_ROCK_STAR] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_BELLE] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_POP_STAR] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_PH_D] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_LIBRE] = sPikachuTeachableLearnset, + // Cap Pikachu + [SPECIES_PIKACHU_ORIGINAL_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_HOENN_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_SINNOH_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_UNOVA_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_KALOS_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_ALOLA_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_PARTNER_CAP] = sPikachuTeachableLearnset, + [SPECIES_PIKACHU_WORLD_CAP] = sPikachuTeachableLearnset, + // Pichu + [SPECIES_PICHU_SPIKY_EARED] = sPichuTeachableLearnset, +#endif + // Unown + [SPECIES_UNOWN_B] = sUnownTeachableLearnset, + [SPECIES_UNOWN_C] = sUnownTeachableLearnset, + [SPECIES_UNOWN_D] = sUnownTeachableLearnset, + [SPECIES_UNOWN_E] = sUnownTeachableLearnset, + [SPECIES_UNOWN_F] = sUnownTeachableLearnset, + [SPECIES_UNOWN_G] = sUnownTeachableLearnset, + [SPECIES_UNOWN_H] = sUnownTeachableLearnset, + [SPECIES_UNOWN_I] = sUnownTeachableLearnset, + [SPECIES_UNOWN_J] = sUnownTeachableLearnset, + [SPECIES_UNOWN_K] = sUnownTeachableLearnset, + [SPECIES_UNOWN_L] = sUnownTeachableLearnset, + [SPECIES_UNOWN_M] = sUnownTeachableLearnset, + [SPECIES_UNOWN_N] = sUnownTeachableLearnset, + [SPECIES_UNOWN_O] = sUnownTeachableLearnset, + [SPECIES_UNOWN_P] = sUnownTeachableLearnset, + [SPECIES_UNOWN_Q] = sUnownTeachableLearnset, + [SPECIES_UNOWN_R] = sUnownTeachableLearnset, + [SPECIES_UNOWN_S] = sUnownTeachableLearnset, + [SPECIES_UNOWN_T] = sUnownTeachableLearnset, + [SPECIES_UNOWN_U] = sUnownTeachableLearnset, + [SPECIES_UNOWN_V] = sUnownTeachableLearnset, + [SPECIES_UNOWN_W] = sUnownTeachableLearnset, + [SPECIES_UNOWN_X] = sUnownTeachableLearnset, + [SPECIES_UNOWN_Y] = sUnownTeachableLearnset, + [SPECIES_UNOWN_Z] = sUnownTeachableLearnset, + [SPECIES_UNOWN_EMARK] = sUnownTeachableLearnset, + [SPECIES_UNOWN_QMARK] = sUnownTeachableLearnset, + // Castform + [SPECIES_CASTFORM_SUNNY] = sCastformTeachableLearnset, + [SPECIES_CASTFORM_RAINY] = sCastformTeachableLearnset, + [SPECIES_CASTFORM_SNOWY] = sCastformTeachableLearnset, + // Deoxys + [SPECIES_DEOXYS_ATTACK] = sDeoxysAttackTeachableLearnset, + [SPECIES_DEOXYS_DEFENSE] = sDeoxysDefenseTeachableLearnset, + [SPECIES_DEOXYS_SPEED] = sDeoxysSpeedTeachableLearnset, +#if P_NEW_POKEMON == TRUE + // Burmy + [SPECIES_BURMY_SANDY_CLOAK] = sBurmyTeachableLearnset, + [SPECIES_BURMY_TRASH_CLOAK] = sBurmyTeachableLearnset, + // Wormadam + [SPECIES_WORMADAM_SANDY_CLOAK] = sWormadamSandyCloakTeachableLearnset, + [SPECIES_WORMADAM_TRASH_CLOAK] = sWormadamTrashCloakTeachableLearnset, + // Cherrim + [SPECIES_CHERRIM_SUNSHINE] = sCherrimTeachableLearnset, + // Shellos + [SPECIES_SHELLOS_EAST_SEA] = sShellosTeachableLearnset, + // Gastrodon + [SPECIES_GASTRODON_EAST_SEA] = sGastrodonTeachableLearnset, + // Rotom + [SPECIES_ROTOM_HEAT] = sRotomTeachableLearnset, + [SPECIES_ROTOM_WASH] = sRotomTeachableLearnset, + [SPECIES_ROTOM_FROST] = sRotomTeachableLearnset, + [SPECIES_ROTOM_FAN] = sRotomTeachableLearnset, + [SPECIES_ROTOM_MOW] = sRotomTeachableLearnset, + // Giratina + [SPECIES_GIRATINA_ORIGIN] = sGiratinaTeachableLearnset, + // Shaymin + [SPECIES_SHAYMIN_SKY] = sShayminSkyTeachableLearnset, + // Arceus + [SPECIES_ARCEUS_FIGHTING] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_FLYING] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_POISON] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_GROUND] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_ROCK] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_BUG] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_GHOST] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_STEEL] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_FIRE] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_WATER] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_GRASS] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_ELECTRIC] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_PSYCHIC] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_ICE] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_DRAGON] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_DARK] = sArceusTeachableLearnset, + [SPECIES_ARCEUS_FAIRY] = sArceusTeachableLearnset, + // Basculin + [SPECIES_BASCULIN_BLUE_STRIPED] = sBasculinTeachableLearnset, + // Darmanitan + [SPECIES_DARMANITAN_ZEN_MODE] = sDarmanitanTeachableLearnset, + [SPECIES_DARMANITAN_ZEN_MODE_GALARIAN] = sDarmanitanGalarianTeachableLearnset, + // Deerling + [SPECIES_DEERLING_SUMMER] = sDeerlingTeachableLearnset, + [SPECIES_DEERLING_AUTUMN] = sDeerlingTeachableLearnset, + [SPECIES_DEERLING_WINTER] = sDeerlingTeachableLearnset, + // Sawsbuck + [SPECIES_SAWSBUCK_SUMMER] = sSawsbuckTeachableLearnset, + [SPECIES_SAWSBUCK_AUTUMN] = sSawsbuckTeachableLearnset, + [SPECIES_SAWSBUCK_WINTER] = sSawsbuckTeachableLearnset, + // Therian Forms + [SPECIES_TORNADUS_THERIAN] = sTornadusTeachableLearnset, + [SPECIES_THUNDURUS_THERIAN] = sThundurusTeachableLearnset, + [SPECIES_LANDORUS_THERIAN] = sLandorusTeachableLearnset, + // Kyurem + [SPECIES_KYUREM_WHITE] = sKyuremTeachableLearnset, + [SPECIES_KYUREM_BLACK] = sKyuremTeachableLearnset, + // Keldeo + [SPECIES_KELDEO_RESOLUTE] = sKeldeoTeachableLearnset, + // Meloetta + [SPECIES_MELOETTA_PIROUETTE] = sMeloettaTeachableLearnset, + // Genesect + [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectTeachableLearnset, + [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectTeachableLearnset, + [SPECIES_GENESECT_BURN_DRIVE] = sGenesectTeachableLearnset, + [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectTeachableLearnset, + // Greninja + [SPECIES_GRENINJA_BATTLE_BOND] = sGreninjaTeachableLearnset, + [SPECIES_GRENINJA_ASH] = sGreninjaTeachableLearnset, + // Vivillon + [SPECIES_VIVILLON_POLAR] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_TUNDRA] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_CONTINENTAL] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_GARDEN] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_ELEGANT] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_MEADOW] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_MODERN] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_MARINE] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_ARCHIPELAGO] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_HIGH_PLAINS] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_SANDSTORM] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_RIVER] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_MONSOON] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_SAVANNA] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_SUN] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_OCEAN] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_JUNGLE] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_FANCY] = sVivillonTeachableLearnset, + [SPECIES_VIVILLON_POKE_BALL] = sVivillonTeachableLearnset, + // Flabébé + [SPECIES_FLABEBE_YELLOW_FLOWER] = sFlabebeTeachableLearnset, + [SPECIES_FLABEBE_ORANGE_FLOWER] = sFlabebeTeachableLearnset, + [SPECIES_FLABEBE_BLUE_FLOWER] = sFlabebeTeachableLearnset, + [SPECIES_FLABEBE_WHITE_FLOWER] = sFlabebeTeachableLearnset, + // Floette + [SPECIES_FLOETTE_YELLOW_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLOETTE_ORANGE_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLOETTE_BLUE_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLOETTE_WHITE_FLOWER] = sFloetteTeachableLearnset, + [SPECIES_FLOETTE_ETERNAL_FLOWER] = sFloetteEternalFlowerTeachableLearnset, + // Florges + [SPECIES_FLORGES_YELLOW_FLOWER] = sFlorgesTeachableLearnset, + [SPECIES_FLORGES_ORANGE_FLOWER] = sFlorgesTeachableLearnset, + [SPECIES_FLORGES_BLUE_FLOWER] = sFlorgesTeachableLearnset, + [SPECIES_FLORGES_WHITE_FLOWER] = sFlorgesTeachableLearnset, + //Furfrou + [SPECIES_FURFROU_HEART_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_STAR_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_DIAMOND_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_DEBUTANTE_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_MATRON_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_DANDY_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_LA_REINE_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_KABUKI_TRIM] = sFurfrouTeachableLearnset, + [SPECIES_FURFROU_PHARAOH_TRIM] = sFurfrouTeachableLearnset, + // Meowstic + [SPECIES_MEOWSTIC_FEMALE] = sMeowsticFemaleTeachableLearnset, + // Aegislash + [SPECIES_AEGISLASH_BLADE] = sAegislashTeachableLearnset, + // Pumpkaboo + [SPECIES_PUMPKABOO_SMALL] = sPumpkabooTeachableLearnset, + [SPECIES_PUMPKABOO_LARGE] = sPumpkabooTeachableLearnset, + [SPECIES_PUMPKABOO_SUPER] = sPumpkabooTeachableLearnset, + // Gourgeist + [SPECIES_GOURGEIST_SMALL] = sGourgeistTeachableLearnset, + [SPECIES_GOURGEIST_LARGE] = sGourgeistTeachableLearnset, + [SPECIES_GOURGEIST_SUPER] = sGourgeistTeachableLearnset, + // Xerneas + [SPECIES_XERNEAS_ACTIVE] = sXerneasTeachableLearnset, + // Zygarde + [SPECIES_ZYGARDE_10] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = sZygardeTeachableLearnset, + [SPECIES_ZYGARDE_COMPLETE] = sZygardeTeachableLearnset, + // Hoopa + [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundTeachableLearnset, + // Oricorio + [SPECIES_ORICORIO_POM_POM] = sOricorioTeachableLearnset, + [SPECIES_ORICORIO_PAU] = sOricorioTeachableLearnset, + [SPECIES_ORICORIO_SENSU] = sOricorioTeachableLearnset, + // Rockruff + [SPECIES_ROCKRUFF_OWN_TEMPO] = sRockruffTeachableLearnset, + // Lycanroc + [SPECIES_LYCANROC_MIDNIGHT] = sLycanrocMidnightTeachableLearnset, + [SPECIES_LYCANROC_DUSK] = sLycanrocDuskTeachableLearnset, + // Wishiwashi + [SPECIES_WISHIWASHI_SCHOOL] = sWishiwashiTeachableLearnset, + // Silvally + [SPECIES_SILVALLY_FIGHTING] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_FLYING] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_POISON] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_GROUND] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_ROCK] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_BUG] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_GHOST] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_STEEL] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_FIRE] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_WATER] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_GRASS] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_ELECTRIC] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_PSYCHIC] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_ICE] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_DRAGON] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_DARK] = sSilvallyTeachableLearnset, + [SPECIES_SILVALLY_FAIRY] = sSilvallyTeachableLearnset, + // Minior + [SPECIES_MINIOR_METEOR_ORANGE] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_METEOR_YELLOW] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_METEOR_GREEN] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_METEOR_BLUE] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_METEOR_INDIGO] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_METEOR_VIOLET] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_RED] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_ORANGE] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_YELLOW] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_GREEN] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_BLUE] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_INDIGO] = sMiniorTeachableLearnset, + [SPECIES_MINIOR_CORE_VIOLET] = sMiniorTeachableLearnset, + // Mimikyu + [SPECIES_MIMIKYU_BUSTED] = sMimikyuTeachableLearnset, + // Necrozma + [SPECIES_NECROZMA_DUSK_MANE] = sNecrozmaTeachableLearnset, + [SPECIES_NECROZMA_DAWN_WINGS] = sNecrozmaTeachableLearnset, + [SPECIES_NECROZMA_ULTRA] = sNecrozmaTeachableLearnset, + // Magearna + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = sMagearnaTeachableLearnset, + // Cramorant + [SPECIES_CRAMORANT_GULPING] = sCramorantTeachableLearnset, + [SPECIES_CRAMORANT_GORGING] = sCramorantTeachableLearnset, + // Toxtricity + [SPECIES_TOXTRICITY_LOW_KEY] = sToxtricityLowKeyTeachableLearnset, + // Sinistea + [SPECIES_SINISTEA_ANTIQUE] = sSinisteaTeachableLearnset, + // Polteageist + [SPECIES_POLTEAGEIST_ANTIQUE] = sPolteageistTeachableLearnset, + // Alcremie + [SPECIES_ALCREMIE_RUBY_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_MATCHA_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_MINT_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_LEMON_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_SALTED_CREAM] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RUBY_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = sAlcremieTeachableLearnset, + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = sAlcremieTeachableLearnset, + // Eiscue + [SPECIES_EISCUE_NOICE_FACE] = sEiscueTeachableLearnset, + // Indeedee + [SPECIES_INDEEDEE_FEMALE] = sIndeedeeFemaleTeachableLearnset, + // Morpeko + [SPECIES_MORPEKO_HANGRY] = sMorpekoTeachableLearnset, + // Zacian + [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianTeachableLearnset, + // Zamazenta + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaTeachableLearnset, + // Eternatus + [SPECIES_ETERNATUS_ETERNAMAX] = sEternatusTeachableLearnset, + // Urshifu + [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = sUrshifuRapidStrikeStyleTeachableLearnset, + // Zarude + [SPECIES_ZARUDE_DADA] = sZarudeTeachableLearnset, + // Calyrex + [SPECIES_CALYREX_ICE_RIDER] = sCalyrexIceRiderTeachableLearnset, + [SPECIES_CALYREX_SHADOW_RIDER] = sCalyrexShadowRiderTeachableLearnset, +#endif +}; diff --git a/src/data/pokemon/teach_learnsets.h b/src/data/pokemon/teachable_learnsets.h similarity index 92% rename from src/data/pokemon/teach_learnsets.h rename to src/data/pokemon/teachable_learnsets.h index 560afc5038..c08d99d229 100644 --- a/src/data/pokemon/teach_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -1,4 +1,4 @@ -static const u16 sBulbasaurTeachLearnset[] = { +static const u16 sBulbasaurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -36,7 +36,7 @@ static const u16 sBulbasaurTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIvysaurTeachLearnset[] = { +static const u16 sIvysaurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -74,7 +74,7 @@ static const u16 sIvysaurTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVenusaurTeachLearnset[] = { +static const u16 sVenusaurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -115,7 +115,7 @@ static const u16 sVenusaurTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCharmanderTeachLearnset[] = { +static const u16 sCharmanderTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -165,7 +165,7 @@ static const u16 sCharmanderTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCharmeleonTeachLearnset[] = { +static const u16 sCharmeleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -215,7 +215,7 @@ static const u16 sCharmeleonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCharizardTeachLearnset[] = { +static const u16 sCharizardTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -272,7 +272,7 @@ static const u16 sCharizardTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSquirtleTeachLearnset[] = { +static const u16 sSquirtleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -320,7 +320,7 @@ static const u16 sSquirtleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWartortleTeachLearnset[] = { +static const u16 sWartortleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -368,7 +368,7 @@ static const u16 sWartortleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlastoiseTeachLearnset[] = { +static const u16 sBlastoiseTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -420,16 +420,16 @@ static const u16 sBlastoiseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCaterpieTeachLearnset[] = { +static const u16 sCaterpieTeachableLearnset[] = { MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sMetapodTeachLearnset[] = { +static const u16 sMetapodTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sButterfreeTeachLearnset[] = { +static const u16 sButterfreeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -466,15 +466,15 @@ static const u16 sButterfreeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWeedleTeachLearnset[] = { +static const u16 sWeedleTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKakunaTeachLearnset[] = { +static const u16 sKakunaTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBeedrillTeachLearnset[] = { +static const u16 sBeedrillTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -510,7 +510,7 @@ static const u16 sBeedrillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPidgeyTeachLearnset[] = { +static const u16 sPidgeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -540,7 +540,7 @@ static const u16 sPidgeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPidgeottoTeachLearnset[] = { +static const u16 sPidgeottoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -570,7 +570,7 @@ static const u16 sPidgeottoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPidgeotTeachLearnset[] = { +static const u16 sPidgeotTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -601,7 +601,7 @@ static const u16 sPidgeotTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRattataTeachLearnset[] = { +static const u16 sRattataTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -643,7 +643,7 @@ static const u16 sRattataTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaticateTeachLearnset[] = { +static const u16 sRaticateTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULK_UP, @@ -692,7 +692,7 @@ static const u16 sRaticateTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpearowTeachLearnset[] = { +static const u16 sSpearowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -721,7 +721,7 @@ static const u16 sSpearowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFearowTeachLearnset[] = { +static const u16 sFearowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -751,7 +751,7 @@ static const u16 sFearowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEkansTeachLearnset[] = { +static const u16 sEkansTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -786,7 +786,7 @@ static const u16 sEkansTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArbokTeachLearnset[] = { +static const u16 sArbokTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -822,7 +822,7 @@ static const u16 sArbokTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPikachuTeachLearnset[] = { +static const u16 sPikachuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -870,7 +870,7 @@ static const u16 sPikachuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaichuTeachLearnset[] = { +static const u16 sRaichuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -918,7 +918,7 @@ static const u16 sRaichuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandshrewTeachLearnset[] = { +static const u16 sSandshrewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -964,7 +964,7 @@ static const u16 sSandshrewTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandslashTeachLearnset[] = { +static const u16 sSandslashTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -1011,7 +1011,7 @@ static const u16 sSandslashTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidoranFTeachLearnset[] = { +static const u16 sNidoranFTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -1053,7 +1053,7 @@ static const u16 sNidoranFTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidorinaTeachLearnset[] = { +static const u16 sNidorinaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -1095,7 +1095,7 @@ static const u16 sNidorinaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidoqueenTeachLearnset[] = { +static const u16 sNidoqueenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -1160,7 +1160,7 @@ static const u16 sNidoqueenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidoranMTeachLearnset[] = { +static const u16 sNidoranMTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -1201,7 +1201,7 @@ static const u16 sNidoranMTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidorinoTeachLearnset[] = { +static const u16 sNidorinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -1242,7 +1242,7 @@ static const u16 sNidorinoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNidokingTeachLearnset[] = { +static const u16 sNidokingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -1306,7 +1306,7 @@ static const u16 sNidokingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClefairyTeachLearnset[] = { +static const u16 sClefairyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -1370,7 +1370,7 @@ static const u16 sClefairyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClefableTeachLearnset[] = { +static const u16 sClefableTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -1435,7 +1435,7 @@ static const u16 sClefableTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVulpixTeachLearnset[] = { +static const u16 sVulpixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -1468,7 +1468,7 @@ static const u16 sVulpixTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNinetalesTeachLearnset[] = { +static const u16 sNinetalesTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DIG, @@ -1505,7 +1505,7 @@ static const u16 sNinetalesTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJigglypuffTeachLearnset[] = { +static const u16 sJigglypuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -1564,7 +1564,7 @@ static const u16 sJigglypuffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWigglytuffTeachLearnset[] = { +static const u16 sWigglytuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -1624,7 +1624,7 @@ static const u16 sWigglytuffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZubatTeachLearnset[] = { +static const u16 sZubatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -1658,7 +1658,7 @@ static const u16 sZubatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolbatTeachLearnset[] = { +static const u16 sGolbatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -1693,7 +1693,7 @@ static const u16 sGolbatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOddishTeachLearnset[] = { +static const u16 sOddishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -1723,7 +1723,7 @@ static const u16 sOddishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGloomTeachLearnset[] = { +static const u16 sGloomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -1753,7 +1753,7 @@ static const u16 sGloomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVileplumeTeachLearnset[] = { +static const u16 sVileplumeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -1786,7 +1786,7 @@ static const u16 sVileplumeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sParasTeachLearnset[] = { +static const u16 sParasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -1825,7 +1825,7 @@ static const u16 sParasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sParasectTeachLearnset[] = { +static const u16 sParasectTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -1865,7 +1865,7 @@ static const u16 sParasectTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVenonatTeachLearnset[] = { +static const u16 sVenonatTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -1896,7 +1896,7 @@ static const u16 sVenonatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVenomothTeachLearnset[] = { +static const u16 sVenomothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -1929,7 +1929,7 @@ static const u16 sVenomothTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDiglettTeachLearnset[] = { +static const u16 sDiglettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -1963,7 +1963,7 @@ static const u16 sDiglettTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDugtrioTeachLearnset[] = { +static const u16 sDugtrioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -1998,7 +1998,7 @@ static const u16 sDugtrioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowthTeachLearnset[] = { +static const u16 sMeowthTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -2042,7 +2042,7 @@ static const u16 sMeowthTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPersianTeachLearnset[] = { +static const u16 sPersianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -2088,7 +2088,7 @@ static const u16 sPersianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPsyduckTeachLearnset[] = { +static const u16 sPsyduckTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -2139,7 +2139,7 @@ static const u16 sPsyduckTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolduckTeachLearnset[] = { +static const u16 sGolduckTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -2192,7 +2192,7 @@ static const u16 sGolduckTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMankeyTeachLearnset[] = { +static const u16 sMankeyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -2245,7 +2245,7 @@ static const u16 sMankeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPrimeapeTeachLearnset[] = { +static const u16 sPrimeapeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -2299,7 +2299,7 @@ static const u16 sPrimeapeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrowlitheTeachLearnset[] = { +static const u16 sGrowlitheTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -2336,7 +2336,7 @@ static const u16 sGrowlitheTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArcanineTeachLearnset[] = { +static const u16 sArcanineTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -2375,7 +2375,7 @@ static const u16 sArcanineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPoliwagTeachLearnset[] = { +static const u16 sPoliwagTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -2410,7 +2410,7 @@ static const u16 sPoliwagTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPoliwhirlTeachLearnset[] = { +static const u16 sPoliwhirlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -2457,7 +2457,7 @@ static const u16 sPoliwhirlTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPoliwrathTeachLearnset[] = { +static const u16 sPoliwrathTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -2509,7 +2509,7 @@ static const u16 sPoliwrathTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAbraTeachLearnset[] = { +static const u16 sAbraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -2560,7 +2560,7 @@ static const u16 sAbraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKadabraTeachLearnset[] = { +static const u16 sKadabraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DIG, @@ -2612,7 +2612,7 @@ static const u16 sKadabraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAlakazamTeachLearnset[] = { +static const u16 sAlakazamTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DIG, @@ -2665,7 +2665,7 @@ static const u16 sAlakazamTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMachopTeachLearnset[] = { +static const u16 sMachopTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -2712,7 +2712,7 @@ static const u16 sMachopTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMachokeTeachLearnset[] = { +static const u16 sMachokeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -2759,7 +2759,7 @@ static const u16 sMachokeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMachampTeachLearnset[] = { +static const u16 sMachampTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -2807,7 +2807,7 @@ static const u16 sMachampTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBellsproutTeachLearnset[] = { +static const u16 sBellsproutTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -2838,7 +2838,7 @@ static const u16 sBellsproutTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWeepinbellTeachLearnset[] = { +static const u16 sWeepinbellTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -2869,7 +2869,7 @@ static const u16 sWeepinbellTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVictreebelTeachLearnset[] = { +static const u16 sVictreebelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -2902,7 +2902,7 @@ static const u16 sVictreebelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTentacoolTeachLearnset[] = { +static const u16 sTentacoolTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -2939,7 +2939,7 @@ static const u16 sTentacoolTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTentacruelTeachLearnset[] = { +static const u16 sTentacruelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -2977,7 +2977,7 @@ static const u16 sTentacruelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGeodudeTeachLearnset[] = { +static const u16 sGeodudeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -3022,7 +3022,7 @@ static const u16 sGeodudeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGravelerTeachLearnset[] = { +static const u16 sGravelerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -3067,7 +3067,7 @@ static const u16 sGravelerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolemTeachLearnset[] = { +static const u16 sGolemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -3116,7 +3116,7 @@ static const u16 sGolemTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPonytaTeachLearnset[] = { +static const u16 sPonytaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -3147,7 +3147,7 @@ static const u16 sPonytaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRapidashTeachLearnset[] = { +static const u16 sRapidashTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -3179,7 +3179,7 @@ static const u16 sRapidashTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowpokeTeachLearnset[] = { +static const u16 sSlowpokeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -3229,7 +3229,7 @@ static const u16 sSlowpokeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowbroTeachLearnset[] = { +static const u16 sSlowbroTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -3291,7 +3291,7 @@ static const u16 sSlowbroTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagnemiteTeachLearnset[] = { +static const u16 sMagnemiteTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -3324,7 +3324,7 @@ static const u16 sMagnemiteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagnetonTeachLearnset[] = { +static const u16 sMagnetonTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -3358,7 +3358,7 @@ static const u16 sMagnetonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFarfetchdTeachLearnset[] = { +static const u16 sFarfetchdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -3393,7 +3393,7 @@ static const u16 sFarfetchdTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDoduoTeachLearnset[] = { +static const u16 sDoduoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -3424,7 +3424,7 @@ static const u16 sDoduoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDodrioTeachLearnset[] = { +static const u16 sDodrioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -3458,7 +3458,7 @@ static const u16 sDodrioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeelTeachLearnset[] = { +static const u16 sSeelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -3493,7 +3493,7 @@ static const u16 sSeelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDewgongTeachLearnset[] = { +static const u16 sDewgongTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -3529,7 +3529,7 @@ static const u16 sDewgongTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrimerTeachLearnset[] = { +static const u16 sGrimerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -3573,7 +3573,7 @@ static const u16 sGrimerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMukTeachLearnset[] = { +static const u16 sMukTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -3621,7 +3621,7 @@ static const u16 sMukTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShellderTeachLearnset[] = { +static const u16 sShellderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -3653,7 +3653,7 @@ static const u16 sShellderTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCloysterTeachLearnset[] = { +static const u16 sCloysterTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -3687,7 +3687,7 @@ static const u16 sCloysterTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGastlyTeachLearnset[] = { +static const u16 sGastlyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -3727,7 +3727,7 @@ static const u16 sGastlyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHaunterTeachLearnset[] = { +static const u16 sHaunterTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -3767,7 +3767,7 @@ static const u16 sHaunterTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGengarTeachLearnset[] = { +static const u16 sGengarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -3820,7 +3820,7 @@ static const u16 sGengarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOnixTeachLearnset[] = { +static const u16 sOnixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -3859,7 +3859,7 @@ static const u16 sOnixTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrowzeeTeachLearnset[] = { +static const u16 sDrowzeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -3909,7 +3909,7 @@ static const u16 sDrowzeeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHypnoTeachLearnset[] = { +static const u16 sHypnoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -3960,7 +3960,7 @@ static const u16 sHypnoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKrabbyTeachLearnset[] = { +static const u16 sKrabbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -4001,7 +4001,7 @@ static const u16 sKrabbyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKinglerTeachLearnset[] = { +static const u16 sKinglerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -4043,7 +4043,7 @@ static const u16 sKinglerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVoltorbTeachLearnset[] = { +static const u16 sVoltorbTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -4076,7 +4076,7 @@ static const u16 sVoltorbTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElectrodeTeachLearnset[] = { +static const u16 sElectrodeTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -4110,7 +4110,7 @@ static const u16 sElectrodeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sExeggcuteTeachLearnset[] = { +static const u16 sExeggcuteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -4148,7 +4148,7 @@ static const u16 sExeggcuteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sExeggutorTeachLearnset[] = { +static const u16 sExeggutorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -4187,7 +4187,7 @@ static const u16 sExeggutorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCuboneTeachLearnset[] = { +static const u16 sCuboneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4237,7 +4237,7 @@ static const u16 sCuboneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMarowakTeachLearnset[] = { +static const u16 sMarowakTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4288,7 +4288,7 @@ static const u16 sMarowakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHitmonleeTeachLearnset[] = { +static const u16 sHitmonleeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -4329,7 +4329,7 @@ static const u16 sHitmonleeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHitmonchanTeachLearnset[] = { +static const u16 sHitmonchanTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -4373,7 +4373,7 @@ static const u16 sHitmonchanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLickitungTeachLearnset[] = { +static const u16 sLickitungTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -4436,7 +4436,7 @@ static const u16 sLickitungTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKoffingTeachLearnset[] = { +static const u16 sKoffingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -4471,7 +4471,7 @@ static const u16 sKoffingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWeezingTeachLearnset[] = { +static const u16 sWeezingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -4507,7 +4507,7 @@ static const u16 sWeezingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRhyhornTeachLearnset[] = { +static const u16 sRhyhornTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -4553,7 +4553,7 @@ static const u16 sRhyhornTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRhydonTeachLearnset[] = { +static const u16 sRhydonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -4612,7 +4612,7 @@ static const u16 sRhydonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChanseyTeachLearnset[] = { +static const u16 sChanseyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -4682,7 +4682,7 @@ static const u16 sChanseyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTangelaTeachLearnset[] = { +static const u16 sTangelaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -4718,7 +4718,7 @@ static const u16 sTangelaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKangaskhanTeachLearnset[] = { +static const u16 sKangaskhanTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -4781,7 +4781,7 @@ static const u16 sKangaskhanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHorseaTeachLearnset[] = { +static const u16 sHorseaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4812,7 +4812,7 @@ static const u16 sHorseaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeadraTeachLearnset[] = { +static const u16 sSeadraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4844,7 +4844,7 @@ static const u16 sSeadraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGoldeenTeachLearnset[] = { +static const u16 sGoldeenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4878,7 +4878,7 @@ static const u16 sGoldeenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeakingTeachLearnset[] = { +static const u16 sSeakingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4912,7 +4912,7 @@ static const u16 sSeakingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStaryuTeachLearnset[] = { +static const u16 sStaryuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4952,7 +4952,7 @@ static const u16 sStaryuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStarmieTeachLearnset[] = { +static const u16 sStarmieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -4995,7 +4995,7 @@ static const u16 sStarmieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMrMimeTeachLearnset[] = { +static const u16 sMrMimeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -5053,7 +5053,7 @@ static const u16 sMrMimeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScytherTeachLearnset[] = { +static const u16 sScytherTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -5089,7 +5089,7 @@ static const u16 sScytherTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJynxTeachLearnset[] = { +static const u16 sJynxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -5140,7 +5140,7 @@ static const u16 sJynxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElectabuzzTeachLearnset[] = { +static const u16 sElectabuzzTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -5189,7 +5189,7 @@ static const u16 sElectabuzzTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagmarTeachLearnset[] = { +static const u16 sMagmarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -5232,7 +5232,7 @@ static const u16 sMagmarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPinsirTeachLearnset[] = { +static const u16 sPinsirTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -5271,7 +5271,7 @@ static const u16 sPinsirTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTaurosTeachLearnset[] = { +static const u16 sTaurosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -5314,11 +5314,11 @@ static const u16 sTaurosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagikarpTeachLearnset[] = { +static const u16 sMagikarpTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGyaradosTeachLearnset[] = { +static const u16 sGyaradosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -5364,7 +5364,7 @@ static const u16 sGyaradosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLaprasTeachLearnset[] = { +static const u16 sLaprasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -5408,11 +5408,11 @@ static const u16 sLaprasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDittoTeachLearnset[] = { +static const u16 sDittoTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEeveeTeachLearnset[] = { +static const u16 sEeveeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -5442,7 +5442,7 @@ static const u16 sEeveeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVaporeonTeachLearnset[] = { +static const u16 sVaporeonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -5484,7 +5484,7 @@ static const u16 sVaporeonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJolteonTeachLearnset[] = { +static const u16 sJolteonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -5524,7 +5524,7 @@ static const u16 sJolteonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFlareonTeachLearnset[] = { +static const u16 sFlareonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -5561,7 +5561,7 @@ static const u16 sFlareonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPorygonTeachLearnset[] = { +static const u16 sPorygonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -5603,7 +5603,7 @@ static const u16 sPorygonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOmanyteTeachLearnset[] = { +static const u16 sOmanyteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -5641,7 +5641,7 @@ static const u16 sOmanyteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOmastarTeachLearnset[] = { +static const u16 sOmastarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -5681,7 +5681,7 @@ static const u16 sOmastarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKabutoTeachLearnset[] = { +static const u16 sKabutoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5722,7 +5722,7 @@ static const u16 sKabutoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKabutopsTeachLearnset[] = { +static const u16 sKabutopsTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -5771,7 +5771,7 @@ static const u16 sKabutopsTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAerodactylTeachLearnset[] = { +static const u16 sAerodactylTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -5814,7 +5814,7 @@ static const u16 sAerodactylTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSnorlaxTeachLearnset[] = { +static const u16 sSnorlaxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -5875,7 +5875,7 @@ static const u16 sSnorlaxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArticunoTeachLearnset[] = { +static const u16 sArticunoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -5912,7 +5912,7 @@ static const u16 sArticunoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZapdosTeachLearnset[] = { +static const u16 sZapdosTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -5950,7 +5950,7 @@ static const u16 sZapdosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMoltresTeachLearnset[] = { +static const u16 sMoltresTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -5987,7 +5987,7 @@ static const u16 sMoltresTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDratiniTeachLearnset[] = { +static const u16 sDratiniTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -6030,7 +6030,7 @@ static const u16 sDratiniTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDragonairTeachLearnset[] = { +static const u16 sDragonairTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -6073,7 +6073,7 @@ static const u16 sDragonairTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDragoniteTeachLearnset[] = { +static const u16 sDragoniteTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6137,7 +6137,7 @@ static const u16 sDragoniteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMewtwoTeachLearnset[] = { +static const u16 sMewtwoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -6209,7 +6209,7 @@ static const u16 sMewtwoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMewTeachLearnset[] = { +static const u16 sMewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6301,7 +6301,7 @@ static const u16 sMewTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChikoritaTeachLearnset[] = { +static const u16 sChikoritaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -6337,7 +6337,7 @@ static const u16 sChikoritaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBayleefTeachLearnset[] = { +static const u16 sBayleefTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -6375,7 +6375,7 @@ static const u16 sBayleefTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeganiumTeachLearnset[] = { +static const u16 sMeganiumTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -6415,7 +6415,7 @@ static const u16 sMeganiumTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCyndaquilTeachLearnset[] = { +static const u16 sCyndaquilTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -6449,7 +6449,7 @@ static const u16 sCyndaquilTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sQuilavaTeachLearnset[] = { +static const u16 sQuilavaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -6489,7 +6489,7 @@ static const u16 sQuilavaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTyphlosionTeachLearnset[] = { +static const u16 sTyphlosionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -6541,7 +6541,7 @@ static const u16 sTyphlosionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTotodileTeachLearnset[] = { +static const u16 sTotodileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6589,7 +6589,7 @@ static const u16 sTotodileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCroconawTeachLearnset[] = { +static const u16 sCroconawTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6641,7 +6641,7 @@ static const u16 sCroconawTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFeraligatrTeachLearnset[] = { +static const u16 sFeraligatrTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -6695,7 +6695,7 @@ static const u16 sFeraligatrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSentretTeachLearnset[] = { +static const u16 sSentretTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, @@ -6742,7 +6742,7 @@ static const u16 sSentretTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFurretTeachLearnset[] = { +static const u16 sFurretTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -6794,7 +6794,7 @@ static const u16 sFurretTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoothootTeachLearnset[] = { +static const u16 sHoothootTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -6829,7 +6829,7 @@ static const u16 sHoothootTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNoctowlTeachLearnset[] = { +static const u16 sNoctowlTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -6865,7 +6865,7 @@ static const u16 sNoctowlTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLedybaTeachLearnset[] = { +static const u16 sLedybaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -6906,7 +6906,7 @@ static const u16 sLedybaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLedianTeachLearnset[] = { +static const u16 sLedianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -6949,7 +6949,7 @@ static const u16 sLedianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpinarakTeachLearnset[] = { +static const u16 sSpinarakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -6979,7 +6979,7 @@ static const u16 sSpinarakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAriadosTeachLearnset[] = { +static const u16 sAriadosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -7011,7 +7011,7 @@ static const u16 sAriadosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCrobatTeachLearnset[] = { +static const u16 sCrobatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -7046,7 +7046,7 @@ static const u16 sCrobatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChinchouTeachLearnset[] = { +static const u16 sChinchouTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -7081,7 +7081,7 @@ static const u16 sChinchouTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLanturnTeachLearnset[] = { +static const u16 sLanturnTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -7117,7 +7117,7 @@ static const u16 sLanturnTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPichuTeachLearnset[] = { +static const u16 sPichuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -7157,7 +7157,7 @@ static const u16 sPichuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCleffaTeachLearnset[] = { +static const u16 sCleffaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -7207,7 +7207,7 @@ static const u16 sCleffaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIgglybuffTeachLearnset[] = { +static const u16 sIgglybuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -7254,7 +7254,7 @@ static const u16 sIgglybuffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTogepiTeachLearnset[] = { +static const u16 sTogepiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -7303,7 +7303,7 @@ static const u16 sTogepiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTogeticTeachLearnset[] = { +static const u16 sTogeticTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -7358,7 +7358,7 @@ static const u16 sTogeticTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNatuTeachLearnset[] = { +static const u16 sNatuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -7397,7 +7397,7 @@ static const u16 sNatuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sXatuTeachLearnset[] = { +static const u16 sXatuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -7438,7 +7438,7 @@ static const u16 sXatuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMareepTeachLearnset[] = { +static const u16 sMareepTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -7472,7 +7472,7 @@ static const u16 sMareepTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFlaaffyTeachLearnset[] = { +static const u16 sFlaaffyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -7516,7 +7516,7 @@ static const u16 sFlaaffyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAmpharosTeachLearnset[] = { +static const u16 sAmpharosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -7561,7 +7561,7 @@ static const u16 sAmpharosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBellossomTeachLearnset[] = { +static const u16 sBellossomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -7592,7 +7592,7 @@ static const u16 sBellossomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMarillTeachLearnset[] = { +static const u16 sMarillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -7639,7 +7639,7 @@ static const u16 sMarillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAzumarillTeachLearnset[] = { +static const u16 sAzumarillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -7687,7 +7687,7 @@ static const u16 sAzumarillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSudowoodoTeachLearnset[] = { +static const u16 sSudowoodoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -7736,7 +7736,7 @@ static const u16 sSudowoodoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPolitoedTeachLearnset[] = { +static const u16 sPolitoedTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -7785,7 +7785,7 @@ static const u16 sPolitoedTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoppipTeachLearnset[] = { +static const u16 sHoppipTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -7816,7 +7816,7 @@ static const u16 sHoppipTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkiploomTeachLearnset[] = { +static const u16 sSkiploomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -7847,7 +7847,7 @@ static const u16 sSkiploomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJumpluffTeachLearnset[] = { +static const u16 sJumpluffTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -7879,7 +7879,7 @@ static const u16 sJumpluffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAipomTeachLearnset[] = { +static const u16 sAipomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -7935,7 +7935,7 @@ static const u16 sAipomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSunkernTeachLearnset[] = { +static const u16 sSunkernTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -7966,7 +7966,7 @@ static const u16 sSunkernTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSunfloraTeachLearnset[] = { +static const u16 sSunfloraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -7998,7 +7998,7 @@ static const u16 sSunfloraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYanmaTeachLearnset[] = { +static const u16 sYanmaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -8030,7 +8030,7 @@ static const u16 sYanmaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWooperTeachLearnset[] = { +static const u16 sWooperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -8075,7 +8075,7 @@ static const u16 sWooperTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sQuagsireTeachLearnset[] = { +static const u16 sQuagsireTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -8130,7 +8130,7 @@ static const u16 sQuagsireTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEspeonTeachLearnset[] = { +static const u16 sEspeonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -8169,7 +8169,7 @@ static const u16 sEspeonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUmbreonTeachLearnset[] = { +static const u16 sUmbreonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -8207,7 +8207,7 @@ static const u16 sUmbreonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMurkrowTeachLearnset[] = { +static const u16 sMurkrowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -8246,7 +8246,7 @@ static const u16 sMurkrowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowkingTeachLearnset[] = { +static const u16 sSlowkingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -8306,7 +8306,7 @@ static const u16 sSlowkingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMisdreavusTeachLearnset[] = { +static const u16 sMisdreavusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -8348,18 +8348,18 @@ static const u16 sMisdreavusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUnownTeachLearnset[] = { +static const u16 sUnownTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; -static const u16 sWobbuffetTeachLearnset[] = { +static const u16 sWobbuffetTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_UNAVAILABLE, }; -static const u16 sGirafarigTeachLearnset[] = { +static const u16 sGirafarigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -8403,7 +8403,7 @@ static const u16 sGirafarigTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPinecoTeachLearnset[] = { +static const u16 sPinecoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -8442,7 +8442,7 @@ static const u16 sPinecoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sForretressTeachLearnset[] = { +static const u16 sForretressTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -8481,7 +8481,7 @@ static const u16 sForretressTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDunsparceTeachLearnset[] = { +static const u16 sDunsparceTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -8531,7 +8531,7 @@ static const u16 sDunsparceTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGligarTeachLearnset[] = { +static const u16 sGligarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -8575,7 +8575,7 @@ static const u16 sGligarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSteelixTeachLearnset[] = { +static const u16 sSteelixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -8616,7 +8616,7 @@ static const u16 sSteelixTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSnubbullTeachLearnset[] = { +static const u16 sSnubbullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -8674,7 +8674,7 @@ static const u16 sSnubbullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGranbullTeachLearnset[] = { +static const u16 sGranbullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -8736,7 +8736,7 @@ static const u16 sGranbullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sQwilfishTeachLearnset[] = { +static const u16 sQwilfishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -8776,7 +8776,7 @@ static const u16 sQwilfishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScizorTeachLearnset[] = { +static const u16 sScizorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -8814,7 +8814,7 @@ static const u16 sScizorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShuckleTeachLearnset[] = { +static const u16 sShuckleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -8850,7 +8850,7 @@ static const u16 sShuckleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHeracrossTeachLearnset[] = { +static const u16 sHeracrossTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -8892,7 +8892,7 @@ static const u16 sHeracrossTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSneaselTeachLearnset[] = { +static const u16 sSneaselTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -8945,7 +8945,7 @@ static const u16 sSneaselTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTeddiursaTeachLearnset[] = { +static const u16 sTeddiursaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -8999,7 +8999,7 @@ static const u16 sTeddiursaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrsaringTeachLearnset[] = { +static const u16 sUrsaringTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -9054,7 +9054,7 @@ static const u16 sUrsaringTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlugmaTeachLearnset[] = { +static const u16 sSlugmaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -9088,7 +9088,7 @@ static const u16 sSlugmaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagcargoTeachLearnset[] = { +static const u16 sMagcargoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -9128,7 +9128,7 @@ static const u16 sMagcargoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwinubTeachLearnset[] = { +static const u16 sSwinubTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -9167,7 +9167,7 @@ static const u16 sSwinubTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPiloswineTeachLearnset[] = { +static const u16 sPiloswineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -9207,7 +9207,7 @@ static const u16 sPiloswineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCorsolaTeachLearnset[] = { +static const u16 sCorsolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -9254,7 +9254,7 @@ static const u16 sCorsolaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRemoraidTeachLearnset[] = { +static const u16 sRemoraidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, @@ -9294,7 +9294,7 @@ static const u16 sRemoraidTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOctilleryTeachLearnset[] = { +static const u16 sOctilleryTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, @@ -9336,7 +9336,7 @@ static const u16 sOctilleryTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDelibirdTeachLearnset[] = { +static const u16 sDelibirdTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9377,7 +9377,7 @@ static const u16 sDelibirdTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMantineTeachLearnset[] = { +static const u16 sMantineTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -9416,7 +9416,7 @@ static const u16 sMantineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkarmoryTeachLearnset[] = { +static const u16 sSkarmoryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -9457,7 +9457,7 @@ static const u16 sSkarmoryTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoundourTeachLearnset[] = { +static const u16 sHoundourTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -9497,7 +9497,7 @@ static const u16 sHoundourTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoundoomTeachLearnset[] = { +static const u16 sHoundoomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -9539,7 +9539,7 @@ static const u16 sHoundoomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKingdraTeachLearnset[] = { +static const u16 sKingdraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -9572,7 +9572,7 @@ static const u16 sKingdraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPhanpyTeachLearnset[] = { +static const u16 sPhanpyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -9607,7 +9607,7 @@ static const u16 sPhanpyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDonphanTeachLearnset[] = { +static const u16 sDonphanTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -9643,7 +9643,7 @@ static const u16 sDonphanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPorygon2TeachLearnset[] = { +static const u16 sPorygon2TeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -9684,7 +9684,7 @@ static const u16 sPorygon2TeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStantlerTeachLearnset[] = { +static const u16 sStantlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -9728,14 +9728,14 @@ static const u16 sStantlerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSmeargleTeachLearnset[] = { +static const u16 sSmeargleTeachableLearnset[] = { MOVE_FLAMETHROWER, MOVE_SEISMIC_TOSS, MOVE_SLEEP_TALK, MOVE_UNAVAILABLE, }; -static const u16 sTyrogueTeachLearnset[] = { +static const u16 sTyrogueTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -9771,7 +9771,7 @@ static const u16 sTyrogueTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHitmontopTeachLearnset[] = { +static const u16 sHitmontopTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -9811,7 +9811,7 @@ static const u16 sHitmontopTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSmoochumTeachLearnset[] = { +static const u16 sSmoochumTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -9857,7 +9857,7 @@ static const u16 sSmoochumTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElekidTeachLearnset[] = { +static const u16 sElekidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -9901,7 +9901,7 @@ static const u16 sElekidTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagbyTeachLearnset[] = { +static const u16 sMagbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -9941,7 +9941,7 @@ static const u16 sMagbyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMiltankTeachLearnset[] = { +static const u16 sMiltankTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -9999,7 +9999,7 @@ static const u16 sMiltankTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlisseyTeachLearnset[] = { +static const u16 sBlisseyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -10068,7 +10068,7 @@ static const u16 sBlisseyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaikouTeachLearnset[] = { +static const u16 sRaikouTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, @@ -10111,7 +10111,7 @@ static const u16 sRaikouTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEnteiTeachLearnset[] = { +static const u16 sEnteiTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DIG, @@ -10153,7 +10153,7 @@ static const u16 sEnteiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSuicuneTeachLearnset[] = { +static const u16 sSuicuneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_CUT, @@ -10197,7 +10197,7 @@ static const u16 sSuicuneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLarvitarTeachLearnset[] = { +static const u16 sLarvitarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -10233,7 +10233,7 @@ static const u16 sLarvitarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPupitarTeachLearnset[] = { +static const u16 sPupitarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -10269,7 +10269,7 @@ static const u16 sPupitarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTyranitarTeachLearnset[] = { +static const u16 sTyranitarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -10330,7 +10330,7 @@ static const u16 sTyranitarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLugiaTeachLearnset[] = { +static const u16 sLugiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -10388,7 +10388,7 @@ static const u16 sLugiaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoOhTeachLearnset[] = { +static const u16 sHoOhTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -10439,7 +10439,7 @@ static const u16 sHoOhTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCelebiTeachLearnset[] = { +static const u16 sCelebiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -10485,7 +10485,7 @@ static const u16 sCelebiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTreeckoTeachLearnset[] = { +static const u16 sTreeckoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10533,7 +10533,7 @@ static const u16 sTreeckoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrovyleTeachLearnset[] = { +static const u16 sGrovyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10581,7 +10581,7 @@ static const u16 sGrovyleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSceptileTeachLearnset[] = { +static const u16 sSceptileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10633,7 +10633,7 @@ static const u16 sSceptileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTorchicTeachLearnset[] = { +static const u16 sTorchicTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -10673,7 +10673,7 @@ static const u16 sTorchicTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCombuskenTeachLearnset[] = { +static const u16 sCombuskenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10720,7 +10720,7 @@ static const u16 sCombuskenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlazikenTeachLearnset[] = { +static const u16 sBlazikenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -10771,7 +10771,7 @@ static const u16 sBlazikenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMudkipTeachLearnset[] = { +static const u16 sMudkipTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -10812,7 +10812,7 @@ static const u16 sMudkipTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMarshtompTeachLearnset[] = { +static const u16 sMarshtompTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -10860,7 +10860,7 @@ static const u16 sMarshtompTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwampertTeachLearnset[] = { +static const u16 sSwampertTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -10911,7 +10911,7 @@ static const u16 sSwampertTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPoochyenaTeachLearnset[] = { +static const u16 sPoochyenaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -10947,7 +10947,7 @@ static const u16 sPoochyenaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMightyenaTeachLearnset[] = { +static const u16 sMightyenaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -10985,7 +10985,7 @@ static const u16 sMightyenaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZigzagoonTeachLearnset[] = { +static const u16 sZigzagoonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -11029,7 +11029,7 @@ static const u16 sZigzagoonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLinooneTeachLearnset[] = { +static const u16 sLinooneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -11076,16 +11076,16 @@ static const u16 sLinooneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWurmpleTeachLearnset[] = { +static const u16 sWurmpleTeachableLearnset[] = { MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sSilcoonTeachLearnset[] = { +static const u16 sSilcoonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBeautiflyTeachLearnset[] = { +static const u16 sBeautiflyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -11117,11 +11117,11 @@ static const u16 sBeautiflyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCascoonTeachLearnset[] = { +static const u16 sCascoonTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDustoxTeachLearnset[] = { +static const u16 sDustoxTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -11154,7 +11154,7 @@ static const u16 sDustoxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLotadTeachLearnset[] = { +static const u16 sLotadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, @@ -11191,7 +11191,7 @@ static const u16 sLotadTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLombreTeachLearnset[] = { +static const u16 sLombreTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -11237,7 +11237,7 @@ static const u16 sLombreTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLudicoloTeachLearnset[] = { +static const u16 sLudicoloTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -11290,7 +11290,7 @@ static const u16 sLudicoloTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeedotTeachLearnset[] = { +static const u16 sSeedotTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DIG, @@ -11324,7 +11324,7 @@ static const u16 sSeedotTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNuzleafTeachLearnset[] = { +static const u16 sNuzleafTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, @@ -11371,7 +11371,7 @@ static const u16 sNuzleafTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShiftryTeachLearnset[] = { +static const u16 sShiftryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -11420,7 +11420,7 @@ static const u16 sShiftryTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTaillowTeachLearnset[] = { +static const u16 sTaillowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -11450,7 +11450,7 @@ static const u16 sTaillowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwellowTeachLearnset[] = { +static const u16 sSwellowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -11481,7 +11481,7 @@ static const u16 sSwellowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWingullTeachLearnset[] = { +static const u16 sWingullTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11515,7 +11515,7 @@ static const u16 sWingullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPelipperTeachLearnset[] = { +static const u16 sPelipperTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11551,7 +11551,7 @@ static const u16 sPelipperTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaltsTeachLearnset[] = { +static const u16 sRaltsTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -11599,7 +11599,7 @@ static const u16 sRaltsTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKirliaTeachLearnset[] = { +static const u16 sKirliaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -11647,7 +11647,7 @@ static const u16 sKirliaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGardevoirTeachLearnset[] = { +static const u16 sGardevoirTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -11696,7 +11696,7 @@ static const u16 sGardevoirTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSurskitTeachLearnset[] = { +static const u16 sSurskitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -11731,7 +11731,7 @@ static const u16 sSurskitTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMasquerainTeachLearnset[] = { +static const u16 sMasquerainTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11768,7 +11768,7 @@ static const u16 sMasquerainTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShroomishTeachLearnset[] = { +static const u16 sShroomishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -11800,7 +11800,7 @@ static const u16 sShroomishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBreloomTeachLearnset[] = { +static const u16 sBreloomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -11849,7 +11849,7 @@ static const u16 sBreloomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlakothTeachLearnset[] = { +static const u16 sSlakothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11903,7 +11903,7 @@ static const u16 sSlakothTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVigorothTeachLearnset[] = { +static const u16 sVigorothTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -11960,7 +11960,7 @@ static const u16 sVigorothTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlakingTeachLearnset[] = { +static const u16 sSlakingTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -12018,7 +12018,7 @@ static const u16 sSlakingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNincadaTeachLearnset[] = { +static const u16 sNincadaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DIG, @@ -12049,7 +12049,7 @@ static const u16 sNincadaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNinjaskTeachLearnset[] = { +static const u16 sNinjaskTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -12085,7 +12085,7 @@ static const u16 sNinjaskTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShedinjaTeachLearnset[] = { +static const u16 sShedinjaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DIG, @@ -12120,7 +12120,7 @@ static const u16 sShedinjaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWhismurTeachLearnset[] = { +static const u16 sWhismurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -12166,7 +12166,7 @@ static const u16 sWhismurTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLoudredTeachLearnset[] = { +static const u16 sLoudredTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -12221,7 +12221,7 @@ static const u16 sLoudredTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sExploudTeachLearnset[] = { +static const u16 sExploudTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -12278,7 +12278,7 @@ static const u16 sExploudTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMakuhitaTeachLearnset[] = { +static const u16 sMakuhitaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -12322,7 +12322,7 @@ static const u16 sMakuhitaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHariyamaTeachLearnset[] = { +static const u16 sHariyamaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -12367,7 +12367,7 @@ static const u16 sHariyamaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAzurillTeachLearnset[] = { +static const u16 sAzurillTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -12403,7 +12403,7 @@ static const u16 sAzurillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNosepassTeachLearnset[] = { +static const u16 sNosepassTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -12446,7 +12446,7 @@ static const u16 sNosepassTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkittyTeachLearnset[] = { +static const u16 sSkittyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -12491,7 +12491,7 @@ static const u16 sSkittyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDelcattyTeachLearnset[] = { +static const u16 sDelcattyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -12539,7 +12539,7 @@ static const u16 sDelcattyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSableyeTeachLearnset[] = { +static const u16 sSableyeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -12594,7 +12594,7 @@ static const u16 sSableyeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMawileTeachLearnset[] = { +static const u16 sMawileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -12646,7 +12646,7 @@ static const u16 sMawileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAronTeachLearnset[] = { +static const u16 sAronTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -12687,7 +12687,7 @@ static const u16 sAronTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLaironTeachLearnset[] = { +static const u16 sLaironTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -12728,7 +12728,7 @@ static const u16 sLaironTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAggronTeachLearnset[] = { +static const u16 sAggronTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -12792,7 +12792,7 @@ static const u16 sAggronTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMedititeTeachLearnset[] = { +static const u16 sMedititeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -12842,7 +12842,7 @@ static const u16 sMedititeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMedichamTeachLearnset[] = { +static const u16 sMedichamTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -12893,7 +12893,7 @@ static const u16 sMedichamTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElectrikeTeachLearnset[] = { +static const u16 sElectrikeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -12929,7 +12929,7 @@ static const u16 sElectrikeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sManectricTeachLearnset[] = { +static const u16 sManectricTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -12967,7 +12967,7 @@ static const u16 sManectricTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPlusleTeachLearnset[] = { +static const u16 sPlusleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -13008,7 +13008,7 @@ static const u16 sPlusleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMinunTeachLearnset[] = { +static const u16 sMinunTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -13049,7 +13049,7 @@ static const u16 sMinunTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVolbeatTeachLearnset[] = { +static const u16 sVolbeatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -13098,7 +13098,7 @@ static const u16 sVolbeatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIllumiseTeachLearnset[] = { +static const u16 sIllumiseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -13147,7 +13147,7 @@ static const u16 sIllumiseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRoseliaTeachLearnset[] = { +static const u16 sRoseliaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -13183,7 +13183,7 @@ static const u16 sRoseliaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGulpinTeachLearnset[] = { +static const u16 sGulpinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -13228,7 +13228,7 @@ static const u16 sGulpinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwalotTeachLearnset[] = { +static const u16 sSwalotTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -13275,7 +13275,7 @@ static const u16 sSwalotTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCarvanhaTeachLearnset[] = { +static const u16 sCarvanhaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -13311,7 +13311,7 @@ static const u16 sCarvanhaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSharpedoTeachLearnset[] = { +static const u16 sSharpedoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -13353,7 +13353,7 @@ static const u16 sSharpedoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWailmerTeachLearnset[] = { +static const u16 sWailmerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -13391,7 +13391,7 @@ static const u16 sWailmerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWailordTeachLearnset[] = { +static const u16 sWailordTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -13430,7 +13430,7 @@ static const u16 sWailordTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNumelTeachLearnset[] = { +static const u16 sNumelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -13466,7 +13466,7 @@ static const u16 sNumelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCameruptTeachLearnset[] = { +static const u16 sCameruptTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -13506,7 +13506,7 @@ static const u16 sCameruptTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTorkoalTeachLearnset[] = { +static const u16 sTorkoalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -13544,7 +13544,7 @@ static const u16 sTorkoalTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpoinkTeachLearnset[] = { +static const u16 sSpoinkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -13586,7 +13586,7 @@ static const u16 sSpoinkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrumpigTeachLearnset[] = { +static const u16 sGrumpigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -13640,7 +13640,7 @@ static const u16 sGrumpigTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpindaTeachLearnset[] = { +static const u16 sSpindaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -13697,7 +13697,7 @@ static const u16 sSpindaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTrapinchTeachLearnset[] = { +static const u16 sTrapinchTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -13732,7 +13732,7 @@ static const u16 sTrapinchTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVibravaTeachLearnset[] = { +static const u16 sVibravaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -13770,7 +13770,7 @@ static const u16 sVibravaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFlygonTeachLearnset[] = { +static const u16 sFlygonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -13815,7 +13815,7 @@ static const u16 sFlygonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCacneaTeachLearnset[] = { +static const u16 sCacneaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, @@ -13854,7 +13854,7 @@ static const u16 sCacneaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCacturneTeachLearnset[] = { +static const u16 sCacturneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, @@ -13896,7 +13896,7 @@ static const u16 sCacturneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwabluTeachLearnset[] = { +static const u16 sSwabluTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -13931,7 +13931,7 @@ static const u16 sSwabluTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAltariaTeachLearnset[] = { +static const u16 sAltariaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -13974,7 +13974,7 @@ static const u16 sAltariaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZangooseTeachLearnset[] = { +static const u16 sZangooseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14037,7 +14037,7 @@ static const u16 sZangooseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeviperTeachLearnset[] = { +static const u16 sSeviperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -14076,7 +14076,7 @@ static const u16 sSeviperTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLunatoneTeachLearnset[] = { +static const u16 sLunatoneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -14120,7 +14120,7 @@ static const u16 sLunatoneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSolrockTeachLearnset[] = { +static const u16 sSolrockTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -14165,7 +14165,7 @@ static const u16 sSolrockTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBarboachTeachLearnset[] = { +static const u16 sBarboachTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -14199,7 +14199,7 @@ static const u16 sBarboachTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWhiscashTeachLearnset[] = { +static const u16 sWhiscashTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -14237,7 +14237,7 @@ static const u16 sWhiscashTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCorphishTeachLearnset[] = { +static const u16 sCorphishTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14281,7 +14281,7 @@ static const u16 sCorphishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCrawdauntTeachLearnset[] = { +static const u16 sCrawdauntTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14328,7 +14328,7 @@ static const u16 sCrawdauntTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBaltoyTeachLearnset[] = { +static const u16 sBaltoyTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -14369,7 +14369,7 @@ static const u16 sBaltoyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClaydolTeachLearnset[] = { +static const u16 sClaydolTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -14413,7 +14413,7 @@ static const u16 sClaydolTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLileepTeachLearnset[] = { +static const u16 sLileepTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -14447,7 +14447,7 @@ static const u16 sLileepTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCradilyTeachLearnset[] = { +static const u16 sCradilyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -14485,7 +14485,7 @@ static const u16 sCradilyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAnorithTeachLearnset[] = { +static const u16 sAnorithTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -14520,7 +14520,7 @@ static const u16 sAnorithTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArmaldoTeachLearnset[] = { +static const u16 sArmaldoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -14560,7 +14560,7 @@ static const u16 sArmaldoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFeebasTeachLearnset[] = { +static const u16 sFeebasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -14593,7 +14593,7 @@ static const u16 sFeebasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMiloticTeachLearnset[] = { +static const u16 sMiloticTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -14631,7 +14631,7 @@ static const u16 sMiloticTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCastformTeachLearnset[] = { +static const u16 sCastformTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -14674,7 +14674,7 @@ static const u16 sCastformTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKecleonTeachLearnset[] = { +static const u16 sKecleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -14739,7 +14739,7 @@ static const u16 sKecleonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShuppetTeachLearnset[] = { +static const u16 sShuppetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -14779,7 +14779,7 @@ static const u16 sShuppetTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBanetteTeachLearnset[] = { +static const u16 sBanetteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -14822,7 +14822,7 @@ static const u16 sBanetteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDuskullTeachLearnset[] = { +static const u16 sDuskullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -14860,7 +14860,7 @@ static const u16 sDuskullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDusclopsTeachLearnset[] = { +static const u16 sDusclopsTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -14916,7 +14916,7 @@ static const u16 sDusclopsTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTropiusTeachLearnset[] = { +static const u16 sTropiusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -14956,7 +14956,7 @@ static const u16 sTropiusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChimechoTeachLearnset[] = { +static const u16 sChimechoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -14997,7 +14997,7 @@ static const u16 sChimechoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAbsolTeachLearnset[] = { +static const u16 sAbsolTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -15055,13 +15055,13 @@ static const u16 sAbsolTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWynautTeachLearnset[] = { +static const u16 sWynautTeachableLearnset[] = { MOVE_SAFEGUARD, MOVE_COUNTER, MOVE_UNAVAILABLE, }; -static const u16 sSnoruntTeachLearnset[] = { +static const u16 sSnoruntTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -15094,7 +15094,7 @@ static const u16 sSnoruntTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGlalieTeachLearnset[] = { +static const u16 sGlalieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -15133,7 +15133,7 @@ static const u16 sGlalieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSphealTeachLearnset[] = { +static const u16 sSphealTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15173,7 +15173,7 @@ static const u16 sSphealTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSealeoTeachLearnset[] = { +static const u16 sSealeoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15214,7 +15214,7 @@ static const u16 sSealeoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWalreinTeachLearnset[] = { +static const u16 sWalreinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15257,7 +15257,7 @@ static const u16 sWalreinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClamperlTeachLearnset[] = { +static const u16 sClamperlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15288,7 +15288,7 @@ static const u16 sClamperlTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHuntailTeachLearnset[] = { +static const u16 sHuntailTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15324,7 +15324,7 @@ static const u16 sHuntailTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGorebyssTeachLearnset[] = { +static const u16 sGorebyssTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15362,7 +15362,7 @@ static const u16 sGorebyssTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRelicanthTeachLearnset[] = { +static const u16 sRelicanthTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -15403,7 +15403,7 @@ static const u16 sRelicanthTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLuvdiscTeachLearnset[] = { +static const u16 sLuvdiscTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -15436,7 +15436,7 @@ static const u16 sLuvdiscTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBagonTeachLearnset[] = { +static const u16 sBagonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -15474,7 +15474,7 @@ static const u16 sBagonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShelgonTeachLearnset[] = { +static const u16 sShelgonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -15513,7 +15513,7 @@ static const u16 sShelgonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSalamenceTeachLearnset[] = { +static const u16 sSalamenceTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -15558,11 +15558,11 @@ static const u16 sSalamenceTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBeldumTeachLearnset[] = { +static const u16 sBeldumTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMetangTeachLearnset[] = { +static const u16 sMetangTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CUT, @@ -15612,7 +15612,7 @@ static const u16 sMetangTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMetagrossTeachLearnset[] = { +static const u16 sMetagrossTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CUT, @@ -15662,7 +15662,7 @@ static const u16 sMetagrossTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegirockTeachLearnset[] = { +static const u16 sRegirockTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -15712,7 +15712,7 @@ static const u16 sRegirockTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegiceTeachLearnset[] = { +static const u16 sRegiceTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -15763,7 +15763,7 @@ static const u16 sRegiceTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegisteelTeachLearnset[] = { +static const u16 sRegisteelTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -15813,7 +15813,7 @@ static const u16 sRegisteelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLatiasTeachLearnset[] = { +static const u16 sLatiasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -15869,7 +15869,7 @@ static const u16 sLatiasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLatiosTeachLearnset[] = { +static const u16 sLatiosTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -15925,7 +15925,7 @@ static const u16 sLatiosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKyogreTeachLearnset[] = { +static const u16 sKyogreTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -15973,7 +15973,7 @@ static const u16 sKyogreTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGroudonTeachLearnset[] = { +static const u16 sGroudonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -16033,7 +16033,7 @@ static const u16 sGroudonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRayquazaTeachLearnset[] = { +static const u16 sRayquazaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -16090,7 +16090,7 @@ static const u16 sRayquazaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJirachiTeachLearnset[] = { +static const u16 sJirachiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -16140,7 +16140,7 @@ static const u16 sJirachiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeoxysTeachLearnset[] = { +static const u16 sDeoxysTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -16205,7 +16205,7 @@ static const u16 sDeoxysTeachLearnset[] = { #if P_NEW_POKEMON == TRUE -static const u16 sTurtwigTeachLearnset[] = { +static const u16 sTurtwigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -16240,7 +16240,7 @@ static const u16 sTurtwigTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrotleTeachLearnset[] = { +static const u16 sGrotleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -16273,7 +16273,7 @@ static const u16 sGrotleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTorterraTeachLearnset[] = { +static const u16 sTorterraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -16312,7 +16312,7 @@ static const u16 sTorterraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChimcharTeachLearnset[] = { +static const u16 sChimcharTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -16353,7 +16353,7 @@ static const u16 sChimcharTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMonfernoTeachLearnset[] = { +static const u16 sMonfernoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -16395,7 +16395,7 @@ static const u16 sMonfernoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sInfernapeTeachLearnset[] = { +static const u16 sInfernapeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -16442,7 +16442,7 @@ static const u16 sInfernapeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPiplupTeachLearnset[] = { +static const u16 sPiplupTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -16476,7 +16476,7 @@ static const u16 sPiplupTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPrinplupTeachLearnset[] = { +static const u16 sPrinplupTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -16512,7 +16512,7 @@ static const u16 sPrinplupTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEmpoleonTeachLearnset[] = { +static const u16 sEmpoleonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -16555,7 +16555,7 @@ static const u16 sEmpoleonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStarlyTeachLearnset[] = { +static const u16 sStarlyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -16583,7 +16583,7 @@ static const u16 sStarlyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStaraviaTeachLearnset[] = { +static const u16 sStaraviaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -16610,7 +16610,7 @@ static const u16 sStaraviaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStaraptorTeachLearnset[] = { +static const u16 sStaraptorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -16638,7 +16638,7 @@ static const u16 sStaraptorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBidoofTeachLearnset[] = { +static const u16 sBidoofTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -16680,7 +16680,7 @@ static const u16 sBidoofTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBibarelTeachLearnset[] = { +static const u16 sBibarelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -16728,13 +16728,13 @@ static const u16 sBibarelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKricketotTeachLearnset[] = { +static const u16 sKricketotTeachableLearnset[] = { MOVE_MUD_SLAP, MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sKricketuneTeachLearnset[] = { +static const u16 sKricketuneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -16766,7 +16766,7 @@ static const u16 sKricketuneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShinxTeachLearnset[] = { +static const u16 sShinxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -16799,7 +16799,7 @@ static const u16 sShinxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLuxioTeachLearnset[] = { +static const u16 sLuxioTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -16832,7 +16832,7 @@ static const u16 sLuxioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLuxrayTeachLearnset[] = { +static const u16 sLuxrayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -16866,7 +16866,7 @@ static const u16 sLuxrayTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBudewTeachLearnset[] = { +static const u16 sBudewTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -16898,7 +16898,7 @@ static const u16 sBudewTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRoseradeTeachLearnset[] = { +static const u16 sRoseradeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -16932,7 +16932,7 @@ static const u16 sRoseradeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCranidosTeachLearnset[] = { +static const u16 sCranidosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -16975,7 +16975,7 @@ static const u16 sCranidosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRampardosTeachLearnset[] = { +static const u16 sRampardosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -17022,7 +17022,7 @@ static const u16 sRampardosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShieldonTeachLearnset[] = { +static const u16 sShieldonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -17065,7 +17065,7 @@ static const u16 sShieldonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBastiodonTeachLearnset[] = { +static const u16 sBastiodonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -17106,14 +17106,14 @@ static const u16 sBastiodonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBurmyTeachLearnset[] = { +static const u16 sBurmyTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_PROTECT, MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sWormadamTeachLearnset[] = { +static const u16 sWormadamTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -17146,7 +17146,7 @@ static const u16 sWormadamTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMothimTeachLearnset[] = { +static const u16 sMothimTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -17181,14 +17181,14 @@ static const u16 sMothimTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCombeeTeachLearnset[] = { +static const u16 sCombeeTeachableLearnset[] = { MOVE_MUD_SLAP, MOVE_SNORE, MOVE_SWIFT, MOVE_UNAVAILABLE, }; -static const u16 sVespiquenTeachLearnset[] = { +static const u16 sVespiquenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -17218,7 +17218,7 @@ static const u16 sVespiquenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPachirisuTeachLearnset[] = { +static const u16 sPachirisuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -17252,7 +17252,7 @@ static const u16 sPachirisuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBuizelTeachLearnset[] = { +static const u16 sBuizelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -17292,7 +17292,7 @@ static const u16 sBuizelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFloatzelTeachLearnset[] = { +static const u16 sFloatzelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -17335,7 +17335,7 @@ static const u16 sFloatzelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCherubiTeachLearnset[] = { +static const u16 sCherubiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -17363,7 +17363,7 @@ static const u16 sCherubiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCherrimTeachLearnset[] = { +static const u16 sCherrimTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -17391,7 +17391,7 @@ static const u16 sCherrimTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShellosTeachLearnset[] = { +static const u16 sShellosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -17421,7 +17421,7 @@ static const u16 sShellosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGastrodonTeachLearnset[] = { +static const u16 sGastrodonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -17461,7 +17461,7 @@ static const u16 sGastrodonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAmbipomTeachLearnset[] = { +static const u16 sAmbipomTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -17508,7 +17508,7 @@ static const u16 sAmbipomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrifloonTeachLearnset[] = { +static const u16 sDrifloonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -17548,7 +17548,7 @@ static const u16 sDrifloonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrifblimTeachLearnset[] = { +static const u16 sDrifblimTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -17589,7 +17589,7 @@ static const u16 sDrifblimTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBunearyTeachLearnset[] = { +static const u16 sBunearyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -17628,7 +17628,7 @@ static const u16 sBunearyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLopunnyTeachLearnset[] = { +static const u16 sLopunnyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -17672,7 +17672,7 @@ static const u16 sLopunnyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMismagiusTeachLearnset[] = { +static const u16 sMismagiusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -17712,7 +17712,7 @@ static const u16 sMismagiusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHonchkrowTeachLearnset[] = { +static const u16 sHonchkrowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -17750,7 +17750,7 @@ static const u16 sHonchkrowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGlameowTeachLearnset[] = { +static const u16 sGlameowTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -17790,7 +17790,7 @@ static const u16 sGlameowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPuruglyTeachLearnset[] = { +static const u16 sPuruglyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -17834,7 +17834,7 @@ static const u16 sPuruglyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChinglingTeachLearnset[] = { +static const u16 sChinglingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -17873,7 +17873,7 @@ static const u16 sChinglingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStunkyTeachLearnset[] = { +static const u16 sStunkyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -17912,7 +17912,7 @@ static const u16 sStunkyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkuntankTeachLearnset[] = { +static const u16 sSkuntankTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -17952,7 +17952,7 @@ static const u16 sSkuntankTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBronzorTeachLearnset[] = { +static const u16 sBronzorTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -17988,7 +17988,7 @@ static const u16 sBronzorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBronzongTeachLearnset[] = { +static const u16 sBronzongTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -18028,7 +18028,7 @@ static const u16 sBronzongTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBonslyTeachLearnset[] = { +static const u16 sBonslyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -18062,7 +18062,7 @@ static const u16 sBonslyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMimeJrTeachLearnset[] = { +static const u16 sMimeJrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -18107,7 +18107,7 @@ static const u16 sMimeJrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHappinyTeachLearnset[] = { +static const u16 sHappinyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -18147,7 +18147,7 @@ static const u16 sHappinyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChatotTeachLearnset[] = { +static const u16 sChatotTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -18177,7 +18177,7 @@ static const u16 sChatotTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpiritombTeachLearnset[] = { +static const u16 sSpiritombTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -18213,7 +18213,7 @@ static const u16 sSpiritombTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGibleTeachLearnset[] = { +static const u16 sGibleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -18253,7 +18253,7 @@ static const u16 sGibleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGabiteTeachLearnset[] = { +static const u16 sGabiteTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -18291,7 +18291,7 @@ static const u16 sGabiteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGarchompTeachLearnset[] = { +static const u16 sGarchompTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -18333,7 +18333,7 @@ static const u16 sGarchompTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMunchlaxTeachLearnset[] = { +static const u16 sMunchlaxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -18386,7 +18386,7 @@ static const u16 sMunchlaxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRioluTeachLearnset[] = { +static const u16 sRioluTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -18425,7 +18425,7 @@ static const u16 sRioluTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLucarioTeachLearnset[] = { +static const u16 sLucarioTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -18469,7 +18469,7 @@ static const u16 sLucarioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHippopotasTeachLearnset[] = { +static const u16 sHippopotasTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -18502,7 +18502,7 @@ static const u16 sHippopotasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHippowdonTeachLearnset[] = { +static const u16 sHippowdonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -18535,7 +18535,7 @@ static const u16 sHippowdonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkorupiTeachLearnset[] = { +static const u16 sSkorupiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -18573,7 +18573,7 @@ static const u16 sSkorupiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrapionTeachLearnset[] = { +static const u16 sDrapionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -18615,7 +18615,7 @@ static const u16 sDrapionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCroagunkTeachLearnset[] = { +static const u16 sCroagunkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -18658,7 +18658,7 @@ static const u16 sCroagunkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxicroakTeachLearnset[] = { +static const u16 sToxicroakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -18702,7 +18702,7 @@ static const u16 sToxicroakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCarnivineTeachLearnset[] = { +static const u16 sCarnivineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -18733,7 +18733,7 @@ static const u16 sCarnivineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFinneonTeachLearnset[] = { +static const u16 sFinneonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -18765,7 +18765,7 @@ static const u16 sFinneonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLumineonTeachLearnset[] = { +static const u16 sLumineonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -18798,7 +18798,7 @@ static const u16 sLumineonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMantykeTeachLearnset[] = { +static const u16 sMantykeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -18831,7 +18831,7 @@ static const u16 sMantykeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSnoverTeachLearnset[] = { +static const u16 sSnoverTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BULLET_SEED, @@ -18868,7 +18868,7 @@ static const u16 sSnoverTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAbomasnowTeachLearnset[] = { +static const u16 sAbomasnowTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -18912,7 +18912,7 @@ static const u16 sAbomasnowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWeavileTeachLearnset[] = { +static const u16 sWeavileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -18961,7 +18961,7 @@ static const u16 sWeavileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagnezoneTeachLearnset[] = { +static const u16 sMagnezoneTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -18993,7 +18993,7 @@ static const u16 sMagnezoneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLickilickyTeachLearnset[] = { +static const u16 sLickilickyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -19049,7 +19049,7 @@ static const u16 sLickilickyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRhyperiorTeachLearnset[] = { +static const u16 sRhyperiorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -19100,7 +19100,7 @@ static const u16 sRhyperiorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTangrowthTeachLearnset[] = { +static const u16 sTangrowthTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -19140,7 +19140,7 @@ static const u16 sTangrowthTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElectivireTeachLearnset[] = { +static const u16 sElectivireTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -19186,7 +19186,7 @@ static const u16 sElectivireTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagmortarTeachLearnset[] = { +static const u16 sMagmortarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -19227,7 +19227,7 @@ static const u16 sMagmortarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTogekissTeachLearnset[] = { +static const u16 sTogekissTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -19272,7 +19272,7 @@ static const u16 sTogekissTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYanmegaTeachLearnset[] = { +static const u16 sYanmegaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -19305,7 +19305,7 @@ static const u16 sYanmegaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLeafeonTeachLearnset[] = { +static const u16 sLeafeonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -19342,7 +19342,7 @@ static const u16 sLeafeonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGlaceonTeachLearnset[] = { +static const u16 sGlaceonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -19377,7 +19377,7 @@ static const u16 sGlaceonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGliscorTeachLearnset[] = { +static const u16 sGliscorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -19419,7 +19419,7 @@ static const u16 sGliscorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMamoswineTeachLearnset[] = { +static const u16 sMamoswineTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -19455,7 +19455,7 @@ static const u16 sMamoswineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPorygonZTeachLearnset[] = { +static const u16 sPorygonZTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -19493,7 +19493,7 @@ static const u16 sPorygonZTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGalladeTeachLearnset[] = { +static const u16 sGalladeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -19549,7 +19549,7 @@ static const u16 sGalladeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sProbopassTeachLearnset[] = { +static const u16 sProbopassTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -19588,7 +19588,7 @@ static const u16 sProbopassTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDusknoirTeachLearnset[] = { +static const u16 sDusknoirTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -19635,7 +19635,7 @@ static const u16 sDusknoirTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFroslassTeachLearnset[] = { +static const u16 sFroslassTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -19678,7 +19678,7 @@ static const u16 sFroslassTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRotomTeachLearnset[] = { +static const u16 sRotomTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FLASH, @@ -19712,7 +19712,7 @@ static const u16 sRotomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUxieTeachLearnset[] = { +static const u16 sUxieTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -19757,7 +19757,7 @@ static const u16 sUxieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMespritTeachLearnset[] = { +static const u16 sMespritTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -19802,7 +19802,7 @@ static const u16 sMespritTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAzelfTeachLearnset[] = { +static const u16 sAzelfTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -19850,7 +19850,7 @@ static const u16 sAzelfTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDialgaTeachLearnset[] = { +static const u16 sDialgaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -19899,7 +19899,7 @@ static const u16 sDialgaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPalkiaTeachLearnset[] = { +static const u16 sPalkiaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -19950,7 +19950,7 @@ static const u16 sPalkiaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHeatranTeachLearnset[] = { +static const u16 sHeatranTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -19986,7 +19986,7 @@ static const u16 sHeatranTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegigigasTeachLearnset[] = { +static const u16 sRegigigasTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -20025,7 +20025,7 @@ static const u16 sRegigigasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGiratinaTeachLearnset[] = { +static const u16 sGiratinaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -20070,7 +20070,7 @@ static const u16 sGiratinaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCresseliaTeachLearnset[] = { +static const u16 sCresseliaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -20109,7 +20109,7 @@ static const u16 sCresseliaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPhioneTeachLearnset[] = { +static const u16 sPhioneTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_DOUBLE_TEAM, @@ -20140,7 +20140,7 @@ static const u16 sPhioneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sManaphyTeachLearnset[] = { +static const u16 sManaphyTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DIVE, @@ -20179,7 +20179,7 @@ static const u16 sManaphyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDarkraiTeachLearnset[] = { +static const u16 sDarkraiTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -20229,7 +20229,7 @@ static const u16 sDarkraiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShayminTeachLearnset[] = { +static const u16 sShayminTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -20260,7 +20260,7 @@ static const u16 sShayminTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArceusTeachLearnset[] = { +static const u16 sArceusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -20327,7 +20327,7 @@ static const u16 sArceusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVictiniTeachLearnset[] = { +static const u16 sVictiniTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -20368,7 +20368,7 @@ static const u16 sVictiniTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSnivyTeachLearnset[] = { +static const u16 sSnivyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -20401,7 +20401,7 @@ static const u16 sSnivyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sServineTeachLearnset[] = { +static const u16 sServineTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -20434,7 +20434,7 @@ static const u16 sServineTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSerperiorTeachLearnset[] = { +static const u16 sSerperiorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -20470,7 +20470,7 @@ static const u16 sSerperiorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTepigTeachLearnset[] = { +static const u16 sTepigTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -20502,7 +20502,7 @@ static const u16 sTepigTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPigniteTeachLearnset[] = { +static const u16 sPigniteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -20538,7 +20538,7 @@ static const u16 sPigniteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEmboarTeachLearnset[] = { +static const u16 sEmboarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -20577,7 +20577,7 @@ static const u16 sEmboarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOshawottTeachLearnset[] = { +static const u16 sOshawottTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -20612,7 +20612,7 @@ static const u16 sOshawottTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDewottTeachLearnset[] = { +static const u16 sDewottTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -20647,7 +20647,7 @@ static const u16 sDewottTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSamurottTeachLearnset[] = { +static const u16 sSamurottTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -20684,7 +20684,7 @@ static const u16 sSamurottTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPatratTeachLearnset[] = { +static const u16 sPatratTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -20712,7 +20712,7 @@ static const u16 sPatratTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWatchogTeachLearnset[] = { +static const u16 sWatchogTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -20753,7 +20753,7 @@ static const u16 sWatchogTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLillipupTeachLearnset[] = { +static const u16 sLillipupTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -20784,7 +20784,7 @@ static const u16 sLillipupTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHerdierTeachLearnset[] = { +static const u16 sHerdierTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -20815,7 +20815,7 @@ static const u16 sHerdierTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStoutlandTeachLearnset[] = { +static const u16 sStoutlandTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIG, @@ -20848,7 +20848,7 @@ static const u16 sStoutlandTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPurrloinTeachLearnset[] = { +static const u16 sPurrloinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -20879,7 +20879,7 @@ static const u16 sPurrloinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLiepardTeachLearnset[] = { +static const u16 sLiepardTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -20912,7 +20912,7 @@ static const u16 sLiepardTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPansageTeachLearnset[] = { +static const u16 sPansageTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CUT, @@ -20944,7 +20944,7 @@ static const u16 sPansageTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSimisageTeachLearnset[] = { +static const u16 sSimisageTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, @@ -20978,7 +20978,7 @@ static const u16 sSimisageTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPansearTeachLearnset[] = { +static const u16 sPansearTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -21011,7 +21011,7 @@ static const u16 sPansearTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSimisearTeachLearnset[] = { +static const u16 sSimisearTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, @@ -21047,7 +21047,7 @@ static const u16 sSimisearTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPanpourTeachLearnset[] = { +static const u16 sPanpourTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CUT, @@ -21084,7 +21084,7 @@ static const u16 sPanpourTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSimipourTeachLearnset[] = { +static const u16 sSimipourTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -21124,7 +21124,7 @@ static const u16 sSimipourTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMunnaTeachLearnset[] = { +static const u16 sMunnaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -21160,7 +21160,7 @@ static const u16 sMunnaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMusharnaTeachLearnset[] = { +static const u16 sMusharnaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -21196,7 +21196,7 @@ static const u16 sMusharnaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPidoveTeachLearnset[] = { +static const u16 sPidoveTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21220,7 +21220,7 @@ static const u16 sPidoveTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTranquillTeachLearnset[] = { +static const u16 sTranquillTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21244,7 +21244,7 @@ static const u16 sTranquillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUnfezantTeachLearnset[] = { +static const u16 sUnfezantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -21270,7 +21270,7 @@ static const u16 sUnfezantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlitzleTeachLearnset[] = { +static const u16 sBlitzleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21298,7 +21298,7 @@ static const u16 sBlitzleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZebstrikaTeachLearnset[] = { +static const u16 sZebstrikaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21327,7 +21327,7 @@ static const u16 sZebstrikaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRoggenrolaTeachLearnset[] = { +static const u16 sRoggenrolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -21353,7 +21353,7 @@ static const u16 sRoggenrolaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBoldoreTeachLearnset[] = { +static const u16 sBoldoreTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -21379,7 +21379,7 @@ static const u16 sBoldoreTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGigalithTeachLearnset[] = { +static const u16 sGigalithTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -21407,7 +21407,7 @@ static const u16 sGigalithTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWoobatTeachLearnset[] = { +static const u16 sWoobatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -21445,7 +21445,7 @@ static const u16 sWoobatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwoobatTeachLearnset[] = { +static const u16 sSwoobatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -21484,7 +21484,7 @@ static const u16 sSwoobatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrilburTeachLearnset[] = { +static const u16 sDrilburTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -21515,7 +21515,7 @@ static const u16 sDrilburTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sExcadrillTeachLearnset[] = { +static const u16 sExcadrillTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -21547,7 +21547,7 @@ static const u16 sExcadrillTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAudinoTeachLearnset[] = { +static const u16 sAudinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -21596,7 +21596,7 @@ static const u16 sAudinoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTimburrTeachLearnset[] = { +static const u16 sTimburrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -21631,7 +21631,7 @@ static const u16 sTimburrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGurdurrTeachLearnset[] = { +static const u16 sGurdurrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -21664,7 +21664,7 @@ static const u16 sGurdurrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sConkeldurrTeachLearnset[] = { +static const u16 sConkeldurrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -21699,7 +21699,7 @@ static const u16 sConkeldurrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTympoleTeachLearnset[] = { +static const u16 sTympoleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21723,7 +21723,7 @@ static const u16 sTympoleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPalpitoadTeachLearnset[] = { +static const u16 sPalpitoadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21749,7 +21749,7 @@ static const u16 sPalpitoadTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSeismitoadTeachLearnset[] = { +static const u16 sSeismitoadTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -21783,7 +21783,7 @@ static const u16 sSeismitoadTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sThrohTeachLearnset[] = { +static const u16 sThrohTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -21819,7 +21819,7 @@ static const u16 sThrohTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSawkTeachLearnset[] = { +static const u16 sSawkTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -21854,7 +21854,7 @@ static const u16 sSawkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSewaddleTeachLearnset[] = { +static const u16 sSewaddleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -21882,7 +21882,7 @@ static const u16 sSewaddleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwadloonTeachLearnset[] = { +static const u16 sSwadloonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -21909,7 +21909,7 @@ static const u16 sSwadloonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLeavannyTeachLearnset[] = { +static const u16 sLeavannyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -21941,7 +21941,7 @@ static const u16 sLeavannyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVenipedeTeachLearnset[] = { +static const u16 sVenipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21966,7 +21966,7 @@ static const u16 sVenipedeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWhirlipedeTeachLearnset[] = { +static const u16 sWhirlipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -21991,7 +21991,7 @@ static const u16 sWhirlipedeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScolipedeTeachLearnset[] = { +static const u16 sScolipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -22026,7 +22026,7 @@ static const u16 sScolipedeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCottoneeTeachLearnset[] = { +static const u16 sCottoneeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -22051,7 +22051,7 @@ static const u16 sCottoneeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWhimsicottTeachLearnset[] = { +static const u16 sWhimsicottTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -22081,7 +22081,7 @@ static const u16 sWhimsicottTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPetililTeachLearnset[] = { +static const u16 sPetililTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -22107,7 +22107,7 @@ static const u16 sPetililTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLilligantTeachLearnset[] = { +static const u16 sLilligantTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -22135,7 +22135,7 @@ static const u16 sLilligantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBasculinTeachLearnset[] = { +static const u16 sBasculinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIVE, @@ -22164,7 +22164,7 @@ static const u16 sBasculinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandileTeachLearnset[] = { +static const u16 sSandileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -22198,7 +22198,7 @@ static const u16 sSandileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKrokorokTeachLearnset[] = { +static const u16 sKrokorokTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, @@ -22234,7 +22234,7 @@ static const u16 sKrokorokTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKrookodileTeachLearnset[] = { +static const u16 sKrookodileTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -22275,7 +22275,7 @@ static const u16 sKrookodileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDarumakaTeachLearnset[] = { +static const u16 sDarumakaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -22312,7 +22312,7 @@ static const u16 sDarumakaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDarmanitanTeachLearnset[] = { +static const u16 sDarmanitanTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -22353,7 +22353,7 @@ static const u16 sDarmanitanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMaractusTeachLearnset[] = { +static const u16 sMaractusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULLET_SEED, @@ -22377,7 +22377,7 @@ static const u16 sMaractusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDwebbleTeachLearnset[] = { +static const u16 sDwebbleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -22409,7 +22409,7 @@ static const u16 sDwebbleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCrustleTeachLearnset[] = { +static const u16 sCrustleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -22440,7 +22440,7 @@ static const u16 sCrustleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScraggyTeachLearnset[] = { +static const u16 sScraggyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -22479,7 +22479,7 @@ static const u16 sScraggyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScraftyTeachLearnset[] = { +static const u16 sScraftyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -22519,7 +22519,7 @@ static const u16 sScraftyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSigilyphTeachLearnset[] = { +static const u16 sSigilyphTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22558,7 +22558,7 @@ static const u16 sSigilyphTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYamaskTeachLearnset[] = { +static const u16 sYamaskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -22589,7 +22589,7 @@ static const u16 sYamaskTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCofagrigusTeachLearnset[] = { +static const u16 sCofagrigusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -22620,7 +22620,7 @@ static const u16 sCofagrigusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTirtougaTeachLearnset[] = { +static const u16 sTirtougaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -22656,7 +22656,7 @@ static const u16 sTirtougaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCarracostaTeachLearnset[] = { +static const u16 sCarracostaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -22692,7 +22692,7 @@ static const u16 sCarracostaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArchenTeachLearnset[] = { +static const u16 sArchenTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -22724,7 +22724,7 @@ static const u16 sArchenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArcheopsTeachLearnset[] = { +static const u16 sArcheopsTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -22758,7 +22758,7 @@ static const u16 sArcheopsTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTrubbishTeachLearnset[] = { +static const u16 sTrubbishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -22783,7 +22783,7 @@ static const u16 sTrubbishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGarbodorTeachLearnset[] = { +static const u16 sGarbodorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -22812,7 +22812,7 @@ static const u16 sGarbodorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZoruaTeachLearnset[] = { +static const u16 sZoruaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22845,7 +22845,7 @@ static const u16 sZoruaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZoroarkTeachLearnset[] = { +static const u16 sZoroarkTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -22881,7 +22881,7 @@ static const u16 sZoroarkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMinccinoTeachLearnset[] = { +static const u16 sMinccinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DIG, @@ -22912,7 +22912,7 @@ static const u16 sMinccinoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCinccinoTeachLearnset[] = { +static const u16 sCinccinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_CALM_MIND, @@ -22944,7 +22944,7 @@ static const u16 sCinccinoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGothitaTeachLearnset[] = { +static const u16 sGothitaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -22982,7 +22982,7 @@ static const u16 sGothitaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGothoritaTeachLearnset[] = { +static const u16 sGothoritaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23020,7 +23020,7 @@ static const u16 sGothoritaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGothitelleTeachLearnset[] = { +static const u16 sGothitelleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -23060,7 +23060,7 @@ static const u16 sGothitelleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSolosisTeachLearnset[] = { +static const u16 sSolosisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23097,7 +23097,7 @@ static const u16 sSolosisTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDuosionTeachLearnset[] = { +static const u16 sDuosionTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23134,7 +23134,7 @@ static const u16 sDuosionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sReuniclusTeachLearnset[] = { +static const u16 sReuniclusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23178,7 +23178,7 @@ static const u16 sReuniclusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDucklettTeachLearnset[] = { +static const u16 sDucklettTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIVE, @@ -23206,7 +23206,7 @@ static const u16 sDucklettTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwannaTeachLearnset[] = { +static const u16 sSwannaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DIVE, @@ -23235,7 +23235,7 @@ static const u16 sSwannaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVanilliteTeachLearnset[] = { +static const u16 sVanilliteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -23262,7 +23262,7 @@ static const u16 sVanilliteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVanillishTeachLearnset[] = { +static const u16 sVanillishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -23289,7 +23289,7 @@ static const u16 sVanillishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVanilluxeTeachLearnset[] = { +static const u16 sVanilluxeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -23317,7 +23317,7 @@ static const u16 sVanilluxeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeerlingTeachLearnset[] = { +static const u16 sDeerlingTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23345,7 +23345,7 @@ static const u16 sDeerlingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSawsbuckTeachLearnset[] = { +static const u16 sSawsbuckTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -23377,7 +23377,7 @@ static const u16 sSawsbuckTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEmolgaTeachLearnset[] = { +static const u16 sEmolgaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -23406,7 +23406,7 @@ static const u16 sEmolgaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKarrablastTeachLearnset[] = { +static const u16 sKarrablastTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -23433,7 +23433,7 @@ static const u16 sKarrablastTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEscavalierTeachLearnset[] = { +static const u16 sEscavalierTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -23459,7 +23459,7 @@ static const u16 sEscavalierTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFoongusTeachLearnset[] = { +static const u16 sFoongusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23487,7 +23487,7 @@ static const u16 sFoongusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAmoongussTeachLearnset[] = { +static const u16 sAmoongussTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23512,7 +23512,7 @@ static const u16 sAmoongussTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFrillishTeachLearnset[] = { +static const u16 sFrillishTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -23549,7 +23549,7 @@ static const u16 sFrillishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJellicentTeachLearnset[] = { +static const u16 sJellicentTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -23587,7 +23587,7 @@ static const u16 sJellicentTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAlomomolaTeachLearnset[] = { +static const u16 sAlomomolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -23621,7 +23621,7 @@ static const u16 sAlomomolaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJoltikTeachLearnset[] = { +static const u16 sJoltikTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -23649,7 +23649,7 @@ static const u16 sJoltikTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGalvantulaTeachLearnset[] = { +static const u16 sGalvantulaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -23679,7 +23679,7 @@ static const u16 sGalvantulaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFerroseedTeachLearnset[] = { +static const u16 sFerroseedTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23706,7 +23706,7 @@ static const u16 sFerroseedTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFerrothornTeachLearnset[] = { +static const u16 sFerrothornTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -23739,7 +23739,7 @@ static const u16 sFerrothornTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKlinkTeachLearnset[] = { +static const u16 sKlinkTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FRUSTRATION, @@ -23762,7 +23762,7 @@ static const u16 sKlinkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKlangTeachLearnset[] = { +static const u16 sKlangTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FRUSTRATION, @@ -23785,7 +23785,7 @@ static const u16 sKlangTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKlinklangTeachLearnset[] = { +static const u16 sKlinklangTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FRUSTRATION, @@ -23809,12 +23809,12 @@ static const u16 sKlinklangTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTynamoTeachLearnset[] = { +static const u16 sTynamoTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; -static const u16 sEelektrikTeachLearnset[] = { +static const u16 sEelektrikTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -23841,7 +23841,7 @@ static const u16 sEelektrikTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEelektrossTeachLearnset[] = { +static const u16 sEelektrossTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_CUT, @@ -23881,7 +23881,7 @@ static const u16 sEelektrossTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sElgyemTeachLearnset[] = { +static const u16 sElgyemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23918,7 +23918,7 @@ static const u16 sElgyemTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBeheeyemTeachLearnset[] = { +static const u16 sBeheeyemTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23956,7 +23956,7 @@ static const u16 sBeheeyemTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLitwickTeachLearnset[] = { +static const u16 sLitwickTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -23990,7 +23990,7 @@ static const u16 sLitwickTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLampentTeachLearnset[] = { +static const u16 sLampentTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -24023,7 +24023,7 @@ static const u16 sLampentTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChandelureTeachLearnset[] = { +static const u16 sChandelureTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -24057,7 +24057,7 @@ static const u16 sChandelureTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAxewTeachLearnset[] = { +static const u16 sAxewTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24091,7 +24091,7 @@ static const u16 sAxewTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFraxureTeachLearnset[] = { +static const u16 sFraxureTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24123,7 +24123,7 @@ static const u16 sFraxureTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHaxorusTeachLearnset[] = { +static const u16 sHaxorusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -24160,7 +24160,7 @@ static const u16 sHaxorusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCubchooTeachLearnset[] = { +static const u16 sCubchooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -24194,7 +24194,7 @@ static const u16 sCubchooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBearticTeachLearnset[] = { +static const u16 sBearticTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -24236,7 +24236,7 @@ static const u16 sBearticTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCryogonalTeachLearnset[] = { +static const u16 sCryogonalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -24265,7 +24265,7 @@ static const u16 sCryogonalTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShelmetTeachLearnset[] = { +static const u16 sShelmetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -24290,7 +24290,7 @@ static const u16 sShelmetTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAccelgorTeachLearnset[] = { +static const u16 sAccelgorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -24314,7 +24314,7 @@ static const u16 sAccelgorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStunfiskTeachLearnset[] = { +static const u16 sStunfiskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -24348,7 +24348,7 @@ static const u16 sStunfiskTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMienfooTeachLearnset[] = { +static const u16 sMienfooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -24384,7 +24384,7 @@ static const u16 sMienfooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMienshaoTeachLearnset[] = { +static const u16 sMienshaoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -24420,7 +24420,7 @@ static const u16 sMienshaoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDruddigonTeachLearnset[] = { +static const u16 sDruddigonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24461,7 +24461,7 @@ static const u16 sDruddigonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolettTeachLearnset[] = { +static const u16 sGolettTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -24502,7 +24502,7 @@ static const u16 sGolettTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolurkTeachLearnset[] = { +static const u16 sGolurkTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -24547,7 +24547,7 @@ static const u16 sGolurkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPawniardTeachLearnset[] = { +static const u16 sPawniardTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -24580,7 +24580,7 @@ static const u16 sPawniardTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBisharpTeachLearnset[] = { +static const u16 sBisharpTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -24614,7 +24614,7 @@ static const u16 sBisharpTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBouffalantTeachLearnset[] = { +static const u16 sBouffalantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24645,7 +24645,7 @@ static const u16 sBouffalantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRuffletTeachLearnset[] = { +static const u16 sRuffletTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULK_UP, @@ -24674,7 +24674,7 @@ static const u16 sRuffletTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBraviaryTeachLearnset[] = { +static const u16 sBraviaryTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULK_UP, @@ -24704,7 +24704,7 @@ static const u16 sBraviaryTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVullabyTeachLearnset[] = { +static const u16 sVullabyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24736,7 +24736,7 @@ static const u16 sVullabyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMandibuzzTeachLearnset[] = { +static const u16 sMandibuzzTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24769,7 +24769,7 @@ static const u16 sMandibuzzTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHeatmorTeachLearnset[] = { +static const u16 sHeatmorTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24806,7 +24806,7 @@ static const u16 sHeatmorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDurantTeachLearnset[] = { +static const u16 sDurantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -24835,7 +24835,7 @@ static const u16 sDurantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeinoTeachLearnset[] = { +static const u16 sDeinoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -24865,7 +24865,7 @@ static const u16 sDeinoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZweilousTeachLearnset[] = { +static const u16 sZweilousTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -24895,7 +24895,7 @@ static const u16 sZweilousTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHydreigonTeachLearnset[] = { +static const u16 sHydreigonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -24936,7 +24936,7 @@ static const u16 sHydreigonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLarvestaTeachLearnset[] = { +static const u16 sLarvestaTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -24965,7 +24965,7 @@ static const u16 sLarvestaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVolcaronaTeachLearnset[] = { +static const u16 sVolcaronaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -24995,7 +24995,7 @@ static const u16 sVolcaronaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCobalionTeachLearnset[] = { +static const u16 sCobalionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -25026,7 +25026,7 @@ static const u16 sCobalionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTerrakionTeachLearnset[] = { +static const u16 sTerrakionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -25059,7 +25059,7 @@ static const u16 sTerrakionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVirizionTeachLearnset[] = { +static const u16 sVirizionTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -25093,7 +25093,7 @@ static const u16 sVirizionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTornadusTeachLearnset[] = { +static const u16 sTornadusTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25126,7 +25126,7 @@ static const u16 sTornadusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sThundurusTeachLearnset[] = { +static const u16 sThundurusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -25162,7 +25162,7 @@ static const u16 sThundurusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sReshiramTeachLearnset[] = { +static const u16 sReshiramTeachableLearnset[] = { MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -25198,7 +25198,7 @@ static const u16 sReshiramTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZekromTeachLearnset[] = { +static const u16 sZekromTeachableLearnset[] = { MOVE_CUT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -25236,7 +25236,7 @@ static const u16 sZekromTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLandorusTeachLearnset[] = { +static const u16 sLandorusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -25271,7 +25271,7 @@ static const u16 sLandorusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKyuremTeachLearnset[] = { +static const u16 sKyuremTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -25308,7 +25308,7 @@ static const u16 sKyuremTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKeldeoTeachLearnset[] = { +static const u16 sKeldeoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -25342,7 +25342,7 @@ static const u16 sKeldeoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeloettaTeachLearnset[] = { +static const u16 sMeloettaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -25383,7 +25383,7 @@ static const u16 sMeloettaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGenesectTeachLearnset[] = { +static const u16 sGenesectTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -25418,7 +25418,7 @@ static const u16 sGenesectTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChespinTeachLearnset[] = { +static const u16 sChespinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25460,7 +25460,7 @@ static const u16 sChespinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sQuilladinTeachLearnset[] = { +static const u16 sQuilladinTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25501,7 +25501,7 @@ static const u16 sQuilladinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChesnaughtTeachLearnset[] = { +static const u16 sChesnaughtTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -25545,7 +25545,7 @@ static const u16 sChesnaughtTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFennekinTeachLearnset[] = { +static const u16 sFennekinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -25577,7 +25577,7 @@ static const u16 sFennekinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBraixenTeachLearnset[] = { +static const u16 sBraixenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -25614,7 +25614,7 @@ static const u16 sBraixenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDelphoxTeachLearnset[] = { +static const u16 sDelphoxTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -25654,7 +25654,7 @@ static const u16 sDelphoxTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFroakieTeachLearnset[] = { +static const u16 sFroakieTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -25690,7 +25690,7 @@ static const u16 sFroakieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFrogadierTeachLearnset[] = { +static const u16 sFrogadierTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -25727,7 +25727,7 @@ static const u16 sFrogadierTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGreninjaTeachLearnset[] = { +static const u16 sGreninjaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -25765,7 +25765,7 @@ static const u16 sGreninjaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBunnelbyTeachLearnset[] = { +static const u16 sBunnelbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -25801,7 +25801,7 @@ static const u16 sBunnelbyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDiggersbyTeachLearnset[] = { +static const u16 sDiggersbyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -25842,7 +25842,7 @@ static const u16 sDiggersbyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFletchlingTeachLearnset[] = { +static const u16 sFletchlingTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -25869,7 +25869,7 @@ static const u16 sFletchlingTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFletchinderTeachLearnset[] = { +static const u16 sFletchinderTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_DOUBLE_TEAM, @@ -25898,7 +25898,7 @@ static const u16 sFletchinderTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTalonflameTeachLearnset[] = { +static const u16 sTalonflameTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BULK_UP, @@ -25930,16 +25930,16 @@ static const u16 sTalonflameTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScatterbugTeachLearnset[] = { +static const u16 sScatterbugTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpewpaTeachLearnset[] = { +static const u16 sSpewpaTeachableLearnset[] = { MOVE_PROTECT, MOVE_UNAVAILABLE, }; -static const u16 sVivillonTeachLearnset[] = { +static const u16 sVivillonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -25971,7 +25971,7 @@ static const u16 sVivillonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLitleoTeachLearnset[] = { +static const u16 sLitleoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -26003,7 +26003,7 @@ static const u16 sLitleoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPyroarTeachLearnset[] = { +static const u16 sPyroarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -26036,7 +26036,7 @@ static const u16 sPyroarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFlabebeTeachLearnset[] = { +static const u16 sFlabebeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26062,7 +26062,7 @@ static const u16 sFlabebeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFloetteTeachLearnset[] = { +static const u16 sFloetteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26088,7 +26088,7 @@ static const u16 sFloetteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFlorgesTeachLearnset[] = { +static const u16 sFlorgesTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26116,7 +26116,7 @@ static const u16 sFlorgesTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkiddoTeachLearnset[] = { +static const u16 sSkiddoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -26150,7 +26150,7 @@ static const u16 sSkiddoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGogoatTeachLearnset[] = { +static const u16 sGogoatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26185,7 +26185,7 @@ static const u16 sGogoatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPanchamTeachLearnset[] = { +static const u16 sPanchamTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26225,7 +26225,7 @@ static const u16 sPanchamTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPangoroTeachLearnset[] = { +static const u16 sPangoroTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26270,7 +26270,7 @@ static const u16 sPangoroTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFurfrouTeachLearnset[] = { +static const u16 sFurfrouTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -26298,7 +26298,7 @@ static const u16 sFurfrouTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEspurrTeachLearnset[] = { +static const u16 sEspurrTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -26334,7 +26334,7 @@ static const u16 sEspurrTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowsticTeachLearnset[] = { +static const u16 sMeowsticTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -26373,7 +26373,7 @@ static const u16 sMeowsticTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHonedgeTeachLearnset[] = { +static const u16 sHonedgeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26401,7 +26401,7 @@ static const u16 sHonedgeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDoubladeTeachLearnset[] = { +static const u16 sDoubladeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26429,7 +26429,7 @@ static const u16 sDoubladeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAegislashTeachLearnset[] = { +static const u16 sAegislashTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26460,7 +26460,7 @@ static const u16 sAegislashTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpritzeeTeachLearnset[] = { +static const u16 sSpritzeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26490,7 +26490,7 @@ static const u16 sSpritzeeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAromatisseTeachLearnset[] = { +static const u16 sAromatisseTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26522,7 +26522,7 @@ static const u16 sAromatisseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSwirlixTeachLearnset[] = { +static const u16 sSwirlixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26553,7 +26553,7 @@ static const u16 sSwirlixTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlurpuffTeachLearnset[] = { +static const u16 sSlurpuffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -26585,7 +26585,7 @@ static const u16 sSlurpuffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sInkayTeachLearnset[] = { +static const u16 sInkayTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26620,7 +26620,7 @@ static const u16 sInkayTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMalamarTeachLearnset[] = { +static const u16 sMalamarTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -26656,7 +26656,7 @@ static const u16 sMalamarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBinacleTeachLearnset[] = { +static const u16 sBinacleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -26698,7 +26698,7 @@ static const u16 sBinacleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBarbaracleTeachLearnset[] = { +static const u16 sBarbaracleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -26743,7 +26743,7 @@ static const u16 sBarbaracleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkrelpTeachLearnset[] = { +static const u16 sSkrelpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, @@ -26773,7 +26773,7 @@ static const u16 sSkrelpTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDragalgeTeachLearnset[] = { +static const u16 sDragalgeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, @@ -26805,7 +26805,7 @@ static const u16 sDragalgeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClauncherTeachLearnset[] = { +static const u16 sClauncherTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIVE, @@ -26836,7 +26836,7 @@ static const u16 sClauncherTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClawitzerTeachLearnset[] = { +static const u16 sClawitzerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIVE, @@ -26868,7 +26868,7 @@ static const u16 sClawitzerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHelioptileTeachLearnset[] = { +static const u16 sHelioptileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -26902,7 +26902,7 @@ static const u16 sHelioptileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHelioliskTeachLearnset[] = { +static const u16 sHelioliskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -26938,7 +26938,7 @@ static const u16 sHelioliskTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTyruntTeachLearnset[] = { +static const u16 sTyruntTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -26969,7 +26969,7 @@ static const u16 sTyruntTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTyrantrumTeachLearnset[] = { +static const u16 sTyrantrumTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -27001,7 +27001,7 @@ static const u16 sTyrantrumTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAmauraTeachLearnset[] = { +static const u16 sAmauraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -27041,7 +27041,7 @@ static const u16 sAmauraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAurorusTeachLearnset[] = { +static const u16 sAurorusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -27084,7 +27084,7 @@ static const u16 sAurorusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSylveonTeachLearnset[] = { +static const u16 sSylveonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -27117,7 +27117,7 @@ static const u16 sSylveonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHawluchaTeachLearnset[] = { +static const u16 sHawluchaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -27154,7 +27154,7 @@ static const u16 sHawluchaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDedenneTeachLearnset[] = { +static const u16 sDedenneTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CUT, @@ -27185,7 +27185,7 @@ static const u16 sDedenneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCarbinkTeachLearnset[] = { +static const u16 sCarbinkTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27216,7 +27216,7 @@ static const u16 sCarbinkTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGoomyTeachLearnset[] = { +static const u16 sGoomyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27245,7 +27245,7 @@ static const u16 sGoomyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSliggooTeachLearnset[] = { +static const u16 sSliggooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -27274,7 +27274,7 @@ static const u16 sSliggooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGoodraTeachLearnset[] = { +static const u16 sGoodraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -27314,7 +27314,7 @@ static const u16 sGoodraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKlefkiTeachLearnset[] = { +static const u16 sKlefkiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -27345,7 +27345,7 @@ static const u16 sKlefkiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPhantumpTeachLearnset[] = { +static const u16 sPhantumpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CUT, MOVE_DIG, @@ -27378,7 +27378,7 @@ static const u16 sPhantumpTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTrevenantTeachLearnset[] = { +static const u16 sTrevenantTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -27414,7 +27414,7 @@ static const u16 sTrevenantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPumpkabooTeachLearnset[] = { +static const u16 sPumpkabooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -27449,7 +27449,7 @@ static const u16 sPumpkabooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGourgeistTeachLearnset[] = { +static const u16 sGourgeistTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, @@ -27485,7 +27485,7 @@ static const u16 sGourgeistTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBergmiteTeachLearnset[] = { +static const u16 sBergmiteTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -27517,7 +27517,7 @@ static const u16 sBergmiteTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAvaluggTeachLearnset[] = { +static const u16 sAvaluggTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -27553,7 +27553,7 @@ static const u16 sAvaluggTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNoibatTeachLearnset[] = { +static const u16 sNoibatTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -27587,7 +27587,7 @@ static const u16 sNoibatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNoivernTeachLearnset[] = { +static const u16 sNoivernTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -27624,7 +27624,7 @@ static const u16 sNoivernTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sXerneasTeachLearnset[] = { +static const u16 sXerneasTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -27657,7 +27657,7 @@ static const u16 sXerneasTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYveltalTeachLearnset[] = { +static const u16 sYveltalTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -27689,7 +27689,7 @@ static const u16 sYveltalTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZygardeTeachLearnset[] = { +static const u16 sZygardeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -27718,7 +27718,7 @@ static const u16 sZygardeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDiancieTeachLearnset[] = { +static const u16 sDiancieTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27750,7 +27750,7 @@ static const u16 sDiancieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoopaTeachLearnset[] = { +static const u16 sHoopaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -27792,7 +27792,7 @@ static const u16 sHoopaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVolcanionTeachLearnset[] = { +static const u16 sVolcanionTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CUT, MOVE_DOUBLE_TEAM, @@ -27827,7 +27827,7 @@ static const u16 sVolcanionTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRowletTeachLearnset[] = { +static const u16 sRowletTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27851,7 +27851,7 @@ static const u16 sRowletTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDartrixTeachLearnset[] = { +static const u16 sDartrixTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27875,7 +27875,7 @@ static const u16 sDartrixTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDecidueyeTeachLearnset[] = { +static const u16 sDecidueyeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -27900,7 +27900,7 @@ static const u16 sDecidueyeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLittenTeachLearnset[] = { +static const u16 sLittenTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, @@ -27927,7 +27927,7 @@ static const u16 sLittenTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTorracatTeachLearnset[] = { +static const u16 sTorracatTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, @@ -27953,7 +27953,7 @@ static const u16 sTorracatTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIncineroarTeachLearnset[] = { +static const u16 sIncineroarTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -27986,7 +27986,7 @@ static const u16 sIncineroarTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPopplioTeachLearnset[] = { +static const u16 sPopplioTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28012,7 +28012,7 @@ static const u16 sPopplioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBrionneTeachLearnset[] = { +static const u16 sBrionneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28038,7 +28038,7 @@ static const u16 sBrionneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPrimarinaTeachLearnset[] = { +static const u16 sPrimarinaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28069,7 +28069,7 @@ static const u16 sPrimarinaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPikipekTeachLearnset[] = { +static const u16 sPikipekTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28094,7 +28094,7 @@ static const u16 sPikipekTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTrumbeakTeachLearnset[] = { +static const u16 sTrumbeakTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28119,7 +28119,7 @@ static const u16 sTrumbeakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToucannonTeachLearnset[] = { +static const u16 sToucannonTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28145,7 +28145,7 @@ static const u16 sToucannonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYungoosTeachLearnset[] = { +static const u16 sYungoosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -28171,7 +28171,7 @@ static const u16 sYungoosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGumshoosTeachLearnset[] = { +static const u16 sGumshoosTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -28201,7 +28201,7 @@ static const u16 sGumshoosTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrubbinTeachLearnset[] = { +static const u16 sGrubbinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -28226,7 +28226,7 @@ static const u16 sGrubbinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCharjabugTeachLearnset[] = { +static const u16 sCharjabugTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -28250,7 +28250,7 @@ static const u16 sCharjabugTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVikavoltTeachLearnset[] = { +static const u16 sVikavoltTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -28277,7 +28277,7 @@ static const u16 sVikavoltTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCrabrawlerTeachLearnset[] = { +static const u16 sCrabrawlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -28307,7 +28307,7 @@ static const u16 sCrabrawlerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCrabominableTeachLearnset[] = { +static const u16 sCrabominableTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -28341,7 +28341,7 @@ static const u16 sCrabominableTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOricorioTeachLearnset[] = { +static const u16 sOricorioTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -28367,7 +28367,7 @@ static const u16 sOricorioTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCutieflyTeachLearnset[] = { +static const u16 sCutieflyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -28395,7 +28395,7 @@ static const u16 sCutieflyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRibombeeTeachLearnset[] = { +static const u16 sRibombeeTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_CALM_MIND, @@ -28424,7 +28424,7 @@ static const u16 sRibombeeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRockruffTeachLearnset[] = { +static const u16 sRockruffTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -28446,7 +28446,7 @@ static const u16 sRockruffTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocTeachLearnset[] = { +static const u16 sLycanrocTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -28471,7 +28471,7 @@ static const u16 sLycanrocTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWishiwashiTeachLearnset[] = { +static const u16 sWishiwashiTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, @@ -28498,7 +28498,7 @@ static const u16 sWishiwashiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMareanieTeachLearnset[] = { +static const u16 sMareanieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28525,7 +28525,7 @@ static const u16 sMareanieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxapexTeachLearnset[] = { +static const u16 sToxapexTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28553,7 +28553,7 @@ static const u16 sToxapexTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMudbrayTeachLearnset[] = { +static const u16 sMudbrayTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -28580,7 +28580,7 @@ static const u16 sMudbrayTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMudsdaleTeachLearnset[] = { +static const u16 sMudsdaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -28605,7 +28605,7 @@ static const u16 sMudsdaleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDewpiderTeachLearnset[] = { +static const u16 sDewpiderTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28630,7 +28630,7 @@ static const u16 sDewpiderTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAraquanidTeachLearnset[] = { +static const u16 sAraquanidTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DOUBLE_TEAM, @@ -28657,7 +28657,7 @@ static const u16 sAraquanidTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFomantisTeachLearnset[] = { +static const u16 sFomantisTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -28680,7 +28680,7 @@ static const u16 sFomantisTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLurantisTeachLearnset[] = { +static const u16 sLurantisTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28706,7 +28706,7 @@ static const u16 sLurantisTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMorelullTeachLearnset[] = { +static const u16 sMorelullTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FLASH, @@ -28731,7 +28731,7 @@ static const u16 sMorelullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShiinoticTeachLearnset[] = { +static const u16 sShiinoticTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FLASH, @@ -28756,7 +28756,7 @@ static const u16 sShiinoticTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSalanditTeachLearnset[] = { +static const u16 sSalanditTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -28783,7 +28783,7 @@ static const u16 sSalanditTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSalazzleTeachLearnset[] = { +static const u16 sSalazzleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -28810,7 +28810,7 @@ static const u16 sSalazzleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStuffulTeachLearnset[] = { +static const u16 sStuffulTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28842,7 +28842,7 @@ static const u16 sStuffulTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBewearTeachLearnset[] = { +static const u16 sBewearTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -28874,7 +28874,7 @@ static const u16 sBewearTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBounsweetTeachLearnset[] = { +static const u16 sBounsweetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -28897,7 +28897,7 @@ static const u16 sBounsweetTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSteeneeTeachLearnset[] = { +static const u16 sSteeneeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -28920,7 +28920,7 @@ static const u16 sSteeneeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTsareenaTeachLearnset[] = { +static const u16 sTsareenaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -28943,7 +28943,7 @@ static const u16 sTsareenaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sComfeyTeachLearnset[] = { +static const u16 sComfeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -28971,7 +28971,7 @@ static const u16 sComfeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOranguruTeachLearnset[] = { +static const u16 sOranguruTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29004,7 +29004,7 @@ static const u16 sOranguruTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPassimianTeachLearnset[] = { +static const u16 sPassimianTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29040,7 +29040,7 @@ static const u16 sPassimianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWimpodTeachLearnset[] = { +static const u16 sWimpodTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -29062,7 +29062,7 @@ static const u16 sWimpodTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolisopodTeachLearnset[] = { +static const u16 sGolisopodTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -29098,7 +29098,7 @@ static const u16 sGolisopodTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandygastTeachLearnset[] = { +static const u16 sSandygastTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -29123,7 +29123,7 @@ static const u16 sSandygastTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPalossandTeachLearnset[] = { +static const u16 sPalossandTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -29149,7 +29149,7 @@ static const u16 sPalossandTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPyukumukuTeachLearnset[] = { +static const u16 sPyukumukuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_HAIL, @@ -29170,7 +29170,7 @@ static const u16 sPyukumukuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTypeNullTeachLearnset[] = { +static const u16 sTypeNullTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -29198,7 +29198,7 @@ static const u16 sTypeNullTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSilvallyTeachLearnset[] = { +static const u16 sSilvallyTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -29234,7 +29234,7 @@ static const u16 sSilvallyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMiniorTeachLearnset[] = { +static const u16 sMiniorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29268,7 +29268,7 @@ static const u16 sMiniorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKomalaTeachLearnset[] = { +static const u16 sKomalaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -29294,7 +29294,7 @@ static const u16 sKomalaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTurtonatorTeachLearnset[] = { +static const u16 sTurtonatorTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, @@ -29328,7 +29328,7 @@ static const u16 sTurtonatorTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTogedemaruTeachLearnset[] = { +static const u16 sTogedemaruTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -29354,7 +29354,7 @@ static const u16 sTogedemaruTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMimikyuTeachLearnset[] = { +static const u16 sMimikyuTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, @@ -29388,7 +29388,7 @@ static const u16 sMimikyuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBruxishTeachLearnset[] = { +static const u16 sBruxishTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -29424,7 +29424,7 @@ static const u16 sBruxishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrampaTeachLearnset[] = { +static const u16 sDrampaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -29466,7 +29466,7 @@ static const u16 sDrampaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDhelmiseTeachLearnset[] = { +static const u16 sDhelmiseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29496,7 +29496,7 @@ static const u16 sDhelmiseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sJangmooTeachLearnset[] = { +static const u16 sJangmooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29527,7 +29527,7 @@ static const u16 sJangmooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHakamooTeachLearnset[] = { +static const u16 sHakamooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29557,7 +29557,7 @@ static const u16 sHakamooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKommooTeachLearnset[] = { +static const u16 sKommooTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -29595,7 +29595,7 @@ static const u16 sKommooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTapuKokoTeachLearnset[] = { +static const u16 sTapuKokoTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29629,7 +29629,7 @@ static const u16 sTapuKokoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTapuLeleTeachLearnset[] = { +static const u16 sTapuLeleTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -29659,7 +29659,7 @@ static const u16 sTapuLeleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTapuBuluTeachLearnset[] = { +static const u16 sTapuBuluTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, @@ -29691,7 +29691,7 @@ static const u16 sTapuBuluTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sTapuFiniTeachLearnset[] = { +static const u16 sTapuFiniTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -29723,15 +29723,15 @@ static const u16 sTapuFiniTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCosmogTeachLearnset[] = { +static const u16 sCosmogTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCosmoemTeachLearnset[] = { +static const u16 sCosmoemTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSolgaleoTeachLearnset[] = { +static const u16 sSolgaleoTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, @@ -29767,7 +29767,7 @@ static const u16 sSolgaleoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLunalaTeachLearnset[] = { +static const u16 sLunalaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -29804,7 +29804,7 @@ static const u16 sLunalaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNihilegoTeachLearnset[] = { +static const u16 sNihilegoTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_FACADE, MOVE_FRUSTRATION, @@ -29829,7 +29829,7 @@ static const u16 sNihilegoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBuzzwoleTeachLearnset[] = { +static const u16 sBuzzwoleTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_DOUBLE_TEAM, @@ -29858,7 +29858,7 @@ static const u16 sBuzzwoleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPheromosaTeachLearnset[] = { +static const u16 sPheromosaTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, @@ -29884,7 +29884,7 @@ static const u16 sPheromosaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sXurkitreeTeachLearnset[] = { +static const u16 sXurkitreeTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -29912,7 +29912,7 @@ static const u16 sXurkitreeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCelesteelaTeachLearnset[] = { +static const u16 sCelesteelaTeachableLearnset[] = { MOVE_DOUBLE_TEAM, MOVE_EARTHQUAKE, MOVE_FACADE, @@ -29939,7 +29939,7 @@ static const u16 sCelesteelaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKartanaTeachLearnset[] = { +static const u16 sKartanaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -29961,7 +29961,7 @@ static const u16 sKartanaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGuzzlordTeachLearnset[] = { +static const u16 sGuzzlordTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -29988,7 +29988,7 @@ static const u16 sGuzzlordTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNecrozmaTeachLearnset[] = { +static const u16 sNecrozmaTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -30019,7 +30019,7 @@ static const u16 sNecrozmaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMagearnaTeachLearnset[] = { +static const u16 sMagearnaTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -30044,7 +30044,7 @@ static const u16 sMagearnaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMarshadowTeachLearnset[] = { +static const u16 sMarshadowTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_CALM_MIND, @@ -30074,7 +30074,7 @@ static const u16 sMarshadowTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPoipoleTeachLearnset[] = { +static const u16 sPoipoleTeachableLearnset[] = { MOVE_FACADE, MOVE_FRUSTRATION, MOVE_HIDDEN_POWER, @@ -30091,7 +30091,7 @@ static const u16 sPoipoleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNaganadelTeachLearnset[] = { +static const u16 sNaganadelTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DOUBLE_TEAM, MOVE_DRAGON_CLAW, @@ -30118,7 +30118,7 @@ static const u16 sNaganadelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStakatakaTeachLearnset[] = { +static const u16 sStakatakaTeachableLearnset[] = { MOVE_EARTHQUAKE, MOVE_FACADE, MOVE_FRUSTRATION, @@ -30141,7 +30141,7 @@ static const u16 sStakatakaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlacephalonTeachLearnset[] = { +static const u16 sBlacephalonTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -30170,7 +30170,7 @@ static const u16 sBlacephalonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZeraoraTeachLearnset[] = { +static const u16 sZeraoraTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -30199,17 +30199,17 @@ static const u16 sZeraoraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeltanTeachLearnset[] = { +static const u16 sMeltanTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; -static const u16 sMelmetalTeachLearnset[] = { +static const u16 sMelmetalTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_UNAVAILABLE, }; -static const u16 sGrookeyTeachLearnset[] = { +static const u16 sGrookeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_GIGA_DRAIN, @@ -30230,7 +30230,7 @@ static const u16 sGrookeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sThwackeyTeachLearnset[] = { +static const u16 sThwackeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_GIGA_DRAIN, @@ -30250,7 +30250,7 @@ static const u16 sThwackeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRillaboomTeachLearnset[] = { +static const u16 sRillaboomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -30276,7 +30276,7 @@ static const u16 sRillaboomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sScorbunnyTeachLearnset[] = { +static const u16 sScorbunnyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_FIRE_BLAST, @@ -30297,7 +30297,7 @@ static const u16 sScorbunnyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRabootTeachLearnset[] = { +static const u16 sRabootTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_FACADE, @@ -30319,7 +30319,7 @@ static const u16 sRabootTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCinderaceTeachLearnset[] = { +static const u16 sCinderaceTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_FACADE, @@ -30344,7 +30344,7 @@ static const u16 sCinderaceTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSobbleTeachLearnset[] = { +static const u16 sSobbleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DOUBLE_TEAM, @@ -30365,7 +30365,7 @@ static const u16 sSobbleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrizzileTeachLearnset[] = { +static const u16 sDrizzileTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_FACADE, @@ -30385,7 +30385,7 @@ static const u16 sDrizzileTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sInteleonTeachLearnset[] = { +static const u16 sInteleonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -30413,7 +30413,7 @@ static const u16 sInteleonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSkwovetTeachLearnset[] = { +static const u16 sSkwovetTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DIG, @@ -30433,7 +30433,7 @@ static const u16 sSkwovetTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGreedentTeachLearnset[] = { +static const u16 sGreedentTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_DIG, @@ -30454,7 +30454,7 @@ static const u16 sGreedentTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRookideeTeachLearnset[] = { +static const u16 sRookideeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_FLY, @@ -30472,7 +30472,7 @@ static const u16 sRookideeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCorvisquireTeachLearnset[] = { +static const u16 sCorvisquireTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_FLY, @@ -30489,7 +30489,7 @@ static const u16 sCorvisquireTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCorviknightTeachLearnset[] = { +static const u16 sCorviknightTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_FACADE, @@ -30512,11 +30512,11 @@ static const u16 sCorviknightTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBlipbugTeachLearnset[] = { +static const u16 sBlipbugTeachableLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDottlerTeachLearnset[] = { +static const u16 sDottlerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -30536,7 +30536,7 @@ static const u16 sDottlerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sOrbeetleTeachLearnset[] = { +static const u16 sOrbeetleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -30558,7 +30558,7 @@ static const u16 sOrbeetleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNickitTeachLearnset[] = { +static const u16 sNickitTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -30575,7 +30575,7 @@ static const u16 sNickitTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sThievulTeachLearnset[] = { +static const u16 sThievulTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -30594,7 +30594,7 @@ static const u16 sThievulTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGossifleurTeachLearnset[] = { +static const u16 sGossifleurTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_FACADE, @@ -30611,7 +30611,7 @@ static const u16 sGossifleurTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEldegossTeachLearnset[] = { +static const u16 sEldegossTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_FACADE, @@ -30629,7 +30629,7 @@ static const u16 sEldegossTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWoolooTeachLearnset[] = { +static const u16 sWoolooTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -30646,7 +30646,7 @@ static const u16 sWoolooTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDubwoolTeachLearnset[] = { +static const u16 sDubwoolTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -30665,7 +30665,7 @@ static const u16 sDubwoolTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sChewtleTeachLearnset[] = { +static const u16 sChewtleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_FACADE, @@ -30682,7 +30682,7 @@ static const u16 sChewtleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrednawTeachLearnset[] = { +static const u16 sDrednawTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -30710,7 +30710,7 @@ static const u16 sDrednawTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYamperTeachLearnset[] = { +static const u16 sYamperTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -30729,7 +30729,7 @@ static const u16 sYamperTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBoltundTeachLearnset[] = { +static const u16 sBoltundTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULK_UP, MOVE_DIG, @@ -30749,7 +30749,7 @@ static const u16 sBoltundTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRolycolyTeachLearnset[] = { +static const u16 sRolycolyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -30768,7 +30768,7 @@ static const u16 sRolycolyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCarkolTeachLearnset[] = { +static const u16 sCarkolTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -30788,7 +30788,7 @@ static const u16 sCarkolTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCoalossalTeachLearnset[] = { +static const u16 sCoalossalTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -30815,14 +30815,14 @@ static const u16 sCoalossalTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sApplinTeachLearnset[] = { +static const u16 sApplinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DEFENSE_CURL, MOVE_ROLLOUT, MOVE_UNAVAILABLE, }; -static const u16 sFlappleTeachLearnset[] = { +static const u16 sFlappleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_FACADE, @@ -30840,7 +30840,7 @@ static const u16 sFlappleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAppletunTeachLearnset[] = { +static const u16 sAppletunTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BULLET_SEED, MOVE_EARTHQUAKE, @@ -30862,7 +30862,7 @@ static const u16 sAppletunTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSilicobraTeachLearnset[] = { +static const u16 sSilicobraTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -30878,7 +30878,7 @@ static const u16 sSilicobraTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandacondaTeachLearnset[] = { +static const u16 sSandacondaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -30896,7 +30896,7 @@ static const u16 sSandacondaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCramorantTeachLearnset[] = { +static const u16 sCramorantTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BLIZZARD, @@ -30919,7 +30919,7 @@ static const u16 sCramorantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArrokudaTeachLearnset[] = { +static const u16 sArrokudaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIVE, @@ -30937,7 +30937,7 @@ static const u16 sArrokudaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sBarraskewdaTeachLearnset[] = { +static const u16 sBarraskewdaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIVE, @@ -30957,7 +30957,7 @@ static const u16 sBarraskewdaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxelTeachLearnset[] = { +static const u16 sToxelTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -30969,7 +30969,7 @@ static const u16 sToxelTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxtricityTeachLearnset[] = { +static const u16 sToxtricityTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -30995,7 +30995,7 @@ static const u16 sToxtricityTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSizzlipedeTeachLearnset[] = { +static const u16 sSizzlipedeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -31010,7 +31010,7 @@ static const u16 sSizzlipedeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCentiskorchTeachLearnset[] = { +static const u16 sCentiskorchTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_FIRE_BLAST, @@ -31028,7 +31028,7 @@ static const u16 sCentiskorchTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sClobbopusTeachLearnset[] = { +static const u16 sClobbopusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -31050,7 +31050,7 @@ static const u16 sClobbopusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrapploctTeachLearnset[] = { +static const u16 sGrapploctTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -31074,7 +31074,7 @@ static const u16 sGrapploctTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSinisteaTeachLearnset[] = { +static const u16 sSinisteaTeachableLearnset[] = { MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_PROTECT, @@ -31089,7 +31089,7 @@ static const u16 sSinisteaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPolteageistTeachLearnset[] = { +static const u16 sPolteageistTeachableLearnset[] = { MOVE_FACADE, MOVE_GIGA_DRAIN, MOVE_HYPER_BEAM, @@ -31107,7 +31107,7 @@ static const u16 sPolteageistTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHatennaTeachLearnset[] = { +static const u16 sHatennaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31126,7 +31126,7 @@ static const u16 sHatennaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHattremTeachLearnset[] = { +static const u16 sHattremTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31145,7 +31145,7 @@ static const u16 sHattremTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHattereneTeachLearnset[] = { +static const u16 sHattereneTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31167,7 +31167,7 @@ static const u16 sHattereneTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sImpidimpTeachLearnset[] = { +static const u16 sImpidimpTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -31187,7 +31187,7 @@ static const u16 sImpidimpTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMorgremTeachLearnset[] = { +static const u16 sMorgremTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_LIGHT_SCREEN, @@ -31209,7 +31209,7 @@ static const u16 sMorgremTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrimmsnarlTeachLearnset[] = { +static const u16 sGrimmsnarlTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -31238,7 +31238,7 @@ static const u16 sGrimmsnarlTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sObstagoonTeachLearnset[] = { +static const u16 sObstagoonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -31276,7 +31276,7 @@ static const u16 sObstagoonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPerrserkerTeachLearnset[] = { +static const u16 sPerrserkerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -31301,7 +31301,7 @@ static const u16 sPerrserkerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCursolaTeachLearnset[] = { +static const u16 sCursolaTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -31334,7 +31334,7 @@ static const u16 sCursolaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSirfetchdTeachLearnset[] = { +static const u16 sSirfetchdTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_FACADE, @@ -31353,7 +31353,7 @@ static const u16 sSirfetchdTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMrRimeTeachLearnset[] = { +static const u16 sMrRimeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -31392,7 +31392,7 @@ static const u16 sMrRimeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRunerigusTeachLearnset[] = { +static const u16 sRunerigusTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_EARTHQUAKE, @@ -31417,7 +31417,7 @@ static const u16 sRunerigusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMilceryTeachLearnset[] = { +static const u16 sMilceryTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -31429,7 +31429,7 @@ static const u16 sMilceryTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sAlcremieTeachLearnset[] = { +static const u16 sAlcremieTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31449,7 +31449,7 @@ static const u16 sAlcremieTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFalinksTeachLearnset[] = { +static const u16 sFalinksTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_FACADE, @@ -31468,7 +31468,7 @@ static const u16 sFalinksTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPincurchinTeachLearnset[] = { +static const u16 sPincurchinTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -31485,7 +31485,7 @@ static const u16 sPincurchinTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSnomTeachLearnset[] = { +static const u16 sSnomTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_PROTECT, @@ -31498,7 +31498,7 @@ static const u16 sSnomTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFrosmothTeachLearnset[] = { +static const u16 sFrosmothTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -31520,7 +31520,7 @@ static const u16 sFrosmothTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStonjournerTeachLearnset[] = { +static const u16 sStonjournerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_EARTHQUAKE, MOVE_FACADE, @@ -31540,7 +31540,7 @@ static const u16 sStonjournerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEiscueTeachLearnset[] = { +static const u16 sEiscueTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIVE, @@ -31562,7 +31562,7 @@ static const u16 sEiscueTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIndeedeeTeachLearnset[] = { +static const u16 sIndeedeeTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -31580,7 +31580,7 @@ static const u16 sIndeedeeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMorpekoTeachLearnset[] = { +static const u16 sMorpekoTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULLET_SEED, @@ -31603,7 +31603,7 @@ static const u16 sMorpekoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCufantTeachLearnset[] = { +static const u16 sCufantTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -31627,7 +31627,7 @@ static const u16 sCufantTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCopperajahTeachLearnset[] = { +static const u16 sCopperajahTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DIG, @@ -31651,7 +31651,7 @@ static const u16 sCopperajahTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDracozoltTeachLearnset[] = { +static const u16 sDracozoltTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_DRAGON_CLAW, MOVE_EARTHQUAKE, @@ -31681,7 +31681,7 @@ static const u16 sDracozoltTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArctozoltTeachLearnset[] = { +static const u16 sArctozoltTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_FACADE, MOVE_HAIL, @@ -31710,7 +31710,7 @@ static const u16 sArctozoltTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDracovishTeachLearnset[] = { +static const u16 sDracovishTeachableLearnset[] = { MOVE_DIVE, MOVE_EARTHQUAKE, MOVE_FACADE, @@ -31731,7 +31731,7 @@ static const u16 sDracovishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArctovishTeachLearnset[] = { +static const u16 sArctovishTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIVE, MOVE_FACADE, @@ -31754,7 +31754,7 @@ static const u16 sArctovishTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDuraludonTeachLearnset[] = { +static const u16 sDuraludonTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_DRAGON_CLAW, @@ -31780,7 +31780,7 @@ static const u16 sDuraludonTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDreepyTeachLearnset[] = { +static const u16 sDreepyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -31795,7 +31795,7 @@ static const u16 sDreepyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDrakloakTeachLearnset[] = { +static const u16 sDrakloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_FACADE, @@ -31819,7 +31819,7 @@ static const u16 sDrakloakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDragapultTeachLearnset[] = { +static const u16 sDragapultTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIVE, MOVE_DRAGON_CLAW, @@ -31850,7 +31850,7 @@ static const u16 sDragapultTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZacianTeachLearnset[] = { +static const u16 sZacianTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_FACADE, @@ -31867,7 +31867,7 @@ static const u16 sZacianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZamazentaTeachLearnset[] = { +static const u16 sZamazentaTeachableLearnset[] = { MOVE_DIG, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -31886,7 +31886,7 @@ static const u16 sZamazentaTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sEternatusTeachLearnset[] = { +static const u16 sEternatusTeachableLearnset[] = { MOVE_FACADE, MOVE_FLAMETHROWER, MOVE_FLY, @@ -31906,7 +31906,7 @@ static const u16 sEternatusTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sKubfuTeachLearnset[] = { +static const u16 sKubfuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31932,7 +31932,7 @@ static const u16 sKubfuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrshifuTeachLearnset[] = { +static const u16 sUrshifuTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -31962,7 +31962,7 @@ static const u16 sUrshifuTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZarudeTeachLearnset[] = { +static const u16 sZarudeTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_BULLET_SEED, @@ -31991,7 +31991,7 @@ static const u16 sZarudeTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegielekiTeachLearnset[] = { +static const u16 sRegielekiTeachableLearnset[] = { MOVE_FACADE, MOVE_HYPER_BEAM, MOVE_LIGHT_SCREEN, @@ -32013,7 +32013,7 @@ static const u16 sRegielekiTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRegidragoTeachLearnset[] = { +static const u16 sRegidragoTeachableLearnset[] = { MOVE_DRAGON_CLAW, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -32030,7 +32030,7 @@ static const u16 sRegidragoTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGlastrierTeachLearnset[] = { +static const u16 sGlastrierTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_FACADE, MOVE_HAIL, @@ -32051,7 +32051,7 @@ static const u16 sGlastrierTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSpectrierTeachLearnset[] = { +static const u16 sSpectrierTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -32069,7 +32069,7 @@ static const u16 sSpectrierTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCalyrexTeachLearnset[] = { +static const u16 sCalyrexTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_FACADE, @@ -32093,7 +32093,7 @@ static const u16 sCalyrexTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRattataAlolanTeachLearnset[] = { +static const u16 sRattataAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CUT, MOVE_DIG, @@ -32109,7 +32109,7 @@ static const u16 sRattataAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaticateAlolanTeachLearnset[] = { +static const u16 sRaticateAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BULK_UP, MOVE_CUT, @@ -32127,7 +32127,7 @@ static const u16 sRaticateAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRaichuAlolanTeachLearnset[] = { +static const u16 sRaichuAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DIG, @@ -32148,7 +32148,7 @@ static const u16 sRaichuAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandshrewAlolanTeachLearnset[] = { +static const u16 sSandshrewAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_CUT, @@ -32165,7 +32165,7 @@ static const u16 sSandshrewAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSandslashAlolanTeachLearnset[] = { +static const u16 sSandslashAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_CUT, @@ -32183,7 +32183,7 @@ static const u16 sSandslashAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sVulpixAlolanTeachLearnset[] = { +static const u16 sVulpixAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_DIG, MOVE_FACADE, @@ -32196,7 +32196,7 @@ static const u16 sVulpixAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sNinetalesAlolanTeachLearnset[] = { +static const u16 sNinetalesAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_CALM_MIND, MOVE_DIG, @@ -32211,7 +32211,7 @@ static const u16 sNinetalesAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDiglettAlolanTeachLearnset[] = { +static const u16 sDiglettAlolanTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -32224,7 +32224,7 @@ static const u16 sDiglettAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDugtrioAlolanTeachLearnset[] = { +static const u16 sDugtrioAlolanTeachableLearnset[] = { MOVE_CUT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -32238,7 +32238,7 @@ static const u16 sDugtrioAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowthAlolanTeachLearnset[] = { +static const u16 sMeowthAlolanTeachableLearnset[] = { MOVE_CUT, MOVE_FACADE, MOVE_FLASH, @@ -32253,7 +32253,7 @@ static const u16 sMeowthAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPersianAlolanTeachLearnset[] = { +static const u16 sPersianAlolanTeachableLearnset[] = { MOVE_CUT, MOVE_FACADE, MOVE_FLASH, @@ -32269,7 +32269,7 @@ static const u16 sPersianAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGeodudeAlolanTeachLearnset[] = { +static const u16 sGeodudeAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_FACADE, @@ -32286,7 +32286,7 @@ static const u16 sGeodudeAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGravelerAlolanTeachLearnset[] = { +static const u16 sGravelerAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_EARTHQUAKE, @@ -32303,7 +32303,7 @@ static const u16 sGravelerAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGolemAlolanTeachLearnset[] = { +static const u16 sGolemAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_EARTHQUAKE, @@ -32321,7 +32321,7 @@ static const u16 sGolemAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGrimerAlolanTeachLearnset[] = { +static const u16 sGrimerAlolanTeachableLearnset[] = { MOVE_DIG, MOVE_FACADE, MOVE_FIRE_BLAST, @@ -32336,7 +32336,7 @@ static const u16 sGrimerAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMukAlolanTeachLearnset[] = { +static const u16 sMukAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_DIG, MOVE_FACADE, @@ -32354,7 +32354,7 @@ static const u16 sMukAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sExeggutorAlolanTeachLearnset[] = { +static const u16 sExeggutorAlolanTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_EARTHQUAKE, MOVE_FACADE, @@ -32374,7 +32374,7 @@ static const u16 sExeggutorAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMarowakAlolanTeachLearnset[] = { +static const u16 sMarowakAlolanTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BRICK_BREAK, MOVE_DIG, @@ -32396,7 +32396,7 @@ static const u16 sMarowakAlolanTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowthGalarianTeachLearnset[] = { +static const u16 sMeowthGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_FACADE, @@ -32421,7 +32421,7 @@ static const u16 sMeowthGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sPonytaGalarianTeachLearnset[] = { +static const u16 sPonytaGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -32439,7 +32439,7 @@ static const u16 sPonytaGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sRapidashGalarianTeachLearnset[] = { +static const u16 sRapidashGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -32458,7 +32458,7 @@ static const u16 sRapidashGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowpokeGalarianTeachLearnset[] = { +static const u16 sSlowpokeGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -32494,7 +32494,7 @@ static const u16 sSlowpokeGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowbroGalarianTeachLearnset[] = { +static const u16 sSlowbroGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -32536,7 +32536,7 @@ static const u16 sSlowbroGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFarfetchdGalarianTeachLearnset[] = { +static const u16 sFarfetchdGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_FACADE, @@ -32557,7 +32557,7 @@ static const u16 sFarfetchdGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWeezingGalarianTeachLearnset[] = { +static const u16 sWeezingGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_FIRE_BLAST, @@ -32583,7 +32583,7 @@ static const u16 sWeezingGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMrMimeGalarianTeachLearnset[] = { +static const u16 sMrMimeGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -32622,7 +32622,7 @@ static const u16 sMrMimeGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sArticunoGalarianTeachLearnset[] = { +static const u16 sArticunoGalarianTeachableLearnset[] = { MOVE_CALM_MIND, MOVE_FACADE, MOVE_FLY, @@ -32644,7 +32644,7 @@ static const u16 sArticunoGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZapdosGalarianTeachLearnset[] = { +static const u16 sZapdosGalarianTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_BULK_UP, MOVE_FACADE, @@ -32666,7 +32666,7 @@ static const u16 sZapdosGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMoltresGalarianTeachLearnset[] = { +static const u16 sMoltresGalarianTeachableLearnset[] = { MOVE_FACADE, MOVE_FLY, MOVE_HYPER_BEAM, @@ -32684,7 +32684,7 @@ static const u16 sMoltresGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sSlowkingGalarianTeachLearnset[] = { +static const u16 sSlowkingGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -32727,7 +32727,7 @@ static const u16 sSlowkingGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCorsolaGalarianTeachLearnset[] = { +static const u16 sCorsolaGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_CALM_MIND, @@ -32760,7 +32760,7 @@ static const u16 sCorsolaGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sZigzagoonGalarianTeachLearnset[] = { +static const u16 sZigzagoonGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -32790,7 +32790,7 @@ static const u16 sZigzagoonGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLinooneGalarianTeachLearnset[] = { +static const u16 sLinooneGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_DIG, @@ -32821,7 +32821,7 @@ static const u16 sLinooneGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDarumakaGalarianTeachLearnset[] = { +static const u16 sDarumakaGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -32851,7 +32851,7 @@ static const u16 sDarumakaGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDarmanitanGalarianTeachLearnset[] = { +static const u16 sDarmanitanGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_BRICK_BREAK, @@ -32885,7 +32885,7 @@ static const u16 sDarmanitanGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sYamaskGalarianTeachLearnset[] = { +static const u16 sYamaskGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_EARTHQUAKE, @@ -32908,7 +32908,7 @@ static const u16 sYamaskGalarianTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sStunfiskGalarianTeachLearnset[] = { +static const u16 sStunfiskGalarianTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_EARTHQUAKE, @@ -32933,7 +32933,7 @@ static const u16 sStunfiskGalarianTeachLearnset[] = { #endif -static const u16 sDeoxysAttackTeachLearnset[] = { +static const u16 sDeoxysAttackTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -32973,7 +32973,7 @@ static const u16 sDeoxysAttackTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeoxysDefenseTeachLearnset[] = { +static const u16 sDeoxysDefenseTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -33013,7 +33013,7 @@ static const u16 sDeoxysDefenseTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sDeoxysSpeedTeachLearnset[] = { +static const u16 sDeoxysSpeedTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_CALM_MIND, @@ -33055,21 +33055,21 @@ static const u16 sDeoxysSpeedTeachLearnset[] = { #if P_NEW_POKEMON == TRUE -static const u16 sBurmySandyCloakTeachLearnset[] = { +static const u16 sBurmySandyCloakTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_PROTECT, MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sBurmyTrashCloakTeachLearnset[] = { +static const u16 sBurmyTrashCloakTeachableLearnset[] = { MOVE_HIDDEN_POWER, MOVE_PROTECT, MOVE_SNORE, MOVE_UNAVAILABLE, }; -static const u16 sWormadamSandyCloakTeachLearnset[] = { +static const u16 sWormadamSandyCloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DIG, MOVE_DOUBLE_TEAM, @@ -33105,7 +33105,7 @@ static const u16 sWormadamSandyCloakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sWormadamTrashCloakTeachLearnset[] = { +static const u16 sWormadamTrashCloakTeachableLearnset[] = { MOVE_ATTRACT, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -33135,7 +33135,7 @@ static const u16 sWormadamTrashCloakTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sGiratinaOriginTeachLearnset[] = { +static const u16 sGiratinaOriginTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_CALM_MIND, MOVE_CUT, @@ -33168,7 +33168,7 @@ static const u16 sGiratinaOriginTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sShayminSkyTeachLearnset[] = { +static const u16 sShayminSkyTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_DOUBLE_TEAM, MOVE_FACADE, @@ -33189,7 +33189,7 @@ static const u16 sShayminSkyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sFloetteEternalFlowerTeachLearnset[] = { +static const u16 sFloetteEternalFlowerTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -33211,7 +33211,7 @@ static const u16 sFloetteEternalFlowerTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sHoopaUnboundTeachLearnset[] = { +static const u16 sHoopaUnboundTeachableLearnset[] = { MOVE_BRICK_BREAK, MOVE_CALM_MIND, MOVE_DOUBLE_TEAM, @@ -33243,7 +33243,7 @@ static const u16 sHoopaUnboundTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sMeowsticFemaleTeachLearnset[] = { +static const u16 sMeowsticFemaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_CUT, @@ -33282,7 +33282,7 @@ static const u16 sMeowsticFemaleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocMidnightTeachLearnset[] = { +static const u16 sLycanrocMidnightTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -33301,7 +33301,7 @@ static const u16 sLycanrocMidnightTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sLycanrocDuskTeachLearnset[] = { +static const u16 sLycanrocDuskTeachableLearnset[] = { MOVE_ATTRACT, MOVE_BRICK_BREAK, MOVE_BULK_UP, @@ -33320,7 +33320,7 @@ static const u16 sLycanrocDuskTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sToxtricityLowKeyTeachLearnset[] = { +static const u16 sToxtricityLowKeyTeachableLearnset[] = { MOVE_ATTRACT, MOVE_FACADE, MOVE_HYPER_BEAM, @@ -33346,7 +33346,7 @@ static const u16 sToxtricityLowKeyTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sIndeedeeFemaleTeachLearnset[] = { +static const u16 sIndeedeeFemaleTeachableLearnset[] = { MOVE_ATTRACT, MOVE_CALM_MIND, MOVE_FACADE, @@ -33367,7 +33367,7 @@ static const u16 sIndeedeeFemaleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sUrshifuRapidStrikeStyleTeachLearnset[] = { +static const u16 sUrshifuRapidStrikeStyleTeachableLearnset[] = { MOVE_AERIAL_ACE, MOVE_ATTRACT, MOVE_BRICK_BREAK, @@ -33400,7 +33400,7 @@ static const u16 sUrshifuRapidStrikeStyleTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCalyrexIceRiderTeachLearnset[] = { +static const u16 sCalyrexIceRiderTeachableLearnset[] = { MOVE_BLIZZARD, MOVE_BULLET_SEED, MOVE_CALM_MIND, @@ -33433,7 +33433,7 @@ static const u16 sCalyrexIceRiderTeachLearnset[] = { MOVE_UNAVAILABLE, }; -static const u16 sCalyrexShadowRiderTeachLearnset[] = { +static const u16 sCalyrexShadowRiderTeachableLearnset[] = { MOVE_BULLET_SEED, MOVE_CALM_MIND, MOVE_FACADE, diff --git a/src/daycare.c b/src/daycare.c index a73cedc857..ad599d9af3 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -696,7 +696,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { u16 moveId = ItemIdToBattleMoveId(ITEM_TM01 + j); - if (sHatchedEggFatherMoves[i] == moveId && CanLearnTaughtMove(GetMonData(egg, MON_DATA_SPECIES2), moveId)) + if (sHatchedEggFatherMoves[i] == moveId && CanLearnTeachableMove(GetMonData(egg, MON_DATA_SPECIES2), moveId)) { if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == MON_HAS_MAX_MOVES) DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]); diff --git a/src/party_menu.c b/src/party_menu.c index 197b5f1f72..637531f0da 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -2030,7 +2030,7 @@ static u8 CanTeachMove(struct Pokemon *mon, u16 move) { if (GetMonData(mon, MON_DATA_IS_EGG)) return CANNOT_LEARN_MOVE_IS_EGG; - else if (!CanLearnTaughtMove(GetMonData(mon, MON_DATA_SPECIES2), move)) + else if (!CanLearnTeachableMove(GetMonData(mon, MON_DATA_SPECIES2), move)) return CANNOT_LEARN_MOVE; else if (MonKnowsMove(mon, move) == TRUE) return ALREADY_KNOWS_MOVE; diff --git a/src/pokemon.c b/src/pokemon.c index 6ee4696684..69b6506548 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1894,14 +1894,14 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = #include "data/pokemon/experience_tables.h" #include "data/pokemon/base_stats.h" #include "data/pokemon/level_up_learnsets.h" -#include "data/pokemon/teach_learnsets.h" +#include "data/pokemon/teachable_learnsets.h" #if P_NEW_POKEMON == TRUE #include "data/pokemon/evolution.h" #else #include "data/pokemon/evolution_old.h" #endif #include "data/pokemon/level_up_learnset_pointers.h" -#include "data/pokemon/teach_learnset_pointers.h" +#include "data/pokemon/teachable_learnset_pointers.h" #include "data/pokemon/form_species_tables.h" #include "data/pokemon/form_species_table_pointers.h" #include "data/pokemon/form_change_tables.h" @@ -7244,7 +7244,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) } } -u8 CanLearnTaughtMove(u16 species, u16 move) +u8 CanLearnTeachableMove(u16 species, u16 move) { if (species == SPECIES_EGG) { @@ -7253,9 +7253,9 @@ u8 CanLearnTaughtMove(u16 species, u16 move) else { u8 i; - for (i = 0; gTeachLearnsets[species][i] != MOVE_UNAVAILABLE; i++) + for (i = 0; gTeachableLearnsets[species][i] != MOVE_UNAVAILABLE; i++) { - if (gTeachLearnsets[species][i] == move) { + if (gTeachableLearnsets[species][i] == move) { return TRUE; } } From 578064d79966ebfcd0de8782f8b7294415fd6c87 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 26 Aug 2022 15:23:54 -0400 Subject: [PATCH 132/271] Add missing use of METATILE_ROW_WIDTH --- src/field_specials.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_specials.c b/src/field_specials.c index 6aa62d22f4..2e33b443ca 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -868,7 +868,7 @@ static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId) for (i = 0; i < nDoors; i++) { MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET, metatileId | MAPGRID_COLLISION_MASK); - MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + 8) | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + METATILE_ROW_WIDTH) | MAPGRID_COLLISION_MASK); } DrawWholeMapView(); } From bd81841c303598d1f4507a04a122a31c28259ada Mon Sep 17 00:00:00 2001 From: SomeLoserThatCantPickOriginalUsernames Date: Fri, 26 Aug 2022 17:47:45 -0700 Subject: [PATCH 133/271] Fix Escape Rope Message when on gen 8 mechanics --- src/item_use.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/item_use.c b/src/item_use.c index 7cc4bb32d3..16ff1b85c9 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -922,6 +922,9 @@ static void ItemUseOnFieldCB_EscapeRope(u8 taskId) Overworld_ResetStateAfterDigEscRope(); #if I_KEY_ESCAPE_ROPE < GEN_8 RemoveUsedItem(); + #else + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2); #endif gTasks[taskId].data[0] = 0; DisplayItemMessageOnField(taskId, gStringVar4, Task_UseDigEscapeRopeOnField); From 481210b7f318ee4811a4193216d77c3eefadf848 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 00:54:30 -0400 Subject: [PATCH 134/271] Missing uses of MAX_SPRITES --- src/battle_anim_ice.c | 2 +- src/battle_anim_psychic.c | 2 +- src/intro.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 6a0ff1154a..c974ecf661 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -1454,7 +1454,7 @@ static void AnimHailBegin(struct Sprite *sprite) sprite->data[3], sprite->data[4], sprite->subpriority); sprite->data[0] = spriteId; - if (spriteId != 64) + if (spriteId != MAX_SPRITES) { gSprites[sprite->data[0]].callback = AnimHailContinue; gSprites[sprite->data[0]].data[6] = sprite->data[6]; diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index aebf76cc06..833c46c2f3 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -918,7 +918,7 @@ static void AnimTask_SkillSwap_Step(u8 taskId) { task->data[1] = 0; spriteId = CreateSprite(&gSkillSwapOrbSpriteTemplate, task->data[11], task->data[12], 0); - if (spriteId != 64) + if (spriteId != MAX_SPRITES) { gSprites[spriteId].data[0] = 16; gSprites[spriteId].data[2] = task->data[13]; diff --git a/src/intro.c b/src/intro.c index 7e9a751690..b067891429 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2933,7 +2933,7 @@ static void SpriteCB_WaterDrop_ReachLeafEnd(struct Sprite *sprite) SetOamMatrix(sprite->data[1], sprite->data[6] + 64, 0, 0, sprite->data[6] + 64); SetOamMatrix(sprite->data[1] + 1, sprite->data[6] + 64, 0, 0, sprite->data[6] + 64); SetOamMatrix(sprite->data[1] + 2, sprite->data[6] + 64, 0, 0, sprite->data[6] + 64); - if (sprite->data[4] != 64) + if (sprite->data[4] != MAX_SPRITES) { u16 sinIdx; sprite->data[4] -= 8; From 6c457f42afb948c3697f03d92ee9042dab8e4b5b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 00:59:12 -0400 Subject: [PATCH 135/271] Corrected uses of GetBattlerSide --- src/battle_anim_bug.c | 6 +++--- src/battle_anim_fire.c | 2 +- src/battle_anim_flying.c | 4 ++-- src/battle_anim_mon_movement.c | 4 ++-- src/battle_anim_mons.c | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index 14abc88fb3..377665684a 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -203,7 +203,7 @@ static void AnimMegahornHorn(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - else if (!GetBattlerSide(gBattleAnimTarget)) + else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { StartSpriteAffineAnim(sprite, 1); gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -230,7 +230,7 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; StartSpriteAffineAnim(sprite, 2); } - else if (!GetBattlerSide(gBattleAnimTarget)) + else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -301,7 +301,7 @@ static void AnimStringWrap(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - if (!GetBattlerSide(gBattleAnimTarget)) + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; sprite->callback = AnimStringWrap_Step; diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 72d802f19a..2ac00f443b 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -926,7 +926,7 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesId u16 y = GetEruptionLaunchRockInitialYPos(spriteId); u16 x = gSprites[spriteId].x; - if(!GetBattlerSide(gBattleAnimAttacker)) + if(GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { x -= 12; sign = 1; diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 8609a8e172..746e3bdd73 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -910,8 +910,8 @@ static void AnimWhirlwindLine(struct Sprite * sprite) else InitSpritePosToAnimTarget(sprite, FALSE); - if ((gBattleAnimArgs[2] == ANIM_ATTACKER && !GetBattlerSide(gBattleAnimAttacker)) - || (gBattleAnimArgs[2] == ANIM_TARGET && !GetBattlerSide(gBattleAnimTarget))) + if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + || (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) { sprite->x += 8; } diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 09393a2a7b..8a11c2c5b5 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -885,11 +885,11 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) { if (gBattleAnimArgs[2] == ANIM_ATTACKER) { - gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimAttacker); + gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER; } else { - gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimTarget); + gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER; } } if (gTasks[taskId].data[7]) diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 4ce33251ac..f8fc5647ea 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -2519,7 +2519,7 @@ void AnimWeatherBallUp(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - if (!GetBattlerSide(gBattleAnimAttacker)) + if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) sprite->data[0] = 5; else sprite->data[0] = -10; @@ -2545,7 +2545,7 @@ void AnimWeatherBallDown(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = sprite->x + gBattleAnimArgs[4]; sprite->data[4] = sprite->y + gBattleAnimArgs[5]; - if (!GetBattlerSide(gBattleAnimTarget)) + if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { x = (u16)gBattleAnimArgs[4] + 30; sprite->x += x; From 15d611ba65eb5f6f7c0fde16ee487f3650bbf017 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 01:26:13 -0400 Subject: [PATCH 136/271] Usage of BATTLE_PARTNER --- include/constants/battle.h | 4 +-- src/battle_ai_script_commands.c | 12 +++---- src/battle_ai_switch_items.c | 10 +++--- src/battle_anim.c | 8 ++--- src/battle_anim_dark.c | 4 +-- src/battle_anim_fire.c | 2 +- src/battle_anim_ghost.c | 2 +- src/battle_anim_psychic.c | 2 +- src/battle_controller_link_partner.c | 12 +++---- src/battle_controller_opponent.c | 40 +++++++++++------------ src/battle_controller_player.c | 40 +++++++++++------------ src/battle_controller_player_partner.c | 20 ++++++------ src/battle_controller_recorded_opponent.c | 34 +++++++++---------- src/battle_controller_recorded_player.c | 30 ++++++++--------- src/battle_controller_wally.c | 22 ++++++------- src/battle_gfx_sfx_util.c | 6 ++-- src/battle_main.c | 8 ++--- src/battle_script_commands.c | 28 ++++++++-------- src/battle_util.c | 12 +++---- 19 files changed, 148 insertions(+), 148 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index 41bdb7a883..9adeeea916 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -31,8 +31,8 @@ #define B_POSITION_OPPONENT_RIGHT 3 // These macros can be used with either battler ID or positions to get the partner or the opposite mon -#define BATTLE_OPPOSITE(id) ((id) ^ 1) -#define BATTLE_PARTNER(id) ((id) ^ 2) +#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE) +#define BATTLE_PARTNER(id) ((id) ^ BIT_FLANK) #define B_SIDE_PLAYER 0 #define B_SIDE_OPPONENT 1 diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index e9f55bd8bc..93e4768379 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -541,7 +541,7 @@ static u8 ChooseMoveOrAction_Doubles(void) bestMovePointsForTarget[i] = mostViableMovesScores[0]; // Don't use a move against ally if it has less than 100 points. - if (i == (sBattler_AI ^ BIT_FLANK) && bestMovePointsForTarget[i] < 100) + if (i == (BATTLE_PARTNER(sBattler_AI)) && bestMovePointsForTarget[i] < 100) { bestMovePointsForTarget[i] = -1; mostViableMovesScores[0] = mostViableMovesScores[0]; // Needed to match. @@ -1151,9 +1151,9 @@ static u8 BattleAI_GetWantedBattler(u8 wantedBattler) default: return gBattlerTarget; case AI_USER_PARTNER: - return sBattler_AI ^ BIT_FLANK; + return BATTLE_PARTNER(sBattler_AI); case AI_TARGET_PARTNER: - return gBattlerTarget ^ BIT_FLANK; + return BATTLE_PARTNER(gBattlerTarget); } } @@ -1316,7 +1316,7 @@ static void Cmd_count_usable_party_mons(void) { u32 position; battlerOnField1 = gBattlerPartyIndexes[battlerId]; - position = GetBattlerPosition(battlerId) ^ BIT_FLANK; + position = BATTLE_PARTNER(GetBattlerPosition(battlerId)); battlerOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(position)]; } else // In singles there's only one battlerId by side. @@ -1799,7 +1799,7 @@ static void Cmd_if_has_move(void) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); break; case AI_USER_PARTNER: - if (gBattleMons[sBattler_AI ^ BIT_FLANK].hp == 0) + if (gBattleMons[BATTLE_PARTNER(sBattler_AI)].hp == 0) { gAIScriptPtr += 8; break; @@ -1808,7 +1808,7 @@ static void Cmd_if_has_move(void) { for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[sBattler_AI ^ BIT_FLANK].moves[i] == *movePtr) + if (gBattleMons[BATTLE_PARTNER(sBattler_AI)].moves[i] == *movePtr) break; } } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 169fa5f4f6..736dfa9d48 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -458,10 +458,10 @@ static bool8 ShouldSwitch(void) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { battlerIn1 = *activeBattlerPtr; - if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(*activeBattlerPtr) ^ BIT_FLANK)]) + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(*activeBattlerPtr)))]) battlerIn2 = *activeBattlerPtr; else - battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(*activeBattlerPtr) ^ BIT_FLANK); + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(*activeBattlerPtr))); } else { @@ -557,7 +557,7 @@ void AI_TrySwitchOrUseItem(void) else { battlerIn1 = GetBattlerAtPosition(battlerIdentity); - battlerIn2 = GetBattlerAtPosition(battlerIdentity ^ BIT_FLANK); + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(battlerIdentity)); } if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI)) @@ -653,10 +653,10 @@ u8 GetMostSuitableMonToSwitchInto(void) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { battlerIn1 = gActiveBattler; - if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)]) + if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))]) battlerIn2 = gActiveBattler; else - battlerIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK); + battlerIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))); // UB: It considers the opponent only player's side even though it can battle alongside player. opposingBattler = Random() & BIT_FLANK; diff --git a/src/battle_anim.c b/src/battle_anim.c index 375363212b..255028eda3 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -883,7 +883,7 @@ static void Cmd_clearmonbg(void) if (sMonAnimTaskIdArray[0] != TASK_NONE) gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; if (animBattlerId > 1 && sMonAnimTaskIdArray[1] != TASK_NONE) - gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE; else animBattlerId = 0; @@ -990,8 +990,8 @@ static void Cmd_clearmonbg_static(void) if (IsBattlerSpriteVisible(battlerId)) gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; - if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK)) - gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; + if (animBattlerId > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId))) + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE; else animBattlerId = 0; @@ -1017,7 +1017,7 @@ static void Task_ClearMonBgStatic(u8 taskId) if (IsBattlerSpriteVisible(battlerId)) ResetBattleAnimBg(toBG_2); - if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(battlerId ^ BIT_FLANK)) + if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId))) ResetBattleAnimBg(toBG_2 ^ 1); DestroyTask(taskId); diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 1281ccc8b4..b7b98a3288 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -777,8 +777,8 @@ void AnimTask_InitMementoShadow(u8 taskId) if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) { - MoveBattlerSpriteToBG(gBattleAnimAttacker ^ 2, toBG2 ^ 1, TRUE); - gSprites[gBattlerSpriteIds[gBattleAnimAttacker ^ 2]].invisible = FALSE; + MoveBattlerSpriteToBG(BATTLE_PARTNER(gBattleAnimAttacker), toBG2 ^ 1, TRUE); + gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].invisible = FALSE; } DestroyAnimVisualTask(taskId); diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index 2ac00f443b..fedd4c919f 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -1228,7 +1228,7 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId) struct Task *task = &gTasks[taskId]; task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1; - task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1; + task->data[13] = IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget)) + 1; task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 819b60969b..792c1ecaf1 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -814,7 +814,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) { if (battler != gBattleAnimAttacker - && battler != (gBattleAnimAttacker ^ 2) + && battler != BATTLE_PARTNER(gBattleAnimAttacker) && IsBattlerSpriteVisible(battler)) { spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 66b895c4a6..978d14c4cd 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -570,7 +570,7 @@ static void AnimDefensiveWall_Step5(struct Sprite *sprite) if (IsBattlerSpriteVisible(battler)) ResetBattleAnimBg(toBG2); - battler = battlerCopy ^ 2; + battler = BATTLE_PARTNER(battlerCopy); if (IsBattlerSpriteVisible(battler)) ResetBattleAnimBg(toBG2 ^ var0); } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index c072ae12ff..5024faaa9d 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -217,7 +217,7 @@ static void Intro_WaitForHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { finished = TRUE; } @@ -236,7 +236,7 @@ static void Intro_WaitForHealthbox(void) static void Intro_ShowHealthbox(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive && gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1) @@ -245,10 +245,10 @@ static void Intro_ShowHealthbox(void) if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 641cbd0ace..4c274f17e3 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -234,25 +234,25 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) healthboxAnimDone = TRUE; twoMons = TRUE; } gBattleControllerOpponentHealthboxData = &gBattleSpritesDataPtr->healthBoxesData[gActiveBattler]; - gBattleControllerOpponentFlankHealthboxData = &gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK]; + gBattleControllerOpponentFlankHealthboxData = &gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)]; if (healthboxAnimDone) { if (twoMons == TRUE) { if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim - && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + && gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE; FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); } @@ -263,8 +263,8 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) { if (GetBattlerPosition(gActiveBattler) == 3) { - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) { FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); @@ -296,20 +296,20 @@ static void Intro_TryShinyAnimShowHealthbox(void) if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) - TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); StartHealthboxSlideIn(gActiveBattler); @@ -320,7 +320,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].waitForCry && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].waitForCry + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].waitForCry && !IsCryPlayingOrClearCrySongs()) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored) @@ -349,8 +349,8 @@ static void Intro_TryShinyAnimShowHealthbox(void) { if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy - && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy + && gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { battlerAnimsDone = TRUE; } @@ -360,8 +360,8 @@ static void Intro_TryShinyAnimShowHealthbox(void) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); - SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES)); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); + SetBattlerShadowSpriteCallback(BATTLE_PARTNER(gActiveBattler), GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], MON_DATA_SPECIES)); } DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index cf74fefbe0..2e1f9417b8 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -950,26 +950,26 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) healthboxAnimDone = TRUE; } // If healthbox and shiny anim are done if (healthboxAnimDone && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim - && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + && gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) { // Reset shiny anim (even if it didn't occur) gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE; FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); if (IsDoubleBattle()) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], BATTLE_PARTNER(gActiveBattler)); gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3; gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd; @@ -987,21 +987,21 @@ static void Intro_TryShinyAnimShowHealthbox(void) TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); // Start shiny animation if applicable for 2nd pokemon - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); // Show healthbox after ball anim if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); StartHealthboxSlideIn(gActiveBattler); @@ -1013,7 +1013,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) // Restore bgm after cry has played and healthbox anim is started if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].waitForCry && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].waitForCry + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].waitForCry && !IsCryPlayingOrClearCrySongs()) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored) @@ -1040,8 +1040,8 @@ static void Intro_TryShinyAnimShowHealthbox(void) { if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy - && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy + && gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { battlerAnimsDone = TRUE; } @@ -1051,7 +1051,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) if (bgmRestored && battlerAnimsDone) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); gBattleSpritesDataPtr->animationData->introAnimActive = FALSE; @@ -1178,7 +1178,7 @@ static void Task_GiveExpToMon(u8 taskId) gActiveBattler = savedActiveBattler; if (IsDoubleBattle() == TRUE - && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)])) gTasks[taskId].func = Task_LaunchLvlUpAnim; else gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; @@ -1273,7 +1273,7 @@ static void Task_LaunchLvlUpAnim(u8 taskId) u8 battlerId = gTasks[taskId].tExpTask_battler; u8 monIndex = gTasks[taskId].tExpTask_monId; - if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]) battlerId ^= BIT_FLANK; InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); @@ -1290,8 +1290,8 @@ static void Task_UpdateLvlInHealthbox(u8 taskId) GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value. - if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) - UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battlerId)], &gPlayerParty[monIndex], HEALTHBOX_ALL); else UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 3812a8ffee..a77144e297 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -229,7 +229,7 @@ static void Intro_WaitForHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { finished = TRUE; } @@ -248,7 +248,7 @@ static void Intro_WaitForHealthbox(void) static void Intro_ShowHealthbox(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive && gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1) @@ -257,10 +257,10 @@ static void Intro_ShowHealthbox(void) if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); @@ -336,7 +336,7 @@ static void Task_GiveExpToMon(u8 taskId) gActiveBattler = savedActiveBank; if (IsDoubleBattle() == TRUE - && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)])) gTasks[taskId].func = Task_LaunchLvlUpAnim; else gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; @@ -431,7 +431,7 @@ static void Task_LaunchLvlUpAnim(u8 taskId) u8 battlerId = gTasks[taskId].tExpTask_bank; u8 monIndex = gTasks[taskId].tExpTask_monId; - if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]) battlerId ^= BIT_FLANK; InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); @@ -448,8 +448,8 @@ static void Task_UpdateLvlInHealthbox(u8 taskId) GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value - if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) - UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battlerId)], &gPlayerParty[monIndex], HEALTHBOX_ALL); else UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 49538b834e..0fb14f20d5 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -226,9 +226,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded - && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].animEnded) + && gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)]].animEnded) healthboxAnimDone = TRUE; } @@ -238,13 +238,13 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim) return; - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) return; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE; FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); } @@ -263,19 +263,19 @@ static void Intro_TryShinyAnimShowHealthbox(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); StartHealthboxSlideIn(gActiveBattler); @@ -286,7 +286,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].waitForCry && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].waitForCry + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].waitForCry && !IsCryPlayingOrClearCrySongs()) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored) @@ -317,8 +317,8 @@ static void Intro_TryShinyAnimShowHealthbox(void) { if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy - && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy + && gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { battlerAnimsDone = TRUE; } @@ -328,8 +328,8 @@ static void Intro_TryShinyAnimShowHealthbox(void) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); - SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES)); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); + SetBattlerShadowSpriteCallback(BATTLE_PARTNER(gActiveBattler), GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], MON_DATA_SPECIES)); } DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 6200b5ef63..b5f0a465d4 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -215,27 +215,27 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { healthboxAnimDone = TRUE; } } if (healthboxAnimDone && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim - && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + && gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE; FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); if (IsDoubleBattle()) - HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], BATTLE_PARTNER(gActiveBattler)); gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3; gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd; @@ -251,7 +251,7 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) else { if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy - && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy) + && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy) { healthboxAnimDone = TRUE; } @@ -278,21 +278,21 @@ static void Intro_TryShinyAnimShowHealthbox(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); } if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); StartHealthboxSlideIn(gActiveBattler); @@ -303,7 +303,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].waitForCry - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].waitForCry + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].waitForCry && !IsCryPlayingOrClearCrySongs()) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored) @@ -327,7 +327,7 @@ static void Intro_TryShinyAnimShowHealthbox(void) && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); gBattleSpritesDataPtr->animationData->introAnimActive = FALSE; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 8e02831776..f600a46f73 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -289,21 +289,21 @@ static void Intro_TryShinyAnimShowHealthbox(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); - if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive) + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive - && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive + && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive && gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) { if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]); - UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL); - StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK); - SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(gActiveBattler)]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL); + StartHealthboxSlideIn(BATTLE_PARTNER(gActiveBattler)); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]); } DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]); UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL); @@ -324,13 +324,13 @@ static void Intro_WaitForShinyAnimAndHealthbox(void) healthboxAnimDone = TRUE; if (healthboxAnimDone && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim - && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim) + && gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE; - gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE; + gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE; FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS); FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS); diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index ca6be9d4e2..f97a460897 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -1060,7 +1060,7 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId) { if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong) { - if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) + if (!gBattleSpritesDataPtr->battlerData[BATTLE_PARTNER(battlerId)].lowHpSong) PlaySE(SE_LOW_HEALTH); gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1; } @@ -1073,7 +1073,7 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId) m4aSongNumStop(SE_LOW_HEALTH); return; } - if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) + if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[BATTLE_PARTNER(battlerId)].lowHpSong) { m4aSongNumStop(SE_LOW_HEALTH); return; @@ -1087,7 +1087,7 @@ void BattleStopLowHpSound(void) gBattleSpritesDataPtr->battlerData[playerBattler].lowHpSong = 0; if (IsDoubleBattle()) - gBattleSpritesDataPtr->battlerData[playerBattler ^ BIT_FLANK].lowHpSong = 0; + gBattleSpritesDataPtr->battlerData[BATTLE_PARTNER(playerBattler)].lowHpSong = 0; m4aSongNumStop(SE_LOW_HEALTH); } diff --git a/src/battle_main.c b/src/battle_main.c index b748fb5b1e..ad4ea88b9e 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4432,7 +4432,7 @@ static void HandleTurnActionSelectionState(void) if (((gBattleTypeFlags & BATTLE_TYPE_MULTI) || !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) || (position & BIT_FLANK) != B_FLANK_LEFT - || (*(&gBattleStruct->absentBattlerFlags) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)])) + || (*(&gBattleStruct->absentBattlerFlags) & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))])) { BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_STOP_BOUNCE, i); } @@ -4545,9 +4545,9 @@ static void UpdateBattlerPartyOrdersOnSwitch(void) *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0); *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3]; - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0); - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3]; + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0); + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3]; } } diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 09535e0794..61dfa4df62 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5087,7 +5087,7 @@ static void Cmd_openpartyscreen(void) *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]); - BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]); + BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (BATTLE_PARTNER(gActiveBattler))), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 6; @@ -5164,9 +5164,9 @@ static void Cmd_switchhandleorder(void) *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0); *(gActiveBattler * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3]; - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0); - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; - *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3]; + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0); + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; + *((BATTLE_PARTNER(gActiveBattler)) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3]; } else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { @@ -7189,7 +7189,7 @@ static void Cmd_forcerandomswitch(void) monsCount = PARTY_SIZE / 2; minNeeded = 1; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; - battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK]; + battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK) || (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)) @@ -7207,7 +7207,7 @@ static void Cmd_forcerandomswitch(void) monsCount = PARTY_SIZE / 2; minNeeded = 1; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; - battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK]; + battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) { @@ -7234,7 +7234,7 @@ static void Cmd_forcerandomswitch(void) minNeeded = 1; } battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; - battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK]; + battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -7243,7 +7243,7 @@ static void Cmd_forcerandomswitch(void) monsCount = PARTY_SIZE; minNeeded = 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; - battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK]; + battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } else { @@ -7296,7 +7296,7 @@ static void Cmd_forcerandomswitch(void) || (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)) { SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0); - SwitchPartyOrderLinkMulti(gBattlerTarget ^ BIT_FLANK, i, 1); + SwitchPartyOrderLinkMulti(BATTLE_PARTNER(gBattlerTarget), i, 1); } if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) @@ -7642,7 +7642,7 @@ static void Cmd_updatestatusicon(void) } if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + gActiveBattler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])) { BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2); @@ -8310,7 +8310,7 @@ static void Cmd_healpartystatus(void) gBattleCommunication[MULTISTRING_CHOOSER] |= B_MSG_BELL_SOUNDPROOF_ATTACKER; } - gActiveBattler = gBattleScripting.battler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + gActiveBattler = gBattleScripting.battler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])) @@ -8360,7 +8360,7 @@ static void Cmd_healpartystatus(void) gBattleMons[gBattlerAttacker].status1 = 0; gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; - gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + gActiveBattler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])) { @@ -9068,7 +9068,7 @@ static void Cmd_settaunt(void) static void Cmd_trysethelpinghand(void) { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget]) @@ -9745,7 +9745,7 @@ static void Cmd_settypetoterrain(void) // Unused static void Cmd_pursuitdoubles(void) { - gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK); + gActiveBattler = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerAttacker))); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]) diff --git a/src/battle_util.c b/src/battle_util.c index fd63494dde..f178e03c11 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -200,13 +200,13 @@ void HandleAction_UseMove(void) { if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } else { gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } } } @@ -239,7 +239,7 @@ void HandleAction_UseMove(void) if (gAbsentBattlerFlags & gBitTable[gBattlerTarget] && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } } else @@ -249,13 +249,13 @@ void HandleAction_UseMove(void) { if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)) { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } else { gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK); + gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } } } @@ -1799,7 +1799,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void) BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 - && gWishFutureKnock.futureSightCounter[gActiveBattler ^ BIT_FLANK] == 0) + && gWishFutureKnock.futureSightCounter[BATTLE_PARTNER(gActiveBattler)] == 0) { gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)] &= ~SIDE_STATUS_FUTUREATTACK; } From 1f0a952546c29584b17684581de69cea92d8a19b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 01:44:39 -0400 Subject: [PATCH 137/271] Usage of BATTLE_OPPOSITE --- src/battle_ai_script_commands.c | 4 ++-- src/battle_ai_switch_items.c | 4 ++-- src/battle_controller_player.c | 2 +- src/battle_gfx_sfx_util.c | 8 ++++---- src/battle_script_commands.c | 36 ++++++++++++++++----------------- src/battle_util.c | 16 +++++++-------- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 93e4768379..96b2e1184c 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -351,14 +351,14 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves) // Decide a random target battlerId in doubles. if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - gBattlerTarget = (Random() & BIT_FLANK) + (GetBattlerSide(gActiveBattler) ^ BIT_SIDE); + gBattlerTarget = (Random() & BIT_FLANK) + (BATTLE_OPPOSITE(GetBattlerSide(gActiveBattler))); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget ^= BIT_FLANK; } // There's only one choice in single battles. else { - gBattlerTarget = sBattler_AI ^ BIT_SIDE; + gBattlerTarget = BATTLE_OPPOSITE(sBattler_AI); } // Choose proper trainer ai scripts. diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 736dfa9d48..9e314286fc 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -601,7 +601,7 @@ void AI_TrySwitchOrUseItem(void) } } - BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8); + BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, BATTLE_OPPOSITE(gActiveBattler) << 8); } static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var) @@ -665,7 +665,7 @@ u8 GetMostSuitableMonToSwitchInto(void) } else { - opposingBattler = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_SIDE); + opposingBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler))); battlerIn1 = gActiveBattler; battlerIn2 = gActiveBattler; } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 2e1f9417b8..96a3d6bf01 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -498,7 +498,7 @@ static void HandleInputChooseMove(void) if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = gActiveBattler; else - gMultiUsePlayerCursor = GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE); + gMultiUsePlayerCursor = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler) & BIT_SIDE)); if (!gBattleBufferA[gActiveBattler][1]) // not a double battle { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index f97a460897..c2d4fad186 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -254,7 +254,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void) else if (moveTarget == MOVE_TARGET_SELECTED) chosenMoveId |= GetBattlePalaceTarget(); else - chosenMoveId |= (GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE) << 8); + chosenMoveId |= (GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler) & BIT_SIDE)) << 8); return chosenMoveId; } @@ -310,7 +310,7 @@ static u16 GetBattlePalaceTarget(void) } if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp) - return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + return (BATTLE_OPPOSITE(gActiveBattler & BIT_SIDE) + (Random() & 2)) << 8; switch (gBattlePalaceNatureToMoveTarget[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)]) { @@ -325,11 +325,11 @@ static u16 GetBattlePalaceTarget(void) else return opposing2 << 8; case PALACE_TARGET_RANDOM: - return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8; + return (BATTLE_OPPOSITE(gActiveBattler & BIT_SIDE) + (Random() & 2)) << 8; } } - return (gActiveBattler ^ BIT_SIDE) << 8; + return BATTLE_OPPOSITE(gActiveBattler) << 8; } // Wait for the pokemon to finish appearing out from the pokeball on send out diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 61dfa4df62..22a2f6caf9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5108,7 +5108,7 @@ static void Cmd_openpartyscreen(void) } else { - gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE); + gActiveBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(battlerId))); if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) gActiveBattler ^= BIT_FLANK; @@ -6233,7 +6233,7 @@ static void Cmd_hpthresholds(void) if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); - opposingBattler = gActiveBattler ^ BIT_SIDE; + opposingBattler = BATTLE_OPPOSITE(gActiveBattler); result = gBattleMons[opposingBattler].hp * 100 / gBattleMons[opposingBattler].maxHP; if (result == 0) @@ -6261,7 +6261,7 @@ static void Cmd_hpthresholds2(void) if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]); - opposingBattler = gActiveBattler ^ BIT_SIDE; + opposingBattler = BATTLE_OPPOSITE(gActiveBattler); hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBattlerSide(opposingBattler)); result = (hpSwitchout - gBattleMons[opposingBattler].hp) * 100 / hpSwitchout; @@ -6299,7 +6299,7 @@ static void Cmd_various(void) break; case VARIOUS_SET_MAGIC_COAT_TARGET: gBattlerAttacker = gBattlerTarget; - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) gBattlerTarget = gSideTimers[side].followmeTarget; else @@ -8399,7 +8399,7 @@ static void Cmd_cursetarget(void) static void Cmd_trysetspikes(void) { - u8 targetSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + u8 targetSide = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[targetSide].spikesAmount == 3) { @@ -9781,7 +9781,7 @@ static void Cmd_snatchsetbattlers(void) // Brick Break static void Cmd_removelightscreenreflect(void) { - u8 opposingSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + u8 opposingSide = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[opposingSide].reflectTimer || gSideTimers[opposingSide].lightscreenTimer) { @@ -9809,7 +9809,7 @@ static void Cmd_handleballthrow(void) return; gActiveBattler = gBattlerAttacker; - gBattlerTarget = gBattlerAttacker ^ BIT_SIDE; + gBattlerTarget = BATTLE_OPPOSITE(gBattlerAttacker); if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { @@ -9951,18 +9951,18 @@ static void Cmd_handleballthrow(void) static void Cmd_givecaughtmon(void) { - if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY) + if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]]) != MON_GIVEN_TO_PARTY) { if (!ShouldShowBoxWasFullMessage()) { gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC; StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_NICKNAME, gStringVar2); } else { StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_NICKNAME, gStringVar2); StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL; } @@ -9972,9 +9972,9 @@ static void Cmd_givecaughtmon(void) gBattleCommunication[MULTISTRING_CHOOSER]++; } - gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES, NULL); - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick); - gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_POKEBALL, NULL); + gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_SPECIES, NULL); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick); + gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_POKEBALL, NULL); gBattlescriptCurrInstr++; } @@ -10162,13 +10162,13 @@ static void Cmd_trygivecaughtmonnick(void) case 2: if (!gPaletteFade.active) { - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); FreeAllWindowBuffers(); DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick, - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES), - GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]), - GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL), + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_SPECIES), + GetMonGender(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]]), + GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_PERSONALITY, NULL), BattleMainCB2); gBattleCommunication[MULTIUSE_STATE]++; @@ -10177,7 +10177,7 @@ static void Cmd_trygivecaughtmonnick(void) case 3: if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { - SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); + SetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_OPPOSITE(gBattlerAttacker)]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } break; diff --git a/src/battle_util.c b/src/battle_util.c index f178e03c11..4315c8a9b5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -146,7 +146,7 @@ void HandleAction_UseMove(void) } // choose target - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[side].followmeTimer != 0 && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget) @@ -204,7 +204,7 @@ void HandleAction_UseMove(void) } else { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); + gBattlerTarget = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker))); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } @@ -253,7 +253,7 @@ void HandleAction_UseMove(void) } else { - gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE); + gBattlerTarget = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker))); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget))); } @@ -3001,7 +3001,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { u8 target2; - side = (GetBattlerPosition(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon + side = (BATTLE_OPPOSITE(GetBattlerPosition(i))) & BIT_SIDE; // side of the opposing pokemon target1 = GetBattlerAtPosition(side); target2 = GetBattlerAtPosition(side + BIT_FLANK); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -3820,7 +3820,7 @@ u8 GetMoveTarget(u16 move, u8 setTarget) switch (moveTarget) { case MOVE_TARGET_SELECTED: - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBattler = gSideTimers[side].followmeTarget; else @@ -3844,12 +3844,12 @@ u8 GetMoveTarget(u16 move, u8 setTarget) case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: case MOVE_TARGET_OPPONENTS_FIELD: - targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE); + targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker) & BIT_SIDE)); if (gAbsentBattlerFlags & gBitTable[targetBattler]) targetBattler ^= BIT_FLANK; break; case MOVE_TARGET_RANDOM: - side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE; + side = BATTLE_OPPOSITE(GetBattlerSide(gBattlerAttacker)); if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBattler = gSideTimers[side].followmeTarget; else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM) @@ -3872,7 +3872,7 @@ u8 GetMoveTarget(u16 move, u8 setTarget) targetBattler ^= BIT_FLANK; } else - targetBattler = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE); + targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker) & BIT_SIDE)); break; case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: From 866d916f2fb27c16fc064386766f99d5a9f36bf2 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 02:07:58 -0400 Subject: [PATCH 138/271] SpriteTemplate formatting --- src/cable_car.c | 13 +++++++------ src/easy_chat.c | 18 ++++++++++++------ src/field_effect.c | 3 ++- src/mirage_tower.c | 6 ++++-- src/mystery_gift_view.c | 3 ++- src/roulette.c | 4 ++-- src/union_room_chat.c | 15 ++++++++++----- 7 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/cable_car.c b/src/cable_car.c index 562e9eceb7..dd1da31762 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -202,7 +202,7 @@ static const struct OamData sOam_Cable = .paletteNum = 0, }; -static const struct SpriteTemplate sSpriteTemplate_CableCar[] = +static const struct SpriteTemplate sSpriteTemplates_CableCar[] = { { .tileTag = TAG_CABLE_CAR, @@ -224,7 +224,8 @@ static const struct SpriteTemplate sSpriteTemplate_CableCar[] = }, }; -static const struct SpriteTemplate sSpriteTemplate_Cable = { +static const struct SpriteTemplate sSpriteTemplate_Cable = +{ .tileTag = TAG_CABLE, .paletteTag = TAG_CABLE_CAR, .oam = &sOam_Cable, @@ -836,12 +837,12 @@ static void CreateCableCarSprites(void) gSprites[spriteId].sYPos = 73; } // Create car sprite - spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 176, 43, 0x67); + spriteId = CreateSprite(&sSpriteTemplates_CableCar[0], 176, 43, 0x67); gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32; gSprites[spriteId].sXPos = 176; gSprites[spriteId].sYPos = 43; // Create door sprite - spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 200, 99, 0x65); + spriteId = CreateSprite(&sSpriteTemplates_CableCar[1], 200, 99, 0x65); gSprites[spriteId].x2 = 8; gSprites[spriteId].y2 = 4; gSprites[spriteId].sXPos = 200; @@ -864,12 +865,12 @@ static void CreateCableCarSprites(void) gSprites[spriteId].sYPos = 39; } // Create car sprite - spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 104, 9, 0x67); + spriteId = CreateSprite(&sSpriteTemplates_CableCar[0], 104, 9, 0x67); gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32; gSprites[spriteId].sXPos = 104; gSprites[spriteId].sYPos = 9; // Create door sprite - spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 128, 65, 0x65); + spriteId = CreateSprite(&sSpriteTemplates_CableCar[1], 128, 65, 0x65); gSprites[spriteId].x2 = 8; gSprites[spriteId].y2 = 4; gSprites[spriteId].sXPos = 128; diff --git a/src/easy_chat.c b/src/easy_chat.c index 91b44fb26b..ebc843b3cc 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -944,7 +944,8 @@ static const struct OamData sOamData_TriangleCursor = { .affineParam = 0, }; -static const struct SpriteTemplate sSpriteTemplate_TriangleCursor = { +static const struct SpriteTemplate sSpriteTemplate_TriangleCursor = +{ .tileTag = PALTAG_TRIANGLE_CURSOR, .paletteTag = GFXTAG_TRIANGLE_CURSOR, .oam = &sOamData_TriangleCursor, @@ -1005,7 +1006,8 @@ static const union AnimCmd *const sAnims_RectangleCursor[] = { [RECTCURSOR_ANIM_ON_LETTER] = sAnim_RectangleCursor_OnLetter, }; -static const struct SpriteTemplate sSpriteTemplate_RectangleCursor = { +static const struct SpriteTemplate sSpriteTemplate_RectangleCursor = +{ .tileTag = GFXTAG_RECTANGLE_CURSOR, .paletteTag = PALTAG_RECTANGLE_CURSOR, .oam = &sOamData_RectangleCursor, @@ -1075,7 +1077,8 @@ static const union AnimCmd *const sAnims_ModeWindow[] = { [MODEWINDOW_ANIM_TRANSITION] = sAnim_ModeWindow_Transition, }; -static const struct SpriteTemplate sSpriteTemplate_ModeWindow = { +static const struct SpriteTemplate sSpriteTemplate_ModeWindow = +{ .tileTag = GFXTAG_MODE_WINDOW, .paletteTag = PALTAG_MISC_UI, .oam = &sOamData_ModeWindow, @@ -1101,7 +1104,8 @@ static const struct OamData sOamData_ButtonWindow = { .affineParam = 0, }; -static const struct SpriteTemplate sSpriteTemplate_ButtonWindow = { +static const struct SpriteTemplate sSpriteTemplate_ButtonWindow = +{ .tileTag = GFXTAG_BUTTON_WINDOW, .paletteTag = PALTAG_MISC_UI, .oam = &sOamData_ButtonWindow, @@ -1159,7 +1163,8 @@ static const union AnimCmd *const sAnims_TwoFrame[] = { sAnim_Frame1, }; -static const struct SpriteTemplate sSpriteTemplate_StartSelectButton = { +static const struct SpriteTemplate sSpriteTemplate_StartSelectButton = +{ .tileTag = GFXTAG_START_SELECT_BUTTONS, .paletteTag = PALTAG_MISC_UI, .oam = &sOamData_StartSelectButton, @@ -1169,7 +1174,8 @@ static const struct SpriteTemplate sSpriteTemplate_StartSelectButton = { .callback = SpriteCallbackDummy, }; -static const struct SpriteTemplate sSpriteTemplate_ScrollIndicator = { +static const struct SpriteTemplate sSpriteTemplate_ScrollIndicator = +{ .tileTag = GFXTAG_SCROLL_INDICATOR, .paletteTag = PALTAG_MISC_UI, .oam = &sOamData_ScrollIndicator, diff --git a/src/field_effect.c b/src/field_effect.c index ba917b5654..1ab45bb25c 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -3766,7 +3766,8 @@ static const union AnimCmd *const sAnims_DeoxysRockFragment[] = { sAnim_RockFragment_BottomRight, }; -static const struct SpriteTemplate sSpriteTemplate_DeoxysRockFragment = { +static const struct SpriteTemplate sSpriteTemplate_DeoxysRockFragment = +{ .tileTag = TAG_NONE, .paletteTag = 4378, .oam = &sOam_8x8, diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 69c2e81540..37096619d3 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -201,7 +201,8 @@ static const struct OamData sOamData_CeilingCrumbleSmall = .affineParam = 0, }; -static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleSmall = { +static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleSmall = +{ .tileTag = TAG_CEILING_CRUMBLE, .paletteTag = TAG_NONE, .oam = &sOamData_CeilingCrumbleSmall, @@ -239,7 +240,8 @@ static const struct OamData sOamData_CeilingCrumbleLarge = .affineParam = 0, }; -static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleLarge = { +static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleLarge = +{ .tileTag = TAG_CEILING_CRUMBLE, .paletteTag = TAG_NONE, .oam = &sOamData_CeilingCrumbleLarge, diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index ff34c88536..384e8ef74b 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -162,7 +162,8 @@ static const struct SpritePalette sSpritePalettes_StampShadow[] = { {sStampShadowPal8, TAG_STAMP_SHADOW} }; -static const struct SpriteTemplate sSpriteTemplate_StampShadow = { +static const struct SpriteTemplate sSpriteTemplate_StampShadow = +{ .tileTag = TAG_STAMP_SHADOW, .paletteTag = TAG_STAMP_SHADOW, .oam = &gOamData_AffineOff_ObjNormal_32x16, diff --git a/src/roulette.c b/src/roulette.c index a8be6ad7ca..52efc8779f 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -2662,7 +2662,7 @@ static const struct SpriteTemplate sSpriteTemplates_ColorHeaders[NUM_BOARD_COLOR } }; -static const struct SpriteTemplate sSpriteTemplate_GridIcons[NUM_BOARD_POKES] = +static const struct SpriteTemplate sSpriteTemplates_GridIcons[NUM_BOARD_POKES] = { { .tileTag = GFXTAG_GRID_ICONS, @@ -3537,7 +3537,7 @@ static void CreateGridSprites(void) u8 y = i * 24; for (j = 0; j < NUM_BOARD_POKES; j++) { - spriteId = sRoulette->spriteIds[(i * NUM_BOARD_POKES) + SPR_GRID_ICONS + j] = CreateSprite(&sSpriteTemplate_GridIcons[j], (j * 24) + 148, y + 92, 30); + spriteId = sRoulette->spriteIds[(i * NUM_BOARD_POKES) + SPR_GRID_ICONS + j] = CreateSprite(&sSpriteTemplates_GridIcons[j], (j * 24) + 148, y + 92, 30); gSprites[spriteId].animPaused = TRUE; y += 24; if (y >= 72) diff --git a/src/union_room_chat.c b/src/union_room_chat.c index f8513b9f46..5c26d1ea36 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -793,7 +793,8 @@ static const union AnimCmd *const sAnims_KeyboardCursor[] = { sAnim_KeyboardCursorWide_Closed }; -static const struct SpriteTemplate sSpriteTemplate_KeyboardCursor = { +static const struct SpriteTemplate sSpriteTemplate_KeyboardCursor = +{ .tileTag = GFXTAG_KEYBOARD_CURSOR, .paletteTag = PALTAG_INTERFACE, .oam = &sOam_KeyboardCursor, @@ -809,7 +810,8 @@ static const struct OamData sOam_TextEntrySprite = { .priority = 2 }; -static const struct SpriteTemplate sSpriteTemplate_TextEntryCursor = { +static const struct SpriteTemplate sSpriteTemplate_TextEntryCursor = +{ .tileTag = GFXTAG_TEXT_ENTRY_CURSOR, .paletteTag = PALTAG_INTERFACE, .oam = &sOam_TextEntrySprite, @@ -819,7 +821,8 @@ static const struct SpriteTemplate sSpriteTemplate_TextEntryCursor = { .callback = SpriteCB_TextEntryCursor }; -static const struct SpriteTemplate sSpriteTemplate_TextEntryArrow = { +static const struct SpriteTemplate sSpriteTemplate_TextEntryArrow = +{ .tileTag = GFXTAG_TEXT_ENTRY_ARROW, .paletteTag = PALTAG_INTERFACE, .oam = &sOam_TextEntrySprite, @@ -868,7 +871,8 @@ static const union AnimCmd *const sAnims_RButtonLabels[] = { sAnim_RegisterIcon }; -static const struct SpriteTemplate sSpriteTemplate_RButtonIcon = { +static const struct SpriteTemplate sSpriteTemplate_RButtonIcon = +{ .tileTag = GFXTAG_RBUTTON_ICON, .paletteTag = PALTAG_INTERFACE, .oam = &sOam_RButtonIcon, @@ -878,7 +882,8 @@ static const struct SpriteTemplate sSpriteTemplate_RButtonIcon = { .callback = SpriteCallbackDummy }; -static const struct SpriteTemplate sSpriteTemplate_RButtonLabels = { +static const struct SpriteTemplate sSpriteTemplate_RButtonLabels = +{ .tileTag = GFXTAG_RBUTTON_LABELS, .paletteTag = PALTAG_INTERFACE, .oam = &sOam_RButtonLabel, From 99fbad92e21003c474b608ba8dc47fe3570184e5 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 02:50:55 -0400 Subject: [PATCH 139/271] IS_BATTLER_OF_TYPE --- src/battle_ai_switch_items.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 9e314286fc..261349dce1 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -446,9 +446,7 @@ static bool8 ShouldSwitch(void) return FALSE; if (ABILITY_ON_FIELD2(ABILITY_MAGNET_PULL)) { - if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL) - return FALSE; - if (gBattleMons[gActiveBattler].type2 == TYPE_STEEL) + if (IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)) return FALSE; } if (gBattleTypeFlags & BATTLE_TYPE_ARENA) From 12b32606f5b1a9c764bdfe389c76f0282a471e9e Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 03:05:06 -0400 Subject: [PATCH 140/271] Fixed PokemonSubstruct3 alignment --- include/pokemon.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/pokemon.h b/include/pokemon.h index c05628a598..b6c798acca 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -142,7 +142,7 @@ struct PokemonSubstruct3 /* 0x02 */ u16 metLevel:7; /* 0x02 */ u16 metGame:4; - /* 0x03 */ u16 unused3_3:4; + /* 0x03 */ u16 unused1:4; /* 0x03 */ u16 otGender:1; /* 0x04 */ u32 hpIV:5; @@ -152,6 +152,7 @@ struct PokemonSubstruct3 /* 0x05 */ u32 spAttackIV:5; /* 0x06 */ u32 spDefenseIV:5; /* 0x07 */ u32 isEgg:1; + /* 0x07 */ u32 unused2:1; /* 0x08 */ u32 coolRibbon:3; /* 0x08 */ u32 beautyRibbon:3; From 1c8d3a49225a16ff28b0507f79ee041b9bddbb0f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 27 Aug 2022 11:19:50 -0400 Subject: [PATCH 141/271] Removed unnecessary parenthesis --- src/battle_ai_script_commands.c | 4 ++-- src/battle_script_commands.c | 2 +- src/battle_util.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 96b2e1184c..1ddcc9805f 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -351,7 +351,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves) // Decide a random target battlerId in doubles. if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - gBattlerTarget = (Random() & BIT_FLANK) + (BATTLE_OPPOSITE(GetBattlerSide(gActiveBattler))); + gBattlerTarget = (Random() & BIT_FLANK) + BATTLE_OPPOSITE(GetBattlerSide(gActiveBattler)); if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) gBattlerTarget ^= BIT_FLANK; } @@ -541,7 +541,7 @@ static u8 ChooseMoveOrAction_Doubles(void) bestMovePointsForTarget[i] = mostViableMovesScores[0]; // Don't use a move against ally if it has less than 100 points. - if (i == (BATTLE_PARTNER(sBattler_AI)) && bestMovePointsForTarget[i] < 100) + if (i == BATTLE_PARTNER(sBattler_AI) && bestMovePointsForTarget[i] < 100) { bestMovePointsForTarget[i] = -1; mostViableMovesScores[0] = mostViableMovesScores[0]; // Needed to match. diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 22a2f6caf9..a40a4b6f01 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5087,7 +5087,7 @@ static void Cmd_openpartyscreen(void) *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]); - BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (BATTLE_PARTNER(gActiveBattler))), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]); + BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + BATTLE_PARTNER(gActiveBattler)), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]); MarkBattlerForControllerExec(gActiveBattler); gBattlescriptCurrInstr += 6; diff --git a/src/battle_util.c b/src/battle_util.c index 4315c8a9b5..9bfeacd2d2 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3001,7 +3001,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { u8 target2; - side = (BATTLE_OPPOSITE(GetBattlerPosition(i))) & BIT_SIDE; // side of the opposing pokemon + side = BATTLE_OPPOSITE(GetBattlerPosition(i)) & BIT_SIDE; // side of the opposing pokemon target1 = GetBattlerAtPosition(side); target2 = GetBattlerAtPosition(side + BIT_FLANK); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) From 4577f635c9fe8a49a9f66d769d8243a562cb0bf4 Mon Sep 17 00:00:00 2001 From: phxGAMMA <84661377+phxGAMMA@users.noreply.github.com> Date: Sat, 27 Aug 2022 10:43:24 -0400 Subject: [PATCH 142/271] Update fairy.png --- graphics/types/fairy.png | Bin 245 -> 324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/types/fairy.png b/graphics/types/fairy.png index d8170f64f50157808a63ba5e1f75cd84d70528e0..498386c20313853f2ef8543bea99efc09e0dc13d 100644 GIT binary patch delta 220 zcmey$c!X(!iaUFWr>`sfGY)A!Ek4UPtgZ|U4B{oO5hcO-X(i=}MX3z#J}v=%?h0k8 zMGD4xCWWm_9s-qcloa^617(bXYzD6eP5Ft60rg4V?k)@+tg;?Ju?$Za$B>FSsr?6e z8w@yHcS=qFp7luJUMXX8u$bZoMvvTE5j77P^#8ChC|$PNa9|pno(H3NMpu`b+p185 z)qAe8sJd!hZJGGfs!nOiqeV-cj_lSuvZULm)7V(}xz?e?=N9)3zopr0C{juHvj+t delta 143 zcmV;A0C4}r0`&oqB#~}Se{@n#Qvg8b*k%9#0Aoo+K~xyiWsgA$fItXEUDmBzwrJ5d z=s*QSbCHkUKr@CKw1)~l6qG14Zh@8d5;&#u2d3ZmH Date: Sat, 27 Aug 2022 22:45:10 -0400 Subject: [PATCH 143/271] Fixed battle frontier tutors (for real this time) --- data/maps/BattleFrontier_Lounge7/scripts.inc | 66 ++++++++++++-------- data/specials.inc | 1 - src/field_specials.c | 43 +------------ 3 files changed, 41 insertions(+), 69 deletions(-) diff --git a/data/maps/BattleFrontier_Lounge7/scripts.inc b/data/maps/BattleFrontier_Lounge7/scripts.inc index a51fd9d076..9528dd11da 100644 --- a/data/maps/BattleFrontier_Lounge7/scripts.inc +++ b/data/maps/BattleFrontier_Lounge7/scripts.inc @@ -66,52 +66,62 @@ BattleFrontier_Lounge7_EventScript_ChooseNewLeftTutorMove:: end BattleFrontier_Lounge7_EventScript_Softboiled:: - setvar VAR_0x8008, MOVE_SOFT_BOILED + setvar VAR_0x8008, 16 + setvar VAR_0x8005, MOVE_SOFT_BOILED goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_SeismicToss:: - setvar VAR_0x8008, MOVE_SEISMIC_TOSS + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_SEISMIC_TOSS goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_DreamEater:: - setvar VAR_0x8008, MOVE_DREAM_EATER + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_DREAM_EATER goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MegaPunch:: - setvar VAR_0x8008, MOVE_MEGA_PUNCH + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_MEGA_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MegaKick:: - setvar VAR_0x8008, MOVE_MEGA_KICK + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_MEGA_KICK goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_BodySlam:: - setvar VAR_0x8008, MOVE_BODY_SLAM + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_BODY_SLAM goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_RockSlide:: - setvar VAR_0x8008, MOVE_ROCK_SLIDE + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_ROCK_SLIDE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Counter:: - setvar VAR_0x8008, MOVE_COUNTER + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_COUNTER goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_ThunderWave:: - setvar VAR_0x8008, MOVE_THUNDER_WAVE + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_THUNDER_WAVE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_SwordsDance:: - setvar VAR_0x8008, MOVE_SWORDS_DANCE + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_SWORDS_DANCE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end @@ -135,7 +145,6 @@ BattleFrontier_Lounge7_EventScript_ChooseRightTutorMove:: waitmessage special ShowBattlePointsWindow setvar VAR_TEMP_E, 1 - setvar VAR_0x8004, SCROLL_MULTI_BF_MOVE_TUTOR_2 setvar VAR_0x8006, 0 special ShowScrollableMultichoice waitstate @@ -159,7 +168,6 @@ BattleFrontier_Lounge7_EventScript_ChooseNewRightTutorMove:: message BattleFrontier_Lounge7_Text_TeachWhichMove waitmessage setvar VAR_TEMP_E, 1 - setvar VAR_0x8004, SCROLL_MULTI_BF_MOVE_TUTOR_2 setvar VAR_0x8006, 1 special ShowScrollableMultichoice waitstate @@ -180,52 +188,62 @@ BattleFrontier_Lounge7_EventScript_ChooseNewRightTutorMove:: end BattleFrontier_Lounge7_EventScript_DefenseCurl:: - setvar VAR_0x8008, MOVE_DEFENSE_CURL + setvar VAR_0x8008, 16 + setvar VAR_0x8005, MOVE_DEFENSE_CURL goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Snore:: - setvar VAR_0x8008, MOVE_SNORE + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_SNORE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_MudSlap:: - setvar VAR_0x8008, MOVE_MUD_SLAP + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_MUD_SLAP goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Swift:: - setvar VAR_0x8008, MOVE_SWIFT + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_SWIFT goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_IcyWind:: - setvar VAR_0x8008, MOVE_ICY_WIND + setvar VAR_0x8008, 24 + setvar VAR_0x8005, MOVE_ICY_WIND goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_Endure:: - setvar VAR_0x8008, MOVE_ENDURE + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_ENDURE goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_PsychUp:: - setvar VAR_0x8008, MOVE_PSYCH_UP + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_PSYCH_UP goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_IcePunch:: - setvar VAR_0x8008, MOVE_ICE_PUNCH + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_ICE_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_ThunderPunch:: - setvar VAR_0x8008, MOVE_THUNDER_PUNCH + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_THUNDER_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end BattleFrontier_Lounge7_EventScript_FirePunch:: - setvar VAR_0x8008, MOVE_FIRE_PUNCH + setvar VAR_0x8008, 48 + setvar VAR_0x8005, MOVE_FIRE_PUNCH goto BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection end @@ -246,11 +264,8 @@ BattleFrontier_Lounge7_EventScript_CancelChooseMon:: @ VAR_TEMP_D is the move selection @ VAR_TEMP_E is which move tutor was spoken to BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection:: - copyvar VAR_0x8004, VAR_TEMP_D - copyvar VAR_0x8005, VAR_TEMP_E special BufferBattleFrontierTutorMoveName buffernumberstring STR_VAR_2, VAR_0x8008 - copyvar VAR_0x8004, VAR_TEMP_C msgbox BattleFrontier_Lounge7_Text_MoveWillBeXBattlePoints, MSGBOX_YESNO goto_if_eq VAR_RESULT, NO, BattleFrontier_Lounge7_EventScript_ChooseNewMove specialvar VAR_TEMP_1, GetFrontierBattlePoints @@ -261,7 +276,6 @@ BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection:: BattleFrontier_Lounge7_EventScript_TeachTutorMove:: msgbox BattleFrontier_Lounge7_Text_TeachMoveToWhichMon, MSGBOX_DEFAULT - special GetBattleFrontierTutorMoveIndex fadescreen FADE_TO_BLACK special CloseBattlePointsWindow special CloseBattleFrontierTutorWindow diff --git a/data/specials.inc b/data/specials.inc index b4d0ecf905..a1b2fd2016 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -486,7 +486,6 @@ gSpecials:: def_special CloseBattleFrontierTutorWindow def_special ScrollableMultichoice_RedrawPersistentMenu def_special ChooseMonForMoveTutor - def_special GetBattleFrontierTutorMoveIndex def_special ScrollableMultichoice_ClosePersistentMenu def_special DoDeoxysRockInteraction def_special SetDeoxysRockPalette diff --git a/src/field_specials.c b/src/field_specials.c index 434d2f776d..8f2bfcbed4 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -2988,10 +2988,7 @@ static void HideFrontierExchangeCornerItemIcon(u16 menu, u16 unused) void BufferBattleFrontierTutorMoveName(void) { - if (gSpecialVar_0x8005 != 0) - StringCopy(gStringVar1, gMoveNames[gSpecialVar_0x8004]); - else - StringCopy(gStringVar1, gMoveNames[gSpecialVar_0x8004]); + StringCopy(gStringVar1, gMoveNames[gSpecialVar_0x8005]); } static void ShowBattleFrontierTutorWindow(u8 menu, u16 selection) @@ -3087,44 +3084,6 @@ void ScrollableMultichoice_RedrawPersistentMenu(void) } } -void GetBattleFrontierTutorMoveIndex(void) -{ - u8 i; - u16 moveTutor = 0; - u16 moveIndex = 0; - gSpecialVar_0x8005 = 0; - - moveTutor = VarGet(VAR_TEMP_E); - moveIndex = VarGet(VAR_TEMP_D); - - if (moveTutor != 0) - { - i = 0; - do - { - if (i == moveIndex) - { - gSpecialVar_0x8005 = i; - break; - } - i++; - } while (i < MOVES_COUNT); - } - else - { - i = 0; - do - { - if (i == moveIndex) - { - gSpecialVar_0x8005 = i; - break; - } - i++; - } while (i < MOVES_COUNT); - } -} - // Never called // Close a scrollable multichoice that stays open after selection void ScrollableMultichoice_ClosePersistentMenu(void) From d6998d4579e5587ed2b50952f29d461b812d4c70 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Sun, 28 Aug 2022 19:55:45 +0700 Subject: [PATCH 144/271] Edited PLA' pokedex_text.h --- src/data/pokemon/pokedex_text.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/data/pokemon/pokedex_text.h b/src/data/pokemon/pokedex_text.h index fbb8545ad0..bf32932032 100644 --- a/src/data/pokemon/pokedex_text.h +++ b/src/data/pokemon/pokedex_text.h @@ -5354,12 +5354,12 @@ const u8 gWyrdeerPokedexText[] = _( "The black orbs shine with an uncanny light\n" "when it is erecting invisible barriers.\n" "The fur shed from its beard retains heat\n" - "and useful for winter clothing."); + "and is useful for winter clothing."); const u8 gKleavorPokedexText[] = _( "A violent creature that fells trees with\n" "its crude axes and shields itself with hard\n" - "stone. If one should encounter this Pokémon\n" + "stone. Should one encounter this Pokémon\n" "in the wild, one's only recourse is to flee."); const u8 gUrsalunaPokedexText[] = _( @@ -5368,9 +5368,10 @@ const u8 gUrsalunaPokedexText[] = _( "manipulate peat at will."); const u8 gBasculegionPokedexText[] = _( - "It clads itself in the souls of comrades\n" - "that perishes before their goals of\n" - "journeying upstream."); + "Clads itself in the souls of comrades that\n" + "perished before fulfilling their goals of\n" + "journeying upstream. No other species in\n" + "all Hisui's rivers is Basculegion's equal."); const u8 gSneaslerPokedexText[] = _( "Because of its wicked poison and daunting\n" @@ -5381,8 +5382,8 @@ const u8 gSneaslerPokedexText[] = _( const u8 gOverqwilPokedexText[] = _( "Its lancelike spikes and savage\n" "temperament have earned it the\n" - "nickname Sea Fiend.\n" - "It surps up poison to nourish itself."); + "nickname “Sea Fiend”.\n" + "It slurps up poison to nourish itself."); const u8 gEnamorusPokedexText[] = _( "Its arrival brings an end to the\n" From 5801047e5096fcdacec26362169e1d3c23a683e4 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 28 Aug 2022 12:10:54 -0300 Subject: [PATCH 145/271] Removed unused local var in SetMonFormPSS --- src/pokemon_storage_system.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 7f515eba7a..d3f5d433f4 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -6893,7 +6893,6 @@ static void ReshowDisplayMon(void) void SetMonFormPSS(struct BoxPokemon *boxMon) { - u16 species = GetMonData(boxMon, MON_DATA_SPECIES); u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD_ABILITY, 0); if (targetSpecies == SPECIES_NONE) targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD, 0); From 1c735e1abe0c872e661d68066c62cf2a0d4ad05f Mon Sep 17 00:00:00 2001 From: crater-git Date: Mon, 29 Aug 2022 03:47:11 -0400 Subject: [PATCH 146/271] Restored bool32 type to shouldUseMove --- src/apprentice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apprentice.c b/src/apprentice.c index 439bcc6569..ad7568a76f 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -338,7 +338,7 @@ static u16 GetRandomAlternateMove(u8 monId) const struct LevelUpMove *learnset; bool32 needTMs = FALSE; u16 moveId = MOVE_NONE; - bool8 shouldUseMove; + bool32 shouldUseMove; u8 level; id = APPRENTICE_SPECIES_ID(monId); From 27010e9ee67ed0a7ef5651153358a554e4ce8278 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Aug 2022 10:23:26 +0200 Subject: [PATCH 147/271] quash faintclearsetdata --- src/battle_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index 6320770eb8..439876325c 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3140,6 +3140,7 @@ void FaintClearSetData(void) gProtectStructs[gActiveBattler].spikyShielded = FALSE; gProtectStructs[gActiveBattler].kingsShielded = FALSE; gProtectStructs[gActiveBattler].banefulBunkered = FALSE; + gProtectStructs[gActiveBattler].quash = FALSE; gProtectStructs[gActiveBattler].obstructed = FALSE; gProtectStructs[gActiveBattler].endured = FALSE; gProtectStructs[gActiveBattler].noValidMoves = FALSE; @@ -4739,7 +4740,7 @@ static void TurnValuesCleanUp(bool8 var0) gProtectStructs[gActiveBattler].spikyShielded = FALSE; gProtectStructs[gActiveBattler].kingsShielded = FALSE; gProtectStructs[gActiveBattler].banefulBunkered = FALSE; - gProtectStructs[gBattlerTarget].quash = FALSE; + gProtectStructs[gActiveBattler].quash = FALSE; } else { From 2d4ac679a60b7c58d67c456687c01d10cd0d501a Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 29 Aug 2022 10:26:55 +0200 Subject: [PATCH 148/271] tabs --- src/battle_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_main.c b/src/battle_main.c index 439876325c..86a1fd075f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4518,7 +4518,7 @@ s8 GetMovePriority(u32 battlerId, u16 move) } if (gProtectStructs[battlerId].quash) - priority = -8; + priority = -8; return priority; } From 94183b45c7c0acdf61233c284de5a143f30533ae Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 29 Aug 2022 14:48:40 +0200 Subject: [PATCH 149/271] Added options for ttoggling battle frontier pass and giving max BPs --- src/debug.c | 51 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/src/debug.c b/src/debug.c index 0e464fa8b9..69b346fb86 100644 --- a/src/debug.c +++ b/src/debug.c @@ -46,6 +46,7 @@ #include "task.h" #include "pokemon_summary_screen.h" #include "constants/abilities.h" +#include "constants/battle_frontier.h" #include "constants/flags.h" #include "constants/items.h" #include "constants/map_groups.h" @@ -99,6 +100,7 @@ enum { // Flags DEBUG_FLAG_MENU_ITEM_POKENAVONOFF, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE, DEBUG_FLAG_MENU_ITEM_GETALLBADGES, + DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF, @@ -115,6 +117,7 @@ enum { // Give DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX, DEBUG_GIVE_MENU_ITEM_MAX_MONEY, DEBUG_GIVE_MENU_ITEM_MAX_COINS, + DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG, DEBUG_GIVE_MENU_ITEM_FILL_PC, DEBUG_GIVE_MENU_ITEM_CHEAT, @@ -127,7 +130,7 @@ enum { //Sound // ******************************* // Constants -#define DEBUG_MAIN_MENU_WIDTH 13 +#define DEBUG_MAIN_MENU_WIDTH 15 #define DEBUG_MAIN_MENU_HEIGHT 8 #define DEBUG_NUMBER_DISPLAY_WIDTH 10 @@ -220,17 +223,18 @@ static void DebugAction_Util_Trainer_Id(u8); static void DebugAction_Flags_Flags(u8 taskId); static void DebugAction_Flags_FlagsSelect(u8 taskId); -static void DebugAction_Flags_SetPokedexFlags(u8); -static void DebugAction_Flags_SwitchDex(u8); -static void DebugAction_Flags_SwitchNatDex(u8); -static void DebugAction_Flags_SwitchPokeNav(u8); -static void DebugAction_Flags_ToggleFlyFlags(u8); -static void DebugAction_Flags_ToggleBadgeFlags(u8); -static void DebugAction_Flags_CollisionOnOff(u8); -static void DebugAction_Flags_EncounterOnOff(u8); -static void DebugAction_Flags_TrainerSeeOnOff(u8); -static void DebugAction_Flags_BagUseOnOff(u8); -static void DebugAction_Flags_CatchingOnOff(u8); +static void DebugAction_Flags_SetPokedexFlags(u8 taskId); +static void DebugAction_Flags_SwitchDex(u8 taskId); +static void DebugAction_Flags_SwitchNatDex(u8 taskId); +static void DebugAction_Flags_SwitchPokeNav(u8 taskId); +static void DebugAction_Flags_ToggleFlyFlags(u8 taskId); +static void DebugAction_Flags_ToggleBadgeFlags(u8 taskId); +static void DebugAction_Flags_ToggleFrontierPass(u8 taskId); +static void DebugAction_Flags_CollisionOnOff(u8 taskId); +static void DebugAction_Flags_EncounterOnOff(u8 taskId); +static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId); +static void DebugAction_Flags_BagUseOnOff(u8 taskId); +static void DebugAction_Flags_CatchingOnOff(u8 taskId); static void DebugAction_Vars_Vars(u8 taskId); static void DebugAction_Vars_Select(u8 taskId); @@ -252,6 +256,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId); static void DebugAction_Give_Pokemon_Move(u8 taskId); static void DebugAction_Give_MaxMoney(u8 taskId); static void DebugAction_Give_MaxCoins(u8 taskId); +static void DebugAction_Give_MaxBattlePoints(u8 taskId); static void DebugAction_Give_DayCareEgg(u8 taskId); static void DebugAction_Give_FillPC(u8 taskId); static void DebugAction_Give_CHEAT(u8 taskId); @@ -288,7 +293,7 @@ extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; // ******************************* //Maps per map group COPY FROM /include/constants/map_groups.h - static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; +static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; // Text // Main Menu @@ -334,6 +339,7 @@ static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 gDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); @@ -373,6 +379,7 @@ static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); +static const u8 gDebugText_Give_BattlePoints[] = _("Max Battle Points"); static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); @@ -466,6 +473,7 @@ static const struct ListMenuItem sDebugMenu_Items_Flags[] = [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {gDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, @@ -484,6 +492,7 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS]= {gDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, @@ -543,6 +552,7 @@ static void (*const sDebugMenu_Actions_Flags[])(u8) = [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = DebugAction_Flags_SwitchPokeNav, [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = DebugAction_Flags_ToggleFlyFlags, [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = DebugAction_Flags_ToggleBadgeFlags, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = DebugAction_Flags_ToggleFrontierPass, [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = DebugAction_Flags_CollisionOnOff, [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = DebugAction_Flags_EncounterOnOff, [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= DebugAction_Flags_TrainerSeeOnOff, @@ -561,6 +571,7 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = DebugAction_Give_MaxMoney, [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = DebugAction_Give_MaxCoins, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS]= DebugAction_Give_MaxBattlePoints, [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, [DEBUG_GIVE_MENU_ITEM_FILL_PC] = DebugAction_Give_FillPC, [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, @@ -1424,6 +1435,15 @@ static void DebugAction_Flags_ToggleBadgeFlags(u8 taskId) FlagToggle(FLAG_BADGE07_GET); FlagToggle(FLAG_BADGE08_GET); } +static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) +{ + // Sound effect + if(FlagGet(FLAG_SYS_FRONTIER_PASS)) + PlaySE(SE_PC_OFF); + else + PlaySE(SE_PC_LOGIN); + FlagToggle(FLAG_SYS_FRONTIER_PASS); +} static void DebugAction_Flags_CollisionOnOff(u8 taskId) { if(FlagGet(FLAG_SYS_NO_COLLISION)) @@ -2651,6 +2671,11 @@ static void DebugAction_Give_MaxCoins(u8 taskId) SetCoins(9999); } +static void DebugAction_Give_MaxBattlePoints(u8 taskId) +{ + gSaveBlock2Ptr->frontier.battlePoints = MAX_BATTLE_FRONTIER_POINTS; +} + static void DebugAction_Give_DayCareEgg(u8 taskId) { TriggerPendingDaycareEgg(); From 006d28fd699dd0acc9f6b0c5263aad754a3cc890 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 29 Aug 2022 14:51:40 +0200 Subject: [PATCH 150/271] tiny fix for wrong "give pokemon" window --- src/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 69b346fb86..53f86bb7b1 100644 --- a/src/debug.c +++ b/src/debug.c @@ -598,7 +598,7 @@ static const struct WindowTemplate sDebugMenuWindowTemplate = static const struct WindowTemplate sDebugNumberDisplayWindowTemplate = { .bg = 0, - .tilemapLeft = 6 + DEBUG_MAIN_MENU_WIDTH, + .tilemapLeft = 4 + DEBUG_MAIN_MENU_WIDTH, .tilemapTop = 1, .width = DEBUG_NUMBER_DISPLAY_WIDTH, .height = 2 * DEBUG_NUMBER_DISPLAY_HEIGHT, From 32a1017c2dfbf6f12f7643966e33188333eeb351 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Mon, 29 Aug 2022 10:13:01 -0400 Subject: [PATCH 151/271] Fixed tab --- src/data/text/species_names.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 8e82d47a94..978730bfe4 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1093,7 +1093,7 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ROTOM_FROST] = _("Rotom"), [SPECIES_ROTOM_MOW] = _("Rotom"), [SPECIES_ROTOM_WASH] = _("Rotom"), - // Origin + // Origin [SPECIES_DIALGA_ORIGIN] = _("Dialga"), [SPECIES_PALKIA_ORIGIN] = _("Palkia"), [SPECIES_GIRATINA_ORIGIN] = _("Giratina"), From b209645b2067601ad0f6142191df5500673c27e2 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Mon, 29 Aug 2022 21:33:28 +0700 Subject: [PATCH 152/271] Changes Origin to Origin Forme --- src/data/text/species_names.h | 2 +- src/pokemon.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/data/text/species_names.h b/src/data/text/species_names.h index 978730bfe4..ad0a1ba7c6 100644 --- a/src/data/text/species_names.h +++ b/src/data/text/species_names.h @@ -1093,7 +1093,7 @@ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = { [SPECIES_ROTOM_FROST] = _("Rotom"), [SPECIES_ROTOM_MOW] = _("Rotom"), [SPECIES_ROTOM_WASH] = _("Rotom"), - // Origin + // Origin Forme [SPECIES_DIALGA_ORIGIN] = _("Dialga"), [SPECIES_PALKIA_ORIGIN] = _("Palkia"), [SPECIES_GIRATINA_ORIGIN] = _("Giratina"), diff --git a/src/pokemon.c b/src/pokemon.c index 5bd93b33f6..350aebf0b8 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1428,7 +1428,7 @@ static const u16 sSpeciesToNationalPokedexNum[NUM_SPECIES - 1] = [SPECIES_ROTOM_FROST - 1] = NATIONAL_DEX_ROTOM, [SPECIES_ROTOM_FAN - 1] = NATIONAL_DEX_ROTOM, [SPECIES_ROTOM_MOW - 1] = NATIONAL_DEX_ROTOM, - // Origin + // Origin Forme [SPECIES_DIALGA_ORIGIN - 1] = NATIONAL_DEX_DIALGA, [SPECIES_PALKIA_ORIGIN - 1] = NATIONAL_DEX_PALKIA, [SPECIES_GIRATINA_ORIGIN - 1] = NATIONAL_DEX_GIRATINA, From bed56390746252537e6cd95cf090ccf2b444bd41 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 29 Aug 2022 19:36:44 +0200 Subject: [PATCH 153/271] Changed preproc defines to TRUE/FALSE, small cleanup --- include/debug.h | 4 +- src/battle_main.c | 22 ++++++----- src/event_object_movement.c | 6 +-- src/field_control_avatar.c | 73 +++++++++++++++++-------------------- src/item_use.c | 4 +- src/start_menu.c | 10 ++--- src/trainer_see.c | 8 ++-- 7 files changed, 62 insertions(+), 65 deletions(-) diff --git a/include/debug.h b/include/debug.h index 1014690a5a..9aec5c2629 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,8 +1,8 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H -#define TX_DEBUGGING -#define TX_DEBUG_MENU_OPTION FALSE +#define TX_DEBUG_SYSTEM TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. +#define TX_DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). void Debug_ShowMainMenu(void); diff --git a/src/battle_main.c b/src/battle_main.c index e8688b067a..029578ceb7 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4001,21 +4001,25 @@ static void HandleTurnActionSelectionState(void) } break; case B_ACTION_USE_ITEM: - #ifdef TX_DEBUGGING - if (FlagGet(FLAG_SYS_NO_BAG_USE) || (gBattleTypeFlags & (BATTLE_TYPE_LINK //DEBUG + #if TX_DEBUG_SYSTEM == TRUE + if (FlagGet(FLAG_SYS_NO_BAG_USE)) + { + RecordedBattle_ClearBattlerAction(gActiveBattler, 1); + gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; + gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; + *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE; + *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; + return; + } + #endif + + if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER_NO_PYRAMID | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK)) // Or if currently held by Sky Drop || gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED) { - #else //DEBUG - if (gBattleTypeFlags & (BATTLE_TYPE_LINK - | BATTLE_TYPE_FRONTIER_NO_PYRAMID - | BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_RECORDED_LINK)) - { - #endif RecordedBattle_ClearBattlerAction(gActiveBattler, 1); gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 49bfce3c2f..c5663461ac 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4630,9 +4630,9 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; - #ifdef TX_DEBUGGING //DEBUG - if (FlagGet(FLAG_SYS_NO_COLLISION)) - return COLLISION_NONE; + #if TX_DEBUG_SYSTEM == TRUE + if (FlagGet(FLAG_SYS_NO_COLLISION)) + return COLLISION_NONE; #endif // if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 3edfe2f169..121a10670b 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -131,34 +131,30 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; - //DEBUG - #ifdef TX_DEBUGGING - if (!TX_DEBUG_MENU_OPTION) + #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE + if (heldKeys & R_BUTTON) + { + if(input->pressedSelectButton) { - if (heldKeys & R_BUTTON) - { - if(input->pressedSelectButton) - { - input->input_field_1_0 = TRUE; - input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) - { - input->input_field_1_2 = TRUE; - input->pressedStartButton = FALSE; - } - } - if (heldKeys & L_BUTTON) - { - if(input->pressedSelectButton) - { - input->input_field_1_1 = TRUE; - input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) - { - input->input_field_1_3 = TRUE; - input->pressedStartButton = FALSE; - } - } + input->input_field_1_0 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_2 = TRUE; + input->pressedStartButton = FALSE; + } + } + if (heldKeys & L_BUTTON) + { + if(input->pressedSelectButton) + { + input->input_field_1_1 = TRUE; + input->pressedSelectButton = FALSE; + }else if(input->pressedStartButton) + { + input->input_field_1_3 = TRUE; + input->pressedStartButton = FALSE; + } } #endif } @@ -220,16 +216,13 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; - #ifdef TX_DEBUGGING - if (!TX_DEBUG_MENU_OPTION) - { - if (input->input_field_1_2) - { - PlaySE(SE_WIN_OPEN); - Debug_ShowMainMenu(); - return TRUE; - } - } + #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE + if (input->input_field_1_2) + { + PlaySE(SE_WIN_OPEN); + Debug_ShowMainMenu(); + return TRUE; + } #endif return FALSE; @@ -712,9 +705,9 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { - #ifdef TX_DEBUGGING - if (FlagGet(FLAG_SYS_NO_ENCOUNTER)) //DEBUG - return FALSE;// + #if TX_DEBUG_SYSTEM == TRUE + if (FlagGet(FLAG_SYS_NO_ENCOUNTER)) + return FALSE; #endif if (sWildEncounterImmunitySteps < 4) diff --git a/src/item_use.c b/src/item_use.c index e9d03cabf5..537e787893 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -982,8 +982,8 @@ static const u8 sText_CantThrowPokeBall_TwoMons[] = _("Cannot throw a ball!\nThe static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a ball!\nThere's no Pokémon in sight!\p"); void ItemUseInBattle_PokeBall(u8 taskId) { - #ifdef TX_DEBUGGING - if (FlagGet(FLAG_SYS_NO_CATCHING)){ //DEBUG + #if TX_DEBUG_SYSTEM == TRUE + if (FlagGet(FLAG_SYS_NO_CATCHING)){ static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); return; diff --git a/src/start_menu.c b/src/start_menu.c index ccaff2e3a9..f4c0112b27 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -284,17 +284,17 @@ static void BuildStartMenuActions(void) { BuildMultiPartnerRoomStartMenu(); } -#if defined(TX_DEBUGGING) && TX_DEBUG_MENU_OPTION + #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == TRUE else { BuildDebugStartMenu(); } -#else + #else else { BuildNormalStartMenu(); } -#endif + #endif } static void AddStartMenuAction(u8 action) @@ -772,8 +772,8 @@ static bool8 StartMenuDebugCallback(void) RemoveExtraStartMenuWindows(); HideStartMenuDebug(); // Hide start menu without enabling movement - #ifdef TX_DEBUGGING - Debug_ShowMainMenu(); + #if TX_DEBUG_SYSTEM == TRUE + Debug_ShowMainMenu(); #endif return TRUE; diff --git a/src/trainer_see.c b/src/trainer_see.c index bb2c411612..81b040a3b6 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -193,10 +193,10 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; - #ifdef TX_DEBUGGING //DEBUG - if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) - return FALSE; - #endif // + #if TX_DEBUG_SYSTEM == TRUE + if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + return FALSE; + #endif gNoOfApproachingTrainers = 0; gApproachingTrainerId = 0; From 8cf29336585107a24dcbebbd261e99311ae9c9d9 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 29 Aug 2022 19:46:03 +0200 Subject: [PATCH 154/271] added preproc directive to main debug.c code --- src/debug.c | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/src/debug.c b/src/debug.c index 55604fc753..b27142abea 100644 --- a/src/debug.c +++ b/src/debug.c @@ -12,6 +12,7 @@ #include "credits.h" #include "data.h" #include "daycare.h" +#include "debug.h" #include "event_data.h" #include "event_object_movement.h" #include "event_scripts.h" @@ -54,7 +55,7 @@ #include "constants/songs.h" #include "constants/species.h" - +#if TX_DEBUG_SYSTEM == TRUE // ******************************* // Enums enum { // Main @@ -3639,31 +3640,4 @@ SOUND_LIST_SE }; #undef X - -// Additional functions -/* -static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate) -{ - Debug_DestroyMenu(taskId); - Debug_ShowMenu(DebugTask_HandleMenuInput, LMtemplate); -} -static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)) -{ - void (*func)(u8); - u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - if ((func = HandleInput[input]) != NULL) - func(taskId); - } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - Debug_DestroyMenu(taskId); - ScriptContext_Enable(); - } -} -*/ - +#endif \ No newline at end of file From df88317a9890a23521e09632d1fc345b720210d6 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 28 Aug 2022 11:48:39 -0300 Subject: [PATCH 155/271] Introduced FORM_BATTLE form changes For species such as Xerneas and Zacian. --- include/constants/pokemon.h | 2 ++ src/battle_main.c | 14 ++++++++++ src/battle_util.c | 17 +++++++++++- src/data/pokemon/form_change_table_pointers.h | 8 +++++- src/data/pokemon/form_change_tables.h | 26 +++++++++++++++++++ src/pokemon.c | 6 +++-- 6 files changed, 69 insertions(+), 4 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 98075a9425..8e8b31543d 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -324,6 +324,8 @@ #define FORM_WITHDRAW 4 #define FORM_ITEM_HOLD_ABILITY 5 #define FORM_ITEM_USE_TIME 6 +#define FORM_BATTLE_BEGIN 7 +#define FORM_BATTLE_END 8 #define NUM_MALE_LINK_FACILITY_CLASSES 8 #define NUM_FEMALE_LINK_FACILITY_CLASSES 8 diff --git a/src/battle_main.c b/src/battle_main.c index 25a0b06135..f75a7ae80b 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -481,6 +481,7 @@ void CB2_InitBattle(void) static void CB2_InitBattleInternal(void) { s32 i; + u16 targetSpecies; SetHBlankCallback(NULL); SetVBlankCallback(NULL); @@ -571,6 +572,19 @@ static void CB2_InitBattleInternal(void) for (i = 0; i < PARTY_SIZE; i++) AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE); + // Apply party-wide start-of-battle form changes + for (i = 0; i < PARTY_SIZE; i++) + { + // Player's side + targetSpecies = GetFormChangeTargetSpecies(&gPlayerParty[i], FORM_BATTLE_BEGIN, 0); + if (targetSpecies != SPECIES_NONE) + SetMonData(&gPlayerParty[i], MON_DATA_SPECIES, &targetSpecies); + // Opponent's side + targetSpecies = GetFormChangeTargetSpecies(&gEnemyParty[i], FORM_BATTLE_BEGIN, 0); + if (targetSpecies != SPECIES_NONE) + SetMonData(&gEnemyParty[i], MON_DATA_SPECIES, &targetSpecies); + } + gBattleCommunication[MULTIUSE_STATE] = 0; } diff --git a/src/battle_util.c b/src/battle_util.c index f38d80a69c..dff9d71da5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9588,7 +9588,7 @@ void UndoMegaEvolution(u32 monId) void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) { - u32 i, currSpecies; + u32 i, currSpecies, targetSpecies; struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; static const u16 species[][3] = { @@ -9622,6 +9622,21 @@ void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) break; } } + if (!isSwitchingOut) + { + // Apply party-wide end-of-battle form changes + for (i = 0; i < PARTY_SIZE; i++) + { + // Player's side + targetSpecies = GetFormChangeTargetSpecies(&gPlayerParty[i], FORM_BATTLE_END, 0); + if (targetSpecies != SPECIES_NONE) + SetMonData(&gPlayerParty[i], MON_DATA_SPECIES, &targetSpecies); + // Opponent's side + targetSpecies = GetFormChangeTargetSpecies(&gEnemyParty[i], FORM_BATTLE_END, 0); + if (targetSpecies != SPECIES_NONE) + SetMonData(&gEnemyParty[i], MON_DATA_SPECIES, &targetSpecies); + } + } } bool32 DoBattlersShareType(u32 battler1, u32 battler2) diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 3fdbff7a6e..58a6c899fc 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -31,11 +31,13 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_LANDORUS_THERIAN] = sLandorusTherianFormChangeTable, [SPECIES_KELDEO] = sKeldeoFormChangeTable, [SPECIES_KELDEO_RESOLUTE] = sKeldeoResoluteFormChangeTable, - [SPECIES_GENESECT] = sGenesectFormChangeTable, + [SPECIES_GENESECT] = sGenesectFormChangeTable, [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectFormChangeTable, [SPECIES_GENESECT_BURN_DRIVE] = sGenesectFormChangeTable, [SPECIES_GENESECT_CHILL_DRIVE] = sGenesectFormChangeTable, + [SPECIES_XERNEAS] = sXerneasFormChangeTable, + [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, [SPECIES_HOOPA] = sHoopaFormChangeTable, [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundFormChangeTable, [SPECIES_ORICORIO] = sOricorioFormChangeTable, @@ -60,5 +62,9 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_SILVALLY_ROCK] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_STEEL] = sSilvallyFormChangeTable, [SPECIES_SILVALLY_WATER] = sSilvallyFormChangeTable, + [SPECIES_ZACIAN] = sZacianFormChangeTable, + [SPECIES_ZACIAN_CROWNED_SWORD] = sZacianFormChangeTable, + [SPECIES_ZAMAZENTA] = sZamazentaFormChangeTable, + [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = sZamazentaFormChangeTable, #endif }; diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 15cb8cdecd..be76cc9956 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -33,6 +33,14 @@ FORM_ITEM_USE_TIME: param1 = item to use param2 = DAY if form change activates in the daytime NIGHT if form change activates at nighttime + +FORM_BATTLE_BEGIN: + Form change activates when the Pokémon is sent out at the beginning of a battle + param1 = item to hold, optional + +FORM_BATTLE_END: + Form change activates at the end of a battle + param1 = item to hold, optional */ // FORM_MOVE param2 Arguments @@ -185,5 +193,23 @@ static const struct FormChange sSilvallyFormChangeTable[] = { }; #endif +static const struct FormChange sXerneasFormChangeTable[] = { + {FORM_BATTLE_BEGIN, SPECIES_XERNEAS_ACTIVE, ITEM_NONE}, + {FORM_BATTLE_END, SPECIES_XERNEAS, ITEM_NONE}, + {FORM_CHANGE_END}, +}; + +static const struct FormChange sZacianFormChangeTable[] = { + {FORM_BATTLE_BEGIN, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD}, + {FORM_BATTLE_END, SPECIES_ZACIAN, ITEM_RUSTED_SWORD}, + {FORM_CHANGE_END}, +}; + +static const struct FormChange sZamazentaFormChangeTable[] = { + {FORM_BATTLE_BEGIN, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD}, + {FORM_BATTLE_END, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD}, + {FORM_CHANGE_END}, +}; + #undef WHEN_LEARNED #undef WHEN_FORGOTTEN diff --git a/src/pokemon.c b/src/pokemon.c index 92bd923f08..06e75dbc3b 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8237,13 +8237,13 @@ u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId) return targetFormId; } -u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg) +u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg) { return GetFormChangeTargetSpeciesBoxMon(&mon->box, method, arg); } // Returns SPECIES_NONE if no form change is possible -u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg) +u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg) { u32 i; u16 targetSpecies = SPECIES_NONE; @@ -8264,6 +8264,8 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg switch (method) { case FORM_ITEM_HOLD: + case FORM_BATTLE_BEGIN: + case FORM_BATTLE_END: if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) targetSpecies = formChanges[i].targetSpecies; break; From 61c95421eb75a391dfde3e0f6d408e6737ad9b8d Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:01:46 +0200 Subject: [PATCH 156/271] Update src/event_object_movement.c Co-authored-by: LOuroboros --- src/event_object_movement.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index c5663461ac..2c80e79489 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4633,7 +4633,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) #if TX_DEBUG_SYSTEM == TRUE if (FlagGet(FLAG_SYS_NO_COLLISION)) return COLLISION_NONE; - #endif // + #endif if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; From cc921c62d77182c78ca2117598a7ddb52288f0b7 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:01:59 +0200 Subject: [PATCH 157/271] Update src/field_control_avatar.c Co-authored-by: LOuroboros --- src/field_control_avatar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 121a10670b..9dda48d668 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -134,7 +134,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE if (heldKeys & R_BUTTON) { - if(input->pressedSelectButton) + if (input->pressedSelectButton) { input->input_field_1_0 = TRUE; input->pressedSelectButton = FALSE; From 79c4fa560fb3d7ab59060f9bec638bc9238a5ad9 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:03:07 +0200 Subject: [PATCH 158/271] Update src/start_menu.c Co-authored-by: LOuroboros --- src/start_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/start_menu.c b/src/start_menu.c index f4c0112b27..ce9b726a3e 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -174,7 +174,7 @@ static const struct MenuAction sStartMenuItems[] = [MENU_ACTION_REST_FRONTIER] = {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, [MENU_ACTION_RETIRE_FRONTIER] = {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, [MENU_ACTION_PYRAMID_BAG] = {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, - [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, + [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, }; static const struct BgTemplate sBgTemplates_LinkBattleSave[] = From 155465a919b644105db742503eb491ae12ea666a Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:03:28 +0200 Subject: [PATCH 159/271] Update src/pokemon_storage_system.c Co-authored-by: LOuroboros --- src/pokemon_storage_system.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index e064be64d3..df822f2458 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1669,12 +1669,15 @@ static void FieldTask_ReturnToPcMenu(void) MainCallback vblankCb = gMain.vblankCallback; SetVBlankCallback(NULL); - if (!FlagGet(FLAG_SYS_PC_FROM_DEBUG_MENU)) { + if (!FlagGet(FLAG_SYS_PC_FROM_DEBUG_MENU)) + { taskId = CreateTask(Task_PCMainMenu, 80); gTasks[taskId].tState = 0; gTasks[taskId].tSelectedOption = sPreviousBoxOption; Task_PCMainMenu(taskId); - } else { + } + else + { FlagClear(FLAG_SYS_PC_FROM_DEBUG_MENU); ScriptContext_Enable(); } From 725a9102ee257700510c756011fdbf38e8c56a4e Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:03:44 +0200 Subject: [PATCH 160/271] Update src/new_game.c Co-authored-by: LOuroboros --- src/new_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/new_game.c b/src/new_game.c index 0280e4c93d..8f8aa9b82b 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -90,7 +90,7 @@ static void InitPlayerTrainerId(void) // L=A isnt set here for some reason. static void SetDefaultOptions(void) { - gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_FAST; + gSaveBlock2Ptr->optionsTextSpeed = OPTIONS_TEXT_SPEED_MID; gSaveBlock2Ptr->optionsWindowFrameType = 0; gSaveBlock2Ptr->optionsSound = OPTIONS_SOUND_MONO; gSaveBlock2Ptr->optionsBattleStyle = OPTIONS_BATTLE_STYLE_SHIFT; From 2f61407c7886fbdb0893335100e0df857e718531 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:04:02 +0200 Subject: [PATCH 161/271] Update src/field_control_avatar.c Co-authored-by: LOuroboros --- src/field_control_avatar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 9dda48d668..137fe8980d 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -725,7 +725,7 @@ static bool8 CheckStandardWildEncounter(u16 metatileBehavior) } sPreviousPlayerMetatileBehavior = metatileBehavior; - return FALSE; + return FALSE; } static bool8 TryArrowWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction) From 5fed45e40b3646da5b066d4e2bba07254d3e5d6f Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:04:14 +0200 Subject: [PATCH 162/271] Update src/item_use.c Co-authored-by: LOuroboros --- src/item_use.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/item_use.c b/src/item_use.c index 537e787893..63599d1e21 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -983,7 +983,8 @@ static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a b void ItemUseInBattle_PokeBall(u8 taskId) { #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_CATCHING)){ + if (FlagGet(FLAG_SYS_NO_CATCHING)) + { static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); return; From d9bd2724525bb2deabd4d7750017a73a6f50e03e Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:08:35 +0200 Subject: [PATCH 163/271] removed the entries ld_script as per pret#1738, added newline to debug.h --- include/debug.h | 2 +- ld_script.txt | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/include/debug.h b/include/debug.h index 9aec5c2629..bfc072ee3b 100644 --- a/include/debug.h +++ b/include/debug.h @@ -8,4 +8,4 @@ void Debug_ShowMainMenu(void); -#endif // GUARD_DEBUG_H \ No newline at end of file +#endif // GUARD_DEBUG_H diff --git a/ld_script.txt b/ld_script.txt index 10de31a99d..da0eb682d3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -105,7 +105,6 @@ SECTIONS { src/random.o(.text); src/util.o(.text); src/daycare.o(.text); - src/debug.o(.text); src/egg_hatch.o(.text); src/battle_interface.o(.text); src/battle_anim_smokescreen.o(.text); @@ -496,7 +495,6 @@ SECTIONS { src/trig.o(.rodata); src/util.o(.rodata); src/daycare.o(.rodata); - src/debug.o(.rodata); src/egg_hatch.o(.rodata); src/battle_gfx_sfx_util.o(.rodata); src/battle_interface.o(.rodata); From e09ba650f375b69d28b971b145d81cdb9721e62e Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:12:23 +0200 Subject: [PATCH 164/271] imrpoved code formatting in field_control_avatar as per suggestion --- src/field_control_avatar.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 137fe8980d..6f5460f589 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -138,7 +138,8 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) { input->input_field_1_0 = TRUE; input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) + } + else if (input->pressedStartButton) { input->input_field_1_2 = TRUE; input->pressedStartButton = FALSE; @@ -146,16 +147,17 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) } if (heldKeys & L_BUTTON) { - if(input->pressedSelectButton) + if (input->pressedSelectButton) { input->input_field_1_1 = TRUE; input->pressedSelectButton = FALSE; - }else if(input->pressedStartButton) + } + else if (input->pressedStartButton) { input->input_field_1_3 = TRUE; input->pressedStartButton = FALSE; } - } + } #endif } From 04c40677bd54f2fd2421401f1684c51ebabb9cad Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 17:41:35 +0200 Subject: [PATCH 165/271] Changed the way debug flags are handled, now in constants/battle_config.h --- include/constants/battle_config.h | 8 ++++++++ include/constants/flags.h | 14 +++++++------- src/battle_main.c | 2 +- src/debug.c | 32 +++++++++++++++---------------- src/event_object_movement.c | 2 +- src/field_control_avatar.c | 2 +- src/item_use.c | 2 +- src/pokemon_storage_system.c | 4 ++-- src/trainer_see.c | 2 +- 9 files changed, 38 insertions(+), 30 deletions(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 89134daf91..0b610211c5 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -194,6 +194,14 @@ #define B_NEW_IMPACT_PALETTE FALSE // If set to TRUE, it updates the basic 'hit' palette. #define B_NEW_SURF_PARTICLE_PALETTE FALSE // If set to TRUE, it updates Surf's wave palette. +// Debugging, Replace the used flags with others or disable with a 0 #define B_ENABLE_DEBUG TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. +#define TX_DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. +#define TX_DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. +#define TX_DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. +#define TX_DEBUG_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. +#define TX_DEBUG_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. +#define TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. + #endif // GUARD_CONSTANTS_BATTLE_CONFIG_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 9b101c77e4..ac8de43dc4 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -40,13 +40,13 @@ #define FLAG_TEMP_1E (TEMP_FLAGS_START + 0x1E) #define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F) #define TEMP_FLAGS_END FLAG_TEMP_1F - -#define FLAG_SYS_NO_COLLISION 0x20 // Unused Flag //DEBUG -#define FLAG_SYS_NO_ENCOUNTER 0x21 // Unused Flag //DEBUG -#define FLAG_SYS_NO_TRAINER_SEE 0x22 // Unused Flag //DEBUG -#define FLAG_SYS_NO_BAG_USE 0x23 // Unused Flag //DEBUG -#define FLAG_SYS_NO_CATCHING 0x24 // Unused Flag //DEBUG -#define FLAG_SYS_PC_FROM_DEBUG_MENU 0x25 // Unused Flag //DEBUG + +#define FLAG_UNUSED_0x020 0x20 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x021 0x21 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x022 0x22 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x023 0x23 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x024 0x24 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x025 0x25 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" #define FLAG_UNUSED_0x026 0x26 // Unused Flag #define FLAG_UNUSED_0x027 0x27 // Unused Flag #define FLAG_UNUSED_0x028 0x28 // Unused Flag diff --git a/src/battle_main.c b/src/battle_main.c index 029578ceb7..20ebc05c61 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4002,7 +4002,7 @@ static void HandleTurnActionSelectionState(void) break; case B_ACTION_USE_ITEM: #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_BAG_USE)) + if (FlagGet(TX_DEBUG_FLAG_NO_BAG_USE)) { RecordedBattle_ClearBattlerAction(gActiveBattler, 1); gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; diff --git a/src/debug.c b/src/debug.c index b27142abea..283361b389 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1447,56 +1447,56 @@ static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) } static void DebugAction_Flags_CollisionOnOff(u8 taskId) { - if(FlagGet(FLAG_SYS_NO_COLLISION)) + if(FlagGet(TX_DEBUG_FLAG_NO_COLLISION)) { - FlagClear(FLAG_SYS_NO_COLLISION); + FlagClear(TX_DEBUG_FLAG_NO_COLLISION); PlaySE(SE_PC_OFF); }else{ - FlagSet(FLAG_SYS_NO_COLLISION); + FlagSet(TX_DEBUG_FLAG_NO_COLLISION); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_EncounterOnOff(u8 taskId) { - if(FlagGet(FLAG_SYS_NO_ENCOUNTER)) + if(FlagGet(TX_DEBUG_FLAG_NO_ENCOUNTER)) { - FlagClear(FLAG_SYS_NO_ENCOUNTER); + FlagClear(TX_DEBUG_FLAG_NO_ENCOUNTER); PlaySE(SE_PC_OFF); }else{ - FlagSet(FLAG_SYS_NO_ENCOUNTER); + FlagSet(TX_DEBUG_FLAG_NO_ENCOUNTER); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) { - if(FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + if(FlagGet(TX_DEBUG_FLAG_NO_TRAINER_SEE)) { - FlagClear(FLAG_SYS_NO_TRAINER_SEE); + FlagClear(TX_DEBUG_FLAG_NO_TRAINER_SEE); PlaySE(SE_PC_OFF); }else{ - FlagSet(FLAG_SYS_NO_TRAINER_SEE); + FlagSet(TX_DEBUG_FLAG_NO_TRAINER_SEE); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_BagUseOnOff(u8 taskId) { - if(FlagGet(FLAG_SYS_NO_BAG_USE)) + if(FlagGet(TX_DEBUG_FLAG_NO_BAG_USE)) { - FlagClear(FLAG_SYS_NO_BAG_USE); + FlagClear(TX_DEBUG_FLAG_NO_BAG_USE); PlaySE(SE_PC_OFF); }else{ - FlagSet(FLAG_SYS_NO_BAG_USE); + FlagSet(TX_DEBUG_FLAG_NO_BAG_USE); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_CatchingOnOff(u8 taskId) { - if(FlagGet(FLAG_SYS_NO_CATCHING)) + if(FlagGet(TX_DEBUG_FLAG_NO_CATCHING)) { - FlagClear(FLAG_SYS_NO_CATCHING); + FlagClear(TX_DEBUG_FLAG_NO_CATCHING); PlaySE(SE_PC_OFF); }else{ - FlagSet(FLAG_SYS_NO_CATCHING); + FlagSet(TX_DEBUG_FLAG_NO_CATCHING); PlaySE(SE_PC_LOGIN); } } @@ -2723,7 +2723,7 @@ static void Task_WaitFadeAccessPC(u8 taskId) if (!gPaletteFade.active) { DestroyTask(taskId); - FlagSet(FLAG_SYS_PC_FROM_DEBUG_MENU); + FlagSet(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU); EnterPokeStorage(2); } } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 2c80e79489..fbcb6ed795 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4631,7 +4631,7 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) u8 direction = dir; #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_COLLISION)) + if (FlagGet(TX_DEBUG_FLAG_NO_COLLISION)) return COLLISION_NONE; #endif diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 6f5460f589..5f8712980f 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -708,7 +708,7 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_ENCOUNTER)) + if (FlagGet(TX_DEBUG_FLAG_NO_ENCOUNTER)) return FALSE; #endif diff --git a/src/item_use.c b/src/item_use.c index 63599d1e21..5cca3aee3f 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -983,7 +983,7 @@ static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a b void ItemUseInBattle_PokeBall(u8 taskId) { #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_CATCHING)) + if (FlagGet(TX_DEBUG_FLAG_NO_CATCHING)) { static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index df822f2458..437458d75b 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1669,7 +1669,7 @@ static void FieldTask_ReturnToPcMenu(void) MainCallback vblankCb = gMain.vblankCallback; SetVBlankCallback(NULL); - if (!FlagGet(FLAG_SYS_PC_FROM_DEBUG_MENU)) + if (!FlagGet(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU)) { taskId = CreateTask(Task_PCMainMenu, 80); gTasks[taskId].tState = 0; @@ -1678,7 +1678,7 @@ static void FieldTask_ReturnToPcMenu(void) } else { - FlagClear(FLAG_SYS_PC_FROM_DEBUG_MENU); + FlagClear(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU); ScriptContext_Enable(); } SetVBlankCallback(vblankCb); diff --git a/src/trainer_see.c b/src/trainer_see.c index 81b040a3b6..596b7456d8 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -194,7 +194,7 @@ bool8 CheckForTrainersWantingBattle(void) u8 i; #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(FLAG_SYS_NO_TRAINER_SEE)) + if (FlagGet(TX_DEBUG_FLAG_NO_TRAINER_SEE)) return FALSE; #endif From 3debf0442dc88b948899c73a3b98a0d76b1f45f7 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 18:02:23 +0200 Subject: [PATCH 166/271] changed the locations of tx_debug_system related #defines to its own file 'constants/debug_config.h' --- include/constants/battle_config.h | 8 -------- include/constants/debug_config.h | 15 +++++++++++++++ include/constants/global.h | 1 + include/debug.h | 5 +---- 4 files changed, 17 insertions(+), 12 deletions(-) create mode 100644 include/constants/debug_config.h diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 0b610211c5..89134daf91 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -194,14 +194,6 @@ #define B_NEW_IMPACT_PALETTE FALSE // If set to TRUE, it updates the basic 'hit' palette. #define B_NEW_SURF_PARTICLE_PALETTE FALSE // If set to TRUE, it updates Surf's wave palette. -// Debugging, Replace the used flags with others or disable with a 0 #define B_ENABLE_DEBUG TRUE // If set to TRUE, enables a debug menu to use in battles by pressing the Select button. -#define TX_DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. -#define TX_DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. -#define TX_DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. -#define TX_DEBUG_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. -#define TX_DEBUG_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. -#define TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. - #endif // GUARD_CONSTANTS_BATTLE_CONFIG_H diff --git a/include/constants/debug_config.h b/include/constants/debug_config.h new file mode 100644 index 0000000000..847288d64e --- /dev/null +++ b/include/constants/debug_config.h @@ -0,0 +1,15 @@ +#ifndef GUARD_CONSTANTS_DEBUG_CONFIG_H +#define GUARD_CONSTANTS_DEBUG_CONFIG_H + +#define TX_DEBUG_SYSTEM TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. +#define TX_DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). + +// Replace the used flags with others or disable with a 0 +#define TX_DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. +#define TX_DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. +#define TX_DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. +#define TX_DEBUG_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. +#define TX_DEBUG_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. +#define TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. + +#endif // GUARD_CONSTANTS_DEBUG_CONFIG_H diff --git a/include/constants/global.h b/include/constants/global.h index 2a773dbb95..b80bcd402a 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -2,6 +2,7 @@ #define GUARD_CONSTANTS_GLOBAL_H #include "constants/battle_config.h" +#include "constants/debug_config.h" // Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. // In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. diff --git a/include/debug.h b/include/debug.h index bfc072ee3b..c5bdc224cc 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,11 +1,8 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H -#define TX_DEBUG_SYSTEM TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. -#define TX_DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). - +#include "constants/debug_config.h" void Debug_ShowMainMenu(void); - #endif // GUARD_DEBUG_H From c13561e5ba4db120578cce0e726b7605f8f3f505 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 30 Aug 2022 18:15:06 +0200 Subject: [PATCH 167/271] simplified filed controls code for debug menu --- src/field_control_avatar.c | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 5f8712980f..e2bc06e98a 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -132,31 +132,10 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) input->dpadDirection = DIR_EAST; #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE - if (heldKeys & R_BUTTON) + if ((heldKeys & R_BUTTON) && input->pressedStartButton) { - if (input->pressedSelectButton) - { - input->input_field_1_0 = TRUE; - input->pressedSelectButton = FALSE; - } - else if (input->pressedStartButton) - { - input->input_field_1_2 = TRUE; - input->pressedStartButton = FALSE; - } - } - if (heldKeys & L_BUTTON) - { - if (input->pressedSelectButton) - { - input->input_field_1_1 = TRUE; - input->pressedSelectButton = FALSE; - } - else if (input->pressedStartButton) - { - input->input_field_1_3 = TRUE; - input->pressedStartButton = FALSE; - } + input->input_field_1_2 = TRUE; + input->pressedStartButton = FALSE; } #endif } From d167b4ea0a0afad575d7aef5fa3ac47d9fb92dff Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 30 Aug 2022 20:08:50 +0200 Subject: [PATCH 168/271] Dragon Tail Weak Armor fix --- data/battle_scripts_1.s | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 9ecc3b179f..dacae63c3e 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2016,12 +2016,11 @@ BattleScript_EffectHitSwitchTarget: resultmessage waitmessage B_WAIT_TIME_LONG tryfaintmon BS_TARGET - moveendcase MOVEEND_MAGICIAN @ possibly others? + moveendall jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted tryhitswitchtarget BattleScript_EffectHitSwitchTargetMoveEnd BattleScript_EffectHitSwitchTargetMoveEnd: - moveendall end BattleScript_EffectClearSmog: From c167e2c6cc6947deb618f84e04fd24fe0487dd09 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 30 Aug 2022 18:42:31 -0300 Subject: [PATCH 169/271] Added Legends: Arceus' move data --- data/battle_anim_scripts.s | 81 ++++--- include/constants/moves.h | 27 ++- src/data/battle_moves.h | 340 +++++++++++++++++++++++++++++- src/data/contest_moves.h | 48 +++++ src/data/text/move_descriptions.h | 24 +++ src/data/text/move_names.h | 48 +++++ 6 files changed, 535 insertions(+), 33 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index bfd5af0539..23eb678f96 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -779,6 +779,31 @@ gBattleAnims_Moves:: .4byte Move_GLACIAL_LANCE .4byte Move_ASTRAL_BARRAGE .4byte Move_EERIE_SPELL +@@@@LA MOVES + .4byte Move_DIRE_CLAW + .4byte Move_PSYSHIELD_BASH + .4byte Move_POWER_SHIFT + .4byte Move_STONE_AXE + .4byte Move_SPRINGTIDE_STORM + .4byte Move_MYSTICAL_POWER + .4byte Move_RAGING_FURY + .4byte Move_WAVE_CRASH + .4byte Move_CHLOROBLAST + .4byte Move_MOUNTAIN_GALE + .4byte Move_VICTORY_DANCE + .4byte Move_HEADLONG_RUSH + .4byte Move_BARB_BARRAGE + .4byte Move_ESPER_WING + .4byte Move_BITTER_MALICE + .4byte Move_SHELTER + .4byte Move_TRIPLE_ARROWS + .4byte Move_INFERNAL_PARADE + .4byte Move_CEASELESS_EDGE + .4byte Move_BLEAKWIND_STORM + .4byte Move_WILDBOLT_STORM + .4byte Move_SANDSEAR_STORM + .4byte Move_LUNAR_BLESSING + .4byte Move_TAKE_HEART @@@@ Z MOVES .4byte Move_BREAKNECK_BLITZ .4byte Move_ALL_OUT_PUMMELING @@ -14270,55 +14295,51 @@ Move_POLTERGEIST:: end Move_CORROSIVE_GAS:: - end @to do: - Move_COACHING:: - end @to do: - Move_FLIP_TURN:: - end @to do: - Move_TRIPLE_AXEL:: - end @to do: - Move_DUAL_WINGBEAT:: - end @to do: - Move_SCORCHING_SANDS:: - end @to do: + end @to do Move_JUNGLE_HEALING:: goto Move_AROMATHERAPY Move_WICKED_BLOW:: - end @to do: - Move_SURGING_STRIKES:: - end @to do: - Move_THUNDER_CAGE:: - end @to do: - Move_DRAGON_ENERGY:: - end @to do: - Move_FREEZING_GLARE:: - end @to do: - Move_FIERY_WRATH:: - end @to do: - Move_THUNDEROUS_KICK:: - end @to do: - Move_GLACIAL_LANCE:: - end @to do: - Move_ASTRAL_BARRAGE:: - end @to do: - Move_EERIE_SPELL:: - end @to do: +Move_DIRE_CLAW:: +Move_PSYSHIELD_BASH:: +Move_POWER_SHIFT:: +Move_STONE_AXE:: +Move_SPRINGTIDE_STORM:: +Move_MYSTICAL_POWER:: +Move_RAGING_FURY:: +Move_WAVE_CRASH:: +Move_CHLOROBLAST:: +Move_MOUNTAIN_GALE:: +Move_VICTORY_DANCE:: +Move_HEADLONG_RUSH:: +Move_BARB_BARRAGE:: +Move_ESPER_WING:: +Move_BITTER_MALICE:: +Move_SHELTER:: +Move_TRIPLE_ARROWS:: +Move_INFERNAL_PARADE:: +Move_CEASELESS_EDGE:: +Move_BLEAKWIND_STORM:: +Move_WILDBOLT_STORM:: +Move_SANDSEAR_STORM:: +Move_LUNAR_BLESSING:: +Move_TAKE_HEART:: + end @to do @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ Move_NONE: diff --git a/include/constants/moves.h b/include/constants/moves.h index 822853e93b..75691de76a 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -781,8 +781,33 @@ #define MOVE_GLACIAL_LANCE 752 #define MOVE_ASTRAL_BARRAGE 753 #define MOVE_EERIE_SPELL 754 +// Legends: Arceus Moves +#define MOVE_DIRE_CLAW 755 +#define MOVE_PSYSHIELD_BASH 756 +#define MOVE_POWER_SHIFT 757 +#define MOVE_STONE_AXE 758 +#define MOVE_SPRINGTIDE_STORM 759 +#define MOVE_MYSTICAL_POWER 760 +#define MOVE_RAGING_FURY 761 +#define MOVE_WAVE_CRASH 762 +#define MOVE_CHLOROBLAST 763 +#define MOVE_MOUNTAIN_GALE 764 +#define MOVE_VICTORY_DANCE 765 +#define MOVE_HEADLONG_RUSH 766 +#define MOVE_BARB_BARRAGE 767 +#define MOVE_ESPER_WING 768 +#define MOVE_BITTER_MALICE 769 +#define MOVE_SHELTER 770 +#define MOVE_TRIPLE_ARROWS 771 +#define MOVE_INFERNAL_PARADE 772 +#define MOVE_CEASELESS_EDGE 773 +#define MOVE_BLEAKWIND_STORM 774 +#define MOVE_WILDBOLT_STORM 775 +#define MOVE_SANDSEAR_STORM 776 +#define MOVE_LUNAR_BLESSING 777 +#define MOVE_TAKE_HEART 778 -#define MOVES_COUNT_GEN8 755 +#define MOVES_COUNT_GEN8 779 #define MOVES_COUNT MOVES_COUNT_GEN8 diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index f3795325d9..f4df3d9aab 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13233,8 +13233,344 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 160, .zMoveEffect = Z_EFFECT_NONE, }, - - // Z MOVES + + [MOVE_DIRE_CLAW] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_DIRE_CLAW, + .power = 60, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_PSYSHIELD_BASH] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_PSYSHIELD_BASH, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 50, // TODO: Adjust this value. Currently it's set to Fiery Dance's. + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_POWER_SHIFT] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_POWER_SHIFT, + .power = 0, + .type = TYPE_NORMAL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_STATUS, + }, + + [MOVE_STONE_AXE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_STONE_AXE, + .power = 65, + .type = TYPE_ROCK, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_SPRINGTIDE_STORM] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SPRINGTIDE_STORM, + .power = 95, + .type = TYPE_FAIRY, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 30, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_MYSTICAL_POWER] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_MYSTICAL_POWER, + .power = 70, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_RAGING_FURY] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_RAGING_FURY, + .power = 90, + .type = TYPE_FIRE, + .accuracy = 85, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_WAVE_CRASH] = + { + .effect = EFFECT_RECOIL_33, // TODO: Legends: Arceus mechanics. + .power = 75, + .type = TYPE_WATER, + .accuracy = 100, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_CHLOROBLAST] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_CHLOROBLAST, + .power = 120, + .type = TYPE_GRASS, + .accuracy = 95, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_MOUNTAIN_GALE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_ACTION_SPEED_DOWN_HIT, + .power = 100, + .type = TYPE_ICE, + .accuracy = 85, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_VICTORY_DANCE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_VICTORY_DANCE, + .power = 0, + .type = TYPE_FIGHTING, + .accuracy = 0, + .pp = 20, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, + .split = SPLIT_STATUS, + }, + + [MOVE_HEADLONG_RUSH] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_HEADLONG_RUSH, + .power = 100, + .type = TYPE_GROUND, + .accuracy = 100, + .pp = 5, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_BARB_BARRAGE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_BARB_BARRAGE, + .power = 60, + .type = TYPE_POISON, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_ESPER_WING] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, + .power = 75, + .type = TYPE_PSYCHIC, + .accuracy = 90, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_BITTER_MALICE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_ESPER_WING, + .power = 60, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_SHELTER] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SHELTER, + .power = 0, + .type = TYPE_STEEL, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = 0, + .split = SPLIT_STATUS, + }, + + [MOVE_TRIPLE_ARROWS] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_TRIPLE_ARROWS, + .power = 50, + .type = TYPE_FIGHTING, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 100, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_INFERNAL_PARADE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_INFERNAL_PARADE, + .power = 60, + .type = TYPE_GHOST, + .accuracy = 100, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_CEASELESS_EDGE] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_CEASELESS_EDGE, + .power = 65, + .type = TYPE_DARK, + .accuracy = 90, + .pp = 15, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_PHYSICAL, + }, + + [MOVE_BLEAKWIND_STORM] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_BLEAKWIND_STORM, + .power = 95, + .type = TYPE_FLYING, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_WILDBOLT_STORM] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_WILDBOLT_STORM, + .power = 95, + .type = TYPE_ELECTRIC, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_SANDSEAR_STORM] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_SANDSEAR_STORM, + .power = 95, + .type = TYPE_GROUND, + .accuracy = 80, + .pp = 5, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_SELECTED, + .priority = 0, + .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, + .split = SPLIT_SPECIAL, + }, + + [MOVE_LUNAR_BLESSING] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_LUNAR_BLESSING, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + .split = SPLIT_STATUS, + }, + + [MOVE_TAKE_HEART] = + { + .effect = EFFECT_PLACEHOLDER, // EFFECT_TAKE_HEART, + .power = 0, + .type = TYPE_PSYCHIC, + .accuracy = 0, + .pp = 10, + .secondaryEffectChance = 0, + .target = MOVE_TARGET_USER, + .priority = 0, + .flags = FLAG_SNATCH_AFFECTED, + .split = SPLIT_STATUS, + }, + + // Z-Moves [MOVE_BREAKNECK_BLITZ] = { .effect = EFFECT_HIT, diff --git a/src/data/contest_moves.h b/src/data/contest_moves.h index 169e55991d..244f0ddb2e 100644 --- a/src/data/contest_moves.h +++ b/src/data/contest_moves.h @@ -5918,6 +5918,54 @@ const struct ContestMove gContestMoves[MOVES_COUNT] = .comboStarterId = 0, .comboMoves = {0} }, + + [MOVE_DIRE_CLAW] = {0}, // TODO + + [MOVE_PSYSHIELD_BASH] = {0}, // TODO + + [MOVE_POWER_SHIFT] = {0}, // TODO + + [MOVE_STONE_AXE] = {0}, // TODO + + [MOVE_SPRINGTIDE_STORM] = {0}, // TODO + + [MOVE_MYSTICAL_POWER] = {0}, // TODO + + [MOVE_RAGING_FURY] = {0}, // TODO + + [MOVE_WAVE_CRASH] = {0}, // TODO + + [MOVE_CHLOROBLAST] = {0}, // TODO + + [MOVE_MOUNTAIN_GALE] = {0}, // TODO + + [MOVE_VICTORY_DANCE] = {0}, // TODO + + [MOVE_HEADLONG_RUSH] = {0}, // TODO + + [MOVE_BARB_BARRAGE] = {0}, // TODO + + [MOVE_ESPER_WING] = {0}, // TODO + + [MOVE_BITTER_MALICE] = {0}, // TODO + + [MOVE_SHELTER] = {0}, // TODO + + [MOVE_TRIPLE_ARROWS] = {0}, // TODO + + [MOVE_INFERNAL_PARADE] = {0}, // TODO + + [MOVE_CEASELESS_EDGE] = {0}, // TODO + + [MOVE_BLEAKWIND_STORM] = {0}, // TODO + + [MOVE_WILDBOLT_STORM] = {0}, // TODO + + [MOVE_SANDSEAR_STORM] = {0}, // TODO + + [MOVE_LUNAR_BLESSING] = {0}, // TODO + + [MOVE_TAKE_HEART] = {0}, // TODO }; const struct ContestEffect gContestEffects[] = diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 7d890b1d3d..bbdf606d18 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -3741,4 +3741,28 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_GLACIAL_LANCE - 1] = sGlacialLanceDescription, [MOVE_ASTRAL_BARRAGE - 1] = sAstralBarrageDescription, [MOVE_EERIE_SPELL - 1] = sEerieSpellDescription, + [MOVE_DIRE_CLAW - 1] = gNotDoneYetDescription, + [MOVE_PSYSHIELD_BASH - 1] = gNotDoneYetDescription, + [MOVE_POWER_SHIFT - 1] = gNotDoneYetDescription, + [MOVE_STONE_AXE - 1] = gNotDoneYetDescription, + [MOVE_SPRINGTIDE_STORM - 1] = gNotDoneYetDescription, + [MOVE_MYSTICAL_POWER - 1] = gNotDoneYetDescription, + [MOVE_RAGING_FURY - 1] = gNotDoneYetDescription, + [MOVE_WAVE_CRASH - 1] = gNotDoneYetDescription, + [MOVE_CHLOROBLAST - 1] = gNotDoneYetDescription, + [MOVE_MOUNTAIN_GALE - 1] = gNotDoneYetDescription, + [MOVE_VICTORY_DANCE - 1] = gNotDoneYetDescription, + [MOVE_HEADLONG_RUSH - 1] = gNotDoneYetDescription, + [MOVE_BARB_BARRAGE - 1] = gNotDoneYetDescription, + [MOVE_ESPER_WING - 1] = gNotDoneYetDescription, + [MOVE_BITTER_MALICE - 1] = gNotDoneYetDescription, + [MOVE_SHELTER - 1] = gNotDoneYetDescription, + [MOVE_TRIPLE_ARROWS - 1] = gNotDoneYetDescription, + [MOVE_INFERNAL_PARADE - 1] = gNotDoneYetDescription, + [MOVE_CEASELESS_EDGE - 1] = gNotDoneYetDescription, + [MOVE_BLEAKWIND_STORM - 1] = gNotDoneYetDescription, + [MOVE_WILDBOLT_STORM - 1] = gNotDoneYetDescription, + [MOVE_SANDSEAR_STORM - 1] = gNotDoneYetDescription, + [MOVE_LUNAR_BLESSING - 1] = gNotDoneYetDescription, + [MOVE_TAKE_HEART - 1] = gNotDoneYetDescription, }; diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index 48556d7fac..ffa00e3f63 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -757,6 +757,30 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_GLACIAL_LANCE] = _("Glacial Lance"), [MOVE_ASTRAL_BARRAGE] = _("Astral Barrage"), [MOVE_EERIE_SPELL] = _("Eerie Spell"), + [MOVE_DIRE_CLAW] = _("Dire Claw"), + [MOVE_PSYSHIELD_BASH] = _("Psyshield Bash"), + [MOVE_POWER_SHIFT] = _("Power Shift"), + [MOVE_STONE_AXE] = _("Stone Axe"), + [MOVE_SPRINGTIDE_STORM] = _("Springtide Storm"), + [MOVE_MYSTICAL_POWER] = _("Mystical Power"), + [MOVE_RAGING_FURY] = _("Raging Fury"), + [MOVE_WAVE_CRASH] = _("Wave Crash"), + [MOVE_CHLOROBLAST] = _("Chloroblast"), + [MOVE_MOUNTAIN_GALE] = _("Mountain Gale"), + [MOVE_VICTORY_DANCE] = _("Victory Dance"), + [MOVE_HEADLONG_RUSH] = _("Headlong Rush"), + [MOVE_BARB_BARRAGE] = _("Barb Barrage"), + [MOVE_ESPER_WING] = _("Esper Wing"), + [MOVE_BITTER_MALICE] = _("Bitter Malice"), + [MOVE_SHELTER] = _("Shelter"), + [MOVE_TRIPLE_ARROWS] = _("Triple Arrows"), + [MOVE_INFERNAL_PARADE] = _("Infernal Parade"), + [MOVE_CEASELESS_EDGE] = _("Ceaseless Edge"), + [MOVE_BLEAKWIND_STORM] = _("Bleakwind Storm"), + [MOVE_WILDBOLT_STORM] = _("Wildbolt Storm"), + [MOVE_SANDSEAR_STORM] = _("Sandsear Storm"), + [MOVE_LUNAR_BLESSING] = _("Lunar Blessing"), + [MOVE_TAKE_HEART] = _("Take Heart"), }; #else // 12 letters @@ -1517,6 +1541,30 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] = [MOVE_GLACIAL_LANCE] = _("GlacialLance"), [MOVE_ASTRAL_BARRAGE] = _("AstrlBarrage"), [MOVE_EERIE_SPELL] = _("Eerie Spell"), + [MOVE_DIRE_CLAW] = _("Dire Claw"), + [MOVE_PSYSHIELD_BASH] = _("PsyshieldBsh"), + [MOVE_POWER_SHIFT] = _("Power Shift"), + [MOVE_STONE_AXE] = _("Stone Axe"), + [MOVE_SPRINGTIDE_STORM] = _("SprngtdeStrm"), + [MOVE_MYSTICAL_POWER] = _("MystcalPower"), + [MOVE_RAGING_FURY] = _("Raging Fury"), + [MOVE_WAVE_CRASH] = _("Wave Crash"), + [MOVE_CHLOROBLAST] = _("Chloroblast"), + [MOVE_MOUNTAIN_GALE] = _("MountainGale"), + [MOVE_VICTORY_DANCE] = _("VictoryDance"), + [MOVE_HEADLONG_RUSH] = _("HeadlongRush"), + [MOVE_BARB_BARRAGE] = _("Barb Barrage"), + [MOVE_ESPER_WING] = _("Esper Wing"), + [MOVE_BITTER_MALICE] = _("BitterMalice"), + [MOVE_SHELTER] = _("Shelter"), + [MOVE_TRIPLE_ARROWS] = _("TripleArrows"), + [MOVE_INFERNAL_PARADE] = _("InfrnlParade"), + [MOVE_CEASELESS_EDGE] = _("CeaslessEdge"), + [MOVE_BLEAKWIND_STORM] = _("BlekwndStorm"), + [MOVE_WILDBOLT_STORM] = _("WildbltStorm"), + [MOVE_SANDSEAR_STORM] = _("SndsearStorm"), + [MOVE_LUNAR_BLESSING] = _("LunarBlessng"), + [MOVE_TAKE_HEART] = _("Take Heart"), }; #endif From cc86b2fd961bc1c514d30b0792dbf0aa8538d25c Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 30 Aug 2022 20:28:15 -0300 Subject: [PATCH 170/271] Added Z-Move stats for LA's moves --- src/data/battle_moves.h | 48 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index f4df3d9aab..4b5cde44c0 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13246,6 +13246,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_PSYSHIELD_BASH] = @@ -13260,6 +13262,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_POWER_SHIFT] = @@ -13274,6 +13278,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_STATUS, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_STONE_AXE] = @@ -13288,6 +13294,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_SPRINGTIDE_STORM] = @@ -13302,6 +13310,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_MYSTICAL_POWER] = @@ -13316,6 +13326,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_RAGING_FURY] = @@ -13330,6 +13342,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_WAVE_CRASH] = @@ -13344,6 +13358,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_CHLOROBLAST] = @@ -13358,6 +13374,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 190, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_MOUNTAIN_GALE] = @@ -13372,6 +13390,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_VICTORY_DANCE] = @@ -13386,6 +13406,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED | FLAG_DANCE, .split = SPLIT_STATUS, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_HEADLONG_RUSH] = @@ -13400,6 +13422,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 180, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_BARB_BARRAGE] = @@ -13414,6 +13438,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_ESPER_WING] = @@ -13428,6 +13454,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 140, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_BITTER_MALICE] = @@ -13442,6 +13470,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_SHELTER] = @@ -13456,6 +13486,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = 0, .split = SPLIT_STATUS, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_TRIPLE_ARROWS] = @@ -13470,6 +13502,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_INFERNAL_PARADE] = @@ -13484,6 +13518,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_CEASELESS_EDGE] = @@ -13498,6 +13534,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_PHYSICAL, + .zMovePower = 120, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_BLEAKWIND_STORM] = @@ -13512,6 +13550,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_WILDBOLT_STORM] = @@ -13526,6 +13566,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_SANDSEAR_STORM] = @@ -13540,6 +13582,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED, .split = SPLIT_SPECIAL, + .zMovePower = 175, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_LUNAR_BLESSING] = @@ -13554,6 +13598,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, [MOVE_TAKE_HEART] = @@ -13568,6 +13614,8 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .priority = 0, .flags = FLAG_SNATCH_AFFECTED, .split = SPLIT_STATUS, + .zMovePower = 100, + .zMoveEffect = Z_EFFECT_NONE, }, // Z-Moves From 7b8226a8af4895827a8bcc0e61060a3475868354 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 30 Aug 2022 22:19:05 -0300 Subject: [PATCH 171/271] Added descriptions for LA's moves --- src/data/text/move_descriptions.h | 144 +++++++++++++++++++++++++----- 1 file changed, 120 insertions(+), 24 deletions(-) diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index bbdf606d18..42b415c024 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2978,6 +2978,102 @@ static const u8 sEerieSpellDescription[] = _( "Attacks with psychic power.\n" "Foe's last move has 3 PP cut."); +static const u8 sDireClawDescription[] = _( + "High critical hit chance. May\n" + "paralyze, poison or drowse."); + +static const u8 sPsyshieldBashDescription[] = _( + "Hits a foe with psychic en-\n" + "ergy. May raise Defense."); + +static const u8 sPowerShiftDescription[] = _( + "The user swaps its offensive\n" + "and defensive stats."); + +static const u8 sStoneAxeDescription[] = _( + "High crit. hit chance. Leaves\n" + "Splinters that hurt the foe."); + +static const u8 sSpringtideStormDescription[] = _( + "Wraps a foe in fierce winds.\n" + "Varies with the user's form."); + +static const u8 sMysticalPowerDescription[] = _( + "Hurts the foe and increases\n" + "smallest of Atk. and Def."); + +static const u8 sRagingFuryDescription[] = _( + "Viciously spews flames at\n" + "a foe, becoming fixated."); + +static const u8 sWaveCrashDescription[] = _( + "Hurts the foe and the user,\n" + "but increases Action Speed."); + +static const u8 sChloroblastDescription[] = _( + "Hurts the foe and the user,\n" + "and lowers Action Speed."); + +static const u8 sMountainGaleDescription[] = _( + "The user hurls giant chunks\n" + "of ice to damage the foe."); + +static const u8 sVictoryDanceDescription[] = _( + "Dances to raise offenses,\n" + "defenses, and also damage."); + +static const u8 sHeadlongRushDescription[] = _( + "Charges the foe with a full-\n" + "body tackle. Lowers Defense."); + +static const u8 sBarbBarrageDescription[] = _( + "Can poison on impact. Powers\n" + "up if the foe has an ailment."); + +static const u8 sEsperWingDescription[] = _( + "High crit. hit chance. Raises\n" + "the user's Action Speed."); + +static const u8 sBitterMaliceDescription[] = _( + "Hurts a foe, harder if it has\n" + "an ailment. Can give FrstBte."); + +static const u8 sShelterDescription[] = _( + "The user hardens their skin\n" + "and obscures themself."); + +static const u8 sTripleArrowsDescription[] = _( + "Shoots 3 arrows that up crit.\n" + "chance and lower foe's Defs."); + +static const u8 sInfernalParadeDescription[] = _( + "Hurts a foe, harder if it has\n" + "an ailment. May leave a burn."); + +static const u8 sCeaselessEdgeDescription[] = _( + "High crit. hit chance. Leaves\n" + "Splinters that hurt the foe."); + +static const u8 sBleakwindStormDescription[] = _( + "Hits with brutal, cold winds.\n" + "May inflict frostbite."); + +static const u8 sWildboltStormDescription[] = _( + "Hits with a brutal tempest.\n" + "May inflict paralysis."); + +static const u8 sSandsearStormDescription[] = _( + "Hits with brutally hot sand.\n" + "May inflict a burn."); + +static const u8 sLunarBlessingDescription[] = _( + "The user heals themself and\n" + "conceals their presence."); + +static const u8 sTakeHeartDescription[] = _( + "The user raise spirit to heal\n" + "and strengthen themself."); + const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" "effect is in development."); @@ -3741,28 +3837,28 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = [MOVE_GLACIAL_LANCE - 1] = sGlacialLanceDescription, [MOVE_ASTRAL_BARRAGE - 1] = sAstralBarrageDescription, [MOVE_EERIE_SPELL - 1] = sEerieSpellDescription, - [MOVE_DIRE_CLAW - 1] = gNotDoneYetDescription, - [MOVE_PSYSHIELD_BASH - 1] = gNotDoneYetDescription, - [MOVE_POWER_SHIFT - 1] = gNotDoneYetDescription, - [MOVE_STONE_AXE - 1] = gNotDoneYetDescription, - [MOVE_SPRINGTIDE_STORM - 1] = gNotDoneYetDescription, - [MOVE_MYSTICAL_POWER - 1] = gNotDoneYetDescription, - [MOVE_RAGING_FURY - 1] = gNotDoneYetDescription, - [MOVE_WAVE_CRASH - 1] = gNotDoneYetDescription, - [MOVE_CHLOROBLAST - 1] = gNotDoneYetDescription, - [MOVE_MOUNTAIN_GALE - 1] = gNotDoneYetDescription, - [MOVE_VICTORY_DANCE - 1] = gNotDoneYetDescription, - [MOVE_HEADLONG_RUSH - 1] = gNotDoneYetDescription, - [MOVE_BARB_BARRAGE - 1] = gNotDoneYetDescription, - [MOVE_ESPER_WING - 1] = gNotDoneYetDescription, - [MOVE_BITTER_MALICE - 1] = gNotDoneYetDescription, - [MOVE_SHELTER - 1] = gNotDoneYetDescription, - [MOVE_TRIPLE_ARROWS - 1] = gNotDoneYetDescription, - [MOVE_INFERNAL_PARADE - 1] = gNotDoneYetDescription, - [MOVE_CEASELESS_EDGE - 1] = gNotDoneYetDescription, - [MOVE_BLEAKWIND_STORM - 1] = gNotDoneYetDescription, - [MOVE_WILDBOLT_STORM - 1] = gNotDoneYetDescription, - [MOVE_SANDSEAR_STORM - 1] = gNotDoneYetDescription, - [MOVE_LUNAR_BLESSING - 1] = gNotDoneYetDescription, - [MOVE_TAKE_HEART - 1] = gNotDoneYetDescription, + [MOVE_DIRE_CLAW - 1] = sDireClawDescription, + [MOVE_PSYSHIELD_BASH - 1] = sPsyshieldBashDescription, + [MOVE_POWER_SHIFT - 1] = sPowerShiftDescription, + [MOVE_STONE_AXE - 1] = sStoneAxeDescription, + [MOVE_SPRINGTIDE_STORM - 1] = sSpringtideStormDescription, + [MOVE_MYSTICAL_POWER - 1] = sMysticalPowerDescription, + [MOVE_RAGING_FURY - 1] = sRagingFuryDescription, + [MOVE_WAVE_CRASH - 1] = sWaveCrashDescription, + [MOVE_CHLOROBLAST - 1] = sChloroblastDescription, + [MOVE_MOUNTAIN_GALE - 1] = sMountainGaleDescription, + [MOVE_VICTORY_DANCE - 1] = sVictoryDanceDescription, + [MOVE_HEADLONG_RUSH - 1] = sHeadlongRushDescription, + [MOVE_BARB_BARRAGE - 1] = sBarbBarrageDescription, + [MOVE_ESPER_WING - 1] = sEsperWingDescription, + [MOVE_BITTER_MALICE - 1] = sBitterMaliceDescription, + [MOVE_SHELTER - 1] = sShelterDescription, + [MOVE_TRIPLE_ARROWS - 1] = sTripleArrowsDescription, + [MOVE_INFERNAL_PARADE - 1] = sInfernalParadeDescription, + [MOVE_CEASELESS_EDGE - 1] = sCeaselessEdgeDescription, + [MOVE_BLEAKWIND_STORM - 1] = sBleakwindStormDescription, + [MOVE_WILDBOLT_STORM - 1] = sWildboltStormDescription, + [MOVE_SANDSEAR_STORM - 1] = sSandsearStormDescription, + [MOVE_LUNAR_BLESSING - 1] = sLunarBlessingDescription, + [MOVE_TAKE_HEART - 1] = sTakeHeartDescription, }; From 494e8791d742f72273f65bf7edef9b240f05d38e Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 30 Aug 2022 21:18:54 -0400 Subject: [PATCH 172/271] Fixed tutors changing levels --- src/party_menu.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/party_menu.c b/src/party_menu.c index 00224f6bd6..4d7f24883a 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5040,7 +5040,8 @@ static void CB2_ShowSummaryScreenToForgetMove(void) static void CB2_ReturnToPartyMenuWhileLearningMove(void) { - SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level + if (sFinalLevel != 0) + SetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_LEVEL, &sFinalLevel); // to avoid displaying incorrect level InitPartyMenu(PARTY_MENU_TYPE_FIELD, PARTY_LAYOUT_SINGLE, PARTY_ACTION_CHOOSE_MON, TRUE, PARTY_MSG_NONE, Task_ReturnToPartyMenuWhileLearningMove, gPartyMenu.exitCallback); } @@ -5313,6 +5314,10 @@ static void PartyMenuTryEvolution(u8 taskId) struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; u16 targetSpecies = GetEvolutionTargetSpecies(mon, EVO_MODE_NORMAL, ITEM_NONE, NULL); + // Resets values to 0 so other means of teaching moves doesn't overwrite levels + sInitialLevel = 0; + sFinalLevel = 0; + if (targetSpecies != SPECIES_NONE) { FreePartyPointers(); From 29448b6acca364feb4476e9d72270bb6bf98ffbe Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 30 Aug 2022 22:05:47 -0400 Subject: [PATCH 173/271] Fixed XL Candy going out of bounds. Also added failsafe in case an invalid param is used. --- src/pokemon.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 350aebf0b8..8b3938aa51 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5714,20 +5714,26 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov && GetMonData(mon, MON_DATA_LEVEL, NULL) != MAX_LEVEL) { u8 param = ItemId_GetHoldEffectParam(item); + dataUnsigned = 0; + if (param == 0) // Rare Candy { dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; } - else if (param < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies + else if (param - 1 < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); dataUnsigned = sExpCandyExperienceTable[param - 1] + GetMonData(mon, MON_DATA_EXP, NULL); if (dataUnsigned > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) dataUnsigned = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; } - SetMonData(mon, MON_DATA_EXP, &dataUnsigned); - CalculateMonStats(mon); - retVal = FALSE; + + if (dataUnsigned != 0) // Failsafe + { + SetMonData(mon, MON_DATA_EXP, &dataUnsigned); + CalculateMonStats(mon); + retVal = FALSE; + } } // Cure status From fe5f30c2005bd668febfd1568c511eddbf0527e8 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 30 Aug 2022 22:50:20 -0400 Subject: [PATCH 174/271] Fixed moves learned at the same level being skipped while using exp candies --- src/party_menu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/party_menu.c b/src/party_menu.c index 4d7f24883a..73937b966c 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5292,11 +5292,14 @@ static void Task_TryLearningNextMove(u8 taskId) switch (result) { case 0: // No moves to learn + if (sInitialLevel >= sFinalLevel) + PartyMenuTryEvolution(taskId); break; case MON_HAS_MAX_MOVES: DisplayMonNeedsToReplaceMove(taskId); break; case MON_ALREADY_KNOWS_MOVE: + gTasks[taskId].func = Task_TryLearningNextMove; return; default: DisplayMonLearnedMove(taskId, result); @@ -5305,8 +5308,6 @@ static void Task_TryLearningNextMove(u8 taskId) if (result) break; } - if (sInitialLevel >= sFinalLevel) - PartyMenuTryEvolution(taskId); } static void PartyMenuTryEvolution(u8 taskId) From 3264c3c87a3dc68d1aac4c549ba12b729a25303e Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 31 Aug 2022 09:05:51 -0400 Subject: [PATCH 175/271] Shows amount of Exp gained. --- include/pokemon.h | 1 + src/party_menu.c | 1 + src/pokemon.c | 2 +- src/strings.c | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 94fdff91d2..34065c6cc5 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -406,6 +406,7 @@ extern const u16 gLinkPlayerFacilityClasses[]; extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const s8 gNatureStatTable[][5]; extern const u16 *const gFormSpeciesIdTables[NUM_SPECIES]; +extern const u32 sExpCandyExperienceTable[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); diff --git a/src/party_menu.c b/src/party_menu.c index 73937b966c..e94bfb9284 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5187,6 +5187,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) { PlaySE(SE_USE_ITEM); gPartyMenuUseExitCallback = FALSE; + ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[ItemId_GetHoldEffectParam(*itemPtr)], STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_PkmnGainedExp); DisplayPartyMenuMessage(gStringVar4, FALSE); ScheduleBgCopyTilemapToVram(2); diff --git a/src/pokemon.c b/src/pokemon.c index 8b3938aa51..bca560175d 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -5507,7 +5507,7 @@ bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, } // EXP candies store an index for this table in their holdEffectParam. -static const u32 sExpCandyExperienceTable[] = { +const u32 sExpCandyExperienceTable[] = { [EXP_100 - 1] = 100, [EXP_800 - 1] = 800, [EXP_3000 - 1] = 3000, diff --git a/src/strings.c b/src/strings.c index d199b92d4b..52f1b6be71 100644 --- a/src/strings.c +++ b/src/strings.c @@ -417,7 +417,7 @@ const u8 gText_PkmnRegainhedHealth[] = _("{STR_VAR_1} regained health.{PAUSE_UNT const u8 gText_PkmnBecameHealthy[] = _("{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}"); const u8 gText_MovesPPIncreased[] = _("{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnElevatedToLvVar2[] = _("{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}."); -const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained Exp. Points!{PAUSE_UNTIL_PRESS}"); +const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained {STR_VAR_2} Exp. Points!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnBaseVar2StatIncreased[] = _("{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnFriendlyBaseVar2Fell[] = _("{STR_VAR_1} turned friendly.\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAdoresBaseVar2Fell[] = _("{STR_VAR_1} adores you!\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); From 8d94c58cacd46657df3163426ec5b93d1fb72b25 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Wed, 31 Aug 2022 21:54:27 -0400 Subject: [PATCH 176/271] Shows exp when leveling up with Exp Candies --- include/strings.h | 1 + src/party_menu.c | 27 ++++++++++++++++++++++++--- src/strings.c | 1 + 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/include/strings.h b/include/strings.h index 25a96eef08..f8f5da4dae 100644 --- a/include/strings.h +++ b/include/strings.h @@ -500,6 +500,7 @@ extern const u8 gText_StopLearningMove2[]; extern const u8 gText_MoveNotLearned[]; extern const u8 gText_PkmnElevatedToLvVar2[]; extern const u8 gText_PkmnGainedExp[]; +extern const u8 gText_PkmnGainedExpAndElevatedToLvVar3[]; extern const u8 gText_RemoveMailBeforeItem[]; extern const u8 gText_PkmnHoldingItemCantHoldMail[]; extern const u8 gText_MailTransferredFromMailbox[]; diff --git a/src/party_menu.c b/src/party_menu.c index e94bfb9284..1d890c5f3a 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5140,6 +5140,16 @@ static void Task_TryLearningNextMoveAfterText(u8 taskId) Task_TryLearningNextMove(taskId); } +static void DisplayExpPoints(u8 taskId, TaskFunc task, u8 holdEffectParam) +{ + PlaySE(SE_USE_ITEM); + ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[holdEffectParam], STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_PkmnGainedExp); + DisplayPartyMenuMessage(gStringVar4, FALSE); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = task; +} + void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) { struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; @@ -5147,6 +5157,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) s16 *arrayPtr = ptr->data; u16 *itemPtr = &gSpecialVar_ItemId; bool8 cannotUseEffect; + u8 holdEffectParam = ItemId_GetHoldEffectParam(*itemPtr); sInitialLevel = GetMonData(mon, MON_DATA_LEVEL); if (sInitialLevel != MAX_LEVEL) @@ -5177,8 +5188,18 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) if (sFinalLevel > sInitialLevel) { PlayFanfareByFanfareNum(FANFARE_LEVEL_UP); - ConvertIntToDecimalStringN(gStringVar2, sFinalLevel, STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); + if (holdEffectParam == 0) // Rare Candy + { + ConvertIntToDecimalStringN(gStringVar2, sFinalLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_PkmnElevatedToLvVar2); + } + else // Exp Candies + { + ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[holdEffectParam - 1], STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar3, sFinalLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_PkmnGainedExpAndElevatedToLvVar3); + } + DisplayPartyMenuMessage(gStringVar4, TRUE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = Task_DisplayLevelUpStatsPg1; @@ -5187,7 +5208,7 @@ void ItemUseCB_RareCandy(u8 taskId, TaskFunc task) { PlaySE(SE_USE_ITEM); gPartyMenuUseExitCallback = FALSE; - ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[ItemId_GetHoldEffectParam(*itemPtr)], STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, sExpCandyExperienceTable[holdEffectParam - 1], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_PkmnGainedExp); DisplayPartyMenuMessage(gStringVar4, FALSE); ScheduleBgCopyTilemapToVram(2); diff --git a/src/strings.c b/src/strings.c index 52f1b6be71..fce4acdde1 100644 --- a/src/strings.c +++ b/src/strings.c @@ -418,6 +418,7 @@ const u8 gText_PkmnBecameHealthy[] = _("{STR_VAR_1} became healthy.{PAUSE_UNTIL_ const u8 gText_MovesPPIncreased[] = _("{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnElevatedToLvVar2[] = _("{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}."); const u8 gText_PkmnGainedExp[] = _("{STR_VAR_1} gained {STR_VAR_2} Exp. Points!{PAUSE_UNTIL_PRESS}"); +const u8 gText_PkmnGainedExpAndElevatedToLvVar3[] = _("{STR_VAR_1} gained {STR_VAR_2} Exp. Points\nand was elevated to Lv. {STR_VAR_3}!"); const u8 gText_PkmnBaseVar2StatIncreased[] = _("{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnFriendlyBaseVar2Fell[] = _("{STR_VAR_1} turned friendly.\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAdoresBaseVar2Fell[] = _("{STR_VAR_1} adores you!\nThe base {STR_VAR_2} fell!{PAUSE_UNTIL_PRESS}"); From e02b33ee112f9f08c0866a27fb8c2ad1e763ad20 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 31 Aug 2022 22:56:39 -0300 Subject: [PATCH 177/271] Automatized the contents of some sideof in src/item.c --- src/item.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/item.c b/src/item.c index 63287693a8..641c1ce618 100644 --- a/src/item.c +++ b/src/item.c @@ -740,11 +740,11 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count) u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode]; u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode]; - u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); - memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) { @@ -792,8 +792,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count) if (count == 0) { - memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); Free(newItems); Free(newQuantities); return TRUE; @@ -823,11 +823,11 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count) } else { - u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); - memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(newItems, items, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(newQuantities, quantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++) { @@ -854,8 +854,8 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count) if (count == 0) { - memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); Free(newItems); Free(newQuantities); return TRUE; From ea345f90f5d2e9cb8a63ad12343aeea49e67340c Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 31 Aug 2022 23:05:06 -0300 Subject: [PATCH 178/271] Picked the correct pointers for correctness' sake --- src/item.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/item.c b/src/item.c index 641c1ce618..0f5746027b 100644 --- a/src/item.c +++ b/src/item.c @@ -792,8 +792,8 @@ bool8 AddPyramidBagItem(u16 itemId, u16 count) if (count == 0) { - memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); - memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*items)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*quantities)); Free(newItems); Free(newQuantities); return TRUE; @@ -854,8 +854,8 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count) if (count == 0) { - memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); - memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); + memcpy(items, newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*items)); + memcpy(quantities, newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*quantities)); Free(newItems); Free(newQuantities); return TRUE; From b9a32a93f59d7c2c50a780bb8e44bcac0c396a97 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 31 Aug 2022 23:35:10 -0300 Subject: [PATCH 179/271] Update src/data/text/move_descriptions.h Co-authored-by: Eduardo Quezada D'Ottone --- src/data/text/move_descriptions.h | 46 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 42b415c024..06c50f36d4 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2983,15 +2983,15 @@ static const u8 sDireClawDescription[] = _( "paralyze, poison or drowse."); static const u8 sPsyshieldBashDescription[] = _( - "Hits a foe with psychic en-\n" - "ergy. May raise Defense."); + "Hits a foe with psychic\n" + "energy. May raise Defense."); static const u8 sPowerShiftDescription[] = _( "The user swaps its offensive\n" "and defensive stats."); static const u8 sStoneAxeDescription[] = _( - "High crit. hit chance. Leaves\n" + "High critical hit ratio. Sets\n" "Splinters that hurt the foe."); static const u8 sSpringtideStormDescription[] = _( @@ -2999,59 +2999,59 @@ static const u8 sSpringtideStormDescription[] = _( "Varies with the user's form."); static const u8 sMysticalPowerDescription[] = _( - "Hurts the foe and increases\n" - "smallest of Atk. and Def."); + "Increases the user's better\n" + "of Atk. and Def. stats."); static const u8 sRagingFuryDescription[] = _( "Viciously spews flames at\n" "a foe, becoming fixated."); static const u8 sWaveCrashDescription[] = _( - "Hurts the foe and the user,\n" - "but increases Action Speed."); + "A water slam. Hurts the user\n" + "and raises its Action Speed."); static const u8 sChloroblastDescription[] = _( - "Hurts the foe and the user,\n" - "and lowers Action Speed."); + "An blast that hurts the user\n" + "and lowers its Action Speed."); static const u8 sMountainGaleDescription[] = _( "The user hurls giant chunks\n" "of ice to damage the foe."); static const u8 sVictoryDanceDescription[] = _( - "Dances to raise offenses,\n" - "defenses, and also damage."); + "Dances to raise damage 50%,\n" + "plus offenses and defenses."); static const u8 sHeadlongRushDescription[] = _( - "Charges the foe with a full-\n" - "body tackle. Lowers Defense."); + "Hits with a full-body tackle,\n" + "lowering the foe's Defense."); static const u8 sBarbBarrageDescription[] = _( "Can poison on impact. Powers\n" "up if the foe has an ailment."); static const u8 sEsperWingDescription[] = _( - "High crit. hit chance. Raises\n" - "the user's Action Speed."); + "High critical hit ratio.\n" + "Ups the user's Action Speed."); static const u8 sBitterMaliceDescription[] = _( - "Hurts a foe, harder if it has\n" + "Hurts a foe harder if it has\n" "an ailment. Can give FrstBte."); static const u8 sShelterDescription[] = _( "The user hardens their skin\n" - "and obscures themself."); + "and obscures itself."); static const u8 sTripleArrowsDescription[] = _( - "Shoots 3 arrows that up crit.\n" - "chance and lower foe's Defs."); + "Ups critical-hit ratio for 3\n" + "turns. Lowers foe Defenses."); static const u8 sInfernalParadeDescription[] = _( - "Hurts a foe, harder if it has\n" + "Hurts a foe harder if it has\n" "an ailment. May leave a burn."); static const u8 sCeaselessEdgeDescription[] = _( - "High crit. hit chance. Leaves\n" + "High critical hit ratio. Sets\n" "Splinters that hurt the foe."); static const u8 sBleakwindStormDescription[] = _( @@ -3071,8 +3071,8 @@ static const u8 sLunarBlessingDescription[] = _( "conceals their presence."); static const u8 sTakeHeartDescription[] = _( - "The user raise spirit to heal\n" - "and strengthen themself."); + "The user lifts its spirits to\n" + "heal and strengthen itself."); const u8 gNotDoneYetDescription[] = _( "This move can't be used. Its\n" From 5d346fd9392eb718dce06875a26538691343f582 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 31 Aug 2022 23:49:43 -0300 Subject: [PATCH 180/271] Updated a couple more sizeofs --- src/battle_pyramid_bag.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 9fab996da8..7a4d981f01 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -1404,20 +1404,20 @@ void TryStoreHeldItemsInPyramidBag(void) { u8 i; struct Pokemon *party = gPlayerParty; - u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + u16 *newItems = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + u8 *newQuantities = Alloc(PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); u16 heldItem; - memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(newItems, gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(newQuantities, gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { heldItem = GetMonData(&party[i], MON_DATA_HELD_ITEM); if (heldItem != ITEM_NONE && !AddBagItem(heldItem, 1)) { // Cant store party held items in pyramid bag because bag is full - memcpy(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(u16)); - memcpy(gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(u8)); + memcpy(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode], newItems, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newItems)); + memcpy(gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode], newQuantities, PYRAMID_BAG_ITEMS_COUNT * sizeof(*newQuantities)); Free(newItems); Free(newQuantities); gSpecialVar_Result = 1; From 60132b29fb125340b04bfdbe5832dbb98a23db98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Augusto=20Vianna?= Date: Thu, 1 Sep 2022 15:21:30 -0300 Subject: [PATCH 181/271] Fixed pickup running when it shouldn't in some cases. --- src/battle_script_commands.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2b65a61a07..c0e7dd2e5e 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13313,10 +13313,7 @@ static void Cmd_pickup(void) species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - if (GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)) - ability = gBaseStats[species].abilities[1]; - else - ability = gBaseStats[species].abilities[0]; + ability = gBaseStats[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; if (ability == ABILITY_PICKUP && species != SPECIES_NONE @@ -13352,10 +13349,7 @@ static void Cmd_pickup(void) if (lvlDivBy10 > 9) lvlDivBy10 = 9; - if (GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)) - ability = gBaseStats[species].abilities[1]; - else - ability = gBaseStats[species].abilities[0]; + ability = gBaseStats[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; if (ability == ABILITY_PICKUP && species != SPECIES_NONE From ad57551db16ae81f2feda9fd96367d821e159b40 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Fri, 2 Sep 2022 12:10:11 +0200 Subject: [PATCH 182/271] removed unnecessary script, cheat start now with national dex, reverted accidental type hin removal, changed indentation --- data/scripts/debug.inc | 24 +++--------------------- include/constants/map_groups.h | 2 -- include/main_menu.h | 2 +- src/battle_main.c | 4 ++-- src/event_object_movement.c | 4 ++-- src/field_control_avatar.c | 12 ++++++------ src/item_use.c | 4 ++-- src/start_menu.c | 26 +++++++------------------- src/trainer_see.c | 4 ++-- 9 files changed, 25 insertions(+), 57 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 4ced7d9716..e174343f22 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -5,11 +5,6 @@ Debug_ShowFieldMessageStringVar4:: releaseall end -Debug_CheckWeekDay_Text: - .string "Aaaaah, yes!\l" - .string "{STR_VAR_1}s are made for dads!\l" - .string "And dad's car!$" - Debug_CheatStart:: lockall setflag FLAG_SYS_POKEMON_GET @@ -27,8 +22,8 @@ Debug_CheatStart:: special SetUnlockedPokedexFlags setflag FLAG_RECEIVED_POKEDEX_FROM_BIRCH setvar VAR_CABLE_CLUB_TUTORIAL_STATE, 1 - @ setflag FLAG_SYS_NATIONAL_DEX - @ special EnableNationalPokedex + setflag FLAG_SYS_NATIONAL_DEX + special EnableNationalPokedex setflag FLAG_RECEIVED_RUNNING_SHOES setflag FLAG_SYS_B_DASH setvar VAR_LITTLEROOT_TOWN_STATE, 4 @ 4: Received Running Shoes @@ -37,25 +32,12 @@ Debug_CheatStart:: setvar VAR_LITTLEROOT_HOUSES_STATE_MAY, 2 @ 2: Met Rival's Mom (and is corresponding gender) setvar VAR_LITTLEROOT_RIVAL_STATE, 4 @ 4: Received Pokedex setflag FLAG_RECEIVED_BIKE - giveitem ITEM_ACRO_BIKE + additem ITEM_ACRO_BIKE setvar VAR_BRINEY_HOUSE_STATE, 1 setvar VAR_ROUTE116_STATE, 2 setflag FLAG_HIDE_ROUTE_116_MR_BRINEY clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY clearflag FLAG_HIDE_BRINEYS_HOUSE_PEEKO - @ additem ITEM_MAX_REPEL, 10 - @ giveitem ITEM_EON_TICKET - @ setflag FLAG_SYS_HAS_EON_TICKET - @ setvar VAR_DISTRIBUTE_EON_TICKET, 0 - @ giveitem ITEM_MYSTIC_TICKET - @ setflag FLAG_ENABLE_SHIP_NAVEL_ROCK - @ setflag FLAG_RECEIVED_MYSTIC_TICKET - @ giveitem ITEM_AURORA_TICKET - @ setflag FLAG_ENABLE_SHIP_BIRTH_ISLAND - @ setflag FLAG_RECEIVED_AURORA_TICKET - @ setflag FLAG_BADGE06_GET @ Badge for flying filed move - @ setweather WEATHER_VOLCANIC_ASH - @ doweather closemessage release end diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 2e6c781943..eaf40a525d 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -593,6 +593,4 @@ #define MAP_GROUPS_COUNT 34 -// static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; - #endif // GUARD_CONSTANTS_MAP_GROUPS_H diff --git a/include/main_menu.h b/include/main_menu.h index 790c9d10ec..81e2d9794b 100644 --- a/include/main_menu.h +++ b/include/main_menu.h @@ -2,7 +2,7 @@ #define GUARD_MAIN_MENU_H void CB2_InitMainMenu(void); -void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f); +void CreateYesNoMenuParameterized(u8 x, u8 y, u16 baseTileNum, u16 baseBlock, u8 yesNoPalNum, u8 winPalNum); void NewGameBirchSpeech_SetDefaultPlayerName(u8); #endif // GUARD_MAIN_MENU_H diff --git a/src/battle_main.c b/src/battle_main.c index 20ebc05c61..052b61163c 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4001,7 +4001,7 @@ static void HandleTurnActionSelectionState(void) } break; case B_ACTION_USE_ITEM: - #if TX_DEBUG_SYSTEM == TRUE + #if TX_DEBUG_SYSTEM == TRUE if (FlagGet(TX_DEBUG_FLAG_NO_BAG_USE)) { RecordedBattle_ClearBattlerAction(gActiveBattler, 1); @@ -4011,7 +4011,7 @@ static void HandleTurnActionSelectionState(void) *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; return; } - #endif + #endif if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER_NO_PYRAMID diff --git a/src/event_object_movement.c b/src/event_object_movement.c index fbcb6ed795..9765febbf4 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4630,10 +4630,10 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; - #if TX_DEBUG_SYSTEM == TRUE +#if TX_DEBUG_SYSTEM == TRUE if (FlagGet(TX_DEBUG_FLAG_NO_COLLISION)) return COLLISION_NONE; - #endif +#endif if (IsCoordOutsideObjectEventMovementRange(objectEvent, x, y)) return COLLISION_OUTSIDE_RANGE; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index e2bc06e98a..2b86bf2cf7 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -131,13 +131,13 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; - #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE +#if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE if ((heldKeys & R_BUTTON) && input->pressedStartButton) { input->input_field_1_2 = TRUE; input->pressedStartButton = FALSE; } - #endif +#endif } int ProcessPlayerFieldInput(struct FieldInput *input) @@ -197,14 +197,14 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; - #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE +#if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE if (input->input_field_1_2) { PlaySE(SE_WIN_OPEN); Debug_ShowMainMenu(); return TRUE; } - #endif +#endif return FALSE; } @@ -686,10 +686,10 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { - #if TX_DEBUG_SYSTEM == TRUE +#if TX_DEBUG_SYSTEM == TRUE if (FlagGet(TX_DEBUG_FLAG_NO_ENCOUNTER)) return FALSE; - #endif +#endif if (sWildEncounterImmunitySteps < 4) { diff --git a/src/item_use.c b/src/item_use.c index 5cca3aee3f..ea2bea0fe7 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -982,14 +982,14 @@ static const u8 sText_CantThrowPokeBall_TwoMons[] = _("Cannot throw a ball!\nThe static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a ball!\nThere's no Pokémon in sight!\p"); void ItemUseInBattle_PokeBall(u8 taskId) { - #if TX_DEBUG_SYSTEM == TRUE +#if TX_DEBUG_SYSTEM == TRUE if (FlagGet(TX_DEBUG_FLAG_NO_CATCHING)) { static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); return; } - #endif +#endif switch (GetBallThrowableState()) { diff --git a/src/start_menu.c b/src/start_menu.c index ce9b726a3e..9f84df16ad 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -174,7 +174,7 @@ static const struct MenuAction sStartMenuItems[] = [MENU_ACTION_REST_FRONTIER] = {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, [MENU_ACTION_RETIRE_FRONTIER] = {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, [MENU_ACTION_PYRAMID_BAG] = {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, - [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, + [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, }; static const struct BgTemplate sBgTemplates_LinkBattleSave[] = @@ -284,17 +284,14 @@ static void BuildStartMenuActions(void) { BuildMultiPartnerRoomStartMenu(); } + else + { #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == TRUE - else - { BuildDebugStartMenu(); - } #else - else - { BuildNormalStartMenu(); - } #endif + } } static void AddStartMenuAction(u8 action) @@ -328,26 +325,17 @@ static void BuildNormalStartMenu(void) static void BuildDebugStartMenu(void) { + AddStartMenuAction(MENU_ACTION_DEBUG); if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) - { AddStartMenuAction(MENU_ACTION_POKEDEX); - } if (FlagGet(FLAG_SYS_POKEMON_GET) == TRUE) - { AddStartMenuAction(MENU_ACTION_POKEMON); - } - AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) - { AddStartMenuAction(MENU_ACTION_POKENAV); - } - AddStartMenuAction(MENU_ACTION_PLAYER); AddStartMenuAction(MENU_ACTION_SAVE); AddStartMenuAction(MENU_ACTION_OPTION); - AddStartMenuAction(MENU_ACTION_DEBUG); } static void BuildSafariZoneStartMenu(void) @@ -772,11 +760,11 @@ static bool8 StartMenuDebugCallback(void) RemoveExtraStartMenuWindows(); HideStartMenuDebug(); // Hide start menu without enabling movement - #if TX_DEBUG_SYSTEM == TRUE +#if TX_DEBUG_SYSTEM == TRUE Debug_ShowMainMenu(); #endif - return TRUE; +return TRUE; } static bool8 StartMenuSafariZoneRetireCallback(void) diff --git a/src/trainer_see.c b/src/trainer_see.c index 596b7456d8..73b4395d40 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -193,10 +193,10 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; - #if TX_DEBUG_SYSTEM == TRUE +#if TX_DEBUG_SYSTEM == TRUE if (FlagGet(TX_DEBUG_FLAG_NO_TRAINER_SEE)) return FALSE; - #endif +#endif gNoOfApproachingTrainers = 0; gApproachingTrainerId = 0; From 367b12801e32e5a8b1dbc258030b98643e755cbf Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Fri, 2 Sep 2022 12:33:42 +0200 Subject: [PATCH 183/271] changed debug_config.h to overworld_config.h, changed no bag use and no catching flags to battle_config.h, removed TX reference (big sad) --- include/constants/battle_config.h | 2 ++ include/constants/debug_config.h | 15 ------------ include/constants/global.h | 2 +- include/constants/overworld_config.h | 14 ++++++++++++ include/debug.h | 2 +- src/battle_main.c | 4 +--- src/debug.c | 34 ++++++++++++++-------------- src/event_object_movement.c | 4 ++-- src/field_control_avatar.c | 8 +++---- src/item_use.c | 4 +--- src/pokemon_storage_system.c | 4 ++-- src/start_menu.c | 4 ++-- src/trainer_see.c | 4 ++-- 13 files changed, 49 insertions(+), 52 deletions(-) delete mode 100644 include/constants/debug_config.h create mode 100644 include/constants/overworld_config.h diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 89134daf91..a5db36e19b 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -138,6 +138,8 @@ #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. #define B_SMART_WILD_AI_FLAG 0 // If not 0, you can set this flag in a script to enable smart wild pokemon +#define B_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. +#define B_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. diff --git a/include/constants/debug_config.h b/include/constants/debug_config.h deleted file mode 100644 index 847288d64e..0000000000 --- a/include/constants/debug_config.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef GUARD_CONSTANTS_DEBUG_CONFIG_H -#define GUARD_CONSTANTS_DEBUG_CONFIG_H - -#define TX_DEBUG_SYSTEM TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. -#define TX_DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). - -// Replace the used flags with others or disable with a 0 -#define TX_DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. -#define TX_DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. -#define TX_DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. -#define TX_DEBUG_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. -#define TX_DEBUG_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. -#define TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. - -#endif // GUARD_CONSTANTS_DEBUG_CONFIG_H diff --git a/include/constants/global.h b/include/constants/global.h index b80bcd402a..07ed190208 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -2,7 +2,7 @@ #define GUARD_CONSTANTS_GLOBAL_H #include "constants/battle_config.h" -#include "constants/debug_config.h" +#include "constants/overworld_config.h" // Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. // In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. diff --git a/include/constants/overworld_config.h b/include/constants/overworld_config.h new file mode 100644 index 0000000000..3e57066f5f --- /dev/null +++ b/include/constants/overworld_config.h @@ -0,0 +1,14 @@ +#ifndef GUARD_CONSTANTS_OVERWORLD_CONFIG_H +#define GUARD_CONSTANTS_OVERWORLD_CONFIG_H + +// Debug options +#define DEBUG_SYSTEM_ENABLE TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. +#define DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). + +// Replace the used flags with others or disable with a 0 +#define DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. +#define DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. +#define DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. +#define DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. + +#endif // GUARD_CONSTANTS_OVERWORLD_CONFIG_H diff --git a/include/debug.h b/include/debug.h index c5bdc224cc..f56efbde34 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,7 +1,7 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H -#include "constants/debug_config.h" +#include "constants/overworld_config.h" void Debug_ShowMainMenu(void); diff --git a/src/battle_main.c b/src/battle_main.c index 052b61163c..39deaca27f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -4001,8 +4001,7 @@ static void HandleTurnActionSelectionState(void) } break; case B_ACTION_USE_ITEM: - #if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(TX_DEBUG_FLAG_NO_BAG_USE)) + if (FlagGet(B_FLAG_NO_BAG_USE)) { RecordedBattle_ClearBattlerAction(gActiveBattler, 1); gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed; @@ -4011,7 +4010,6 @@ static void HandleTurnActionSelectionState(void) *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN; return; } - #endif if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER_NO_PYRAMID diff --git a/src/debug.c b/src/debug.c index 283361b389..2883beb797 100644 --- a/src/debug.c +++ b/src/debug.c @@ -55,7 +55,7 @@ #include "constants/songs.h" #include "constants/species.h" -#if TX_DEBUG_SYSTEM == TRUE +#if DEBUG_SYSTEM_ENABLE == TRUE // ******************************* // Enums enum { // Main @@ -1447,56 +1447,56 @@ static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) } static void DebugAction_Flags_CollisionOnOff(u8 taskId) { - if(FlagGet(TX_DEBUG_FLAG_NO_COLLISION)) + if(FlagGet(DEBUG_FLAG_NO_COLLISION)) { - FlagClear(TX_DEBUG_FLAG_NO_COLLISION); + FlagClear(DEBUG_FLAG_NO_COLLISION); PlaySE(SE_PC_OFF); }else{ - FlagSet(TX_DEBUG_FLAG_NO_COLLISION); + FlagSet(DEBUG_FLAG_NO_COLLISION); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_EncounterOnOff(u8 taskId) { - if(FlagGet(TX_DEBUG_FLAG_NO_ENCOUNTER)) + if(FlagGet(DEBUG_FLAG_NO_ENCOUNTER)) { - FlagClear(TX_DEBUG_FLAG_NO_ENCOUNTER); + FlagClear(DEBUG_FLAG_NO_ENCOUNTER); PlaySE(SE_PC_OFF); }else{ - FlagSet(TX_DEBUG_FLAG_NO_ENCOUNTER); + FlagSet(DEBUG_FLAG_NO_ENCOUNTER); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) { - if(FlagGet(TX_DEBUG_FLAG_NO_TRAINER_SEE)) + if(FlagGet(DEBUG_FLAG_NO_TRAINER_SEE)) { - FlagClear(TX_DEBUG_FLAG_NO_TRAINER_SEE); + FlagClear(DEBUG_FLAG_NO_TRAINER_SEE); PlaySE(SE_PC_OFF); }else{ - FlagSet(TX_DEBUG_FLAG_NO_TRAINER_SEE); + FlagSet(DEBUG_FLAG_NO_TRAINER_SEE); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_BagUseOnOff(u8 taskId) { - if(FlagGet(TX_DEBUG_FLAG_NO_BAG_USE)) + if(FlagGet(B_FLAG_NO_BAG_USE)) { - FlagClear(TX_DEBUG_FLAG_NO_BAG_USE); + FlagClear(B_FLAG_NO_BAG_USE); PlaySE(SE_PC_OFF); }else{ - FlagSet(TX_DEBUG_FLAG_NO_BAG_USE); + FlagSet(B_FLAG_NO_BAG_USE); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_CatchingOnOff(u8 taskId) { - if(FlagGet(TX_DEBUG_FLAG_NO_CATCHING)) + if(FlagGet(B_FLAG_NO_CATCHING)) { - FlagClear(TX_DEBUG_FLAG_NO_CATCHING); + FlagClear(B_FLAG_NO_CATCHING); PlaySE(SE_PC_OFF); }else{ - FlagSet(TX_DEBUG_FLAG_NO_CATCHING); + FlagSet(B_FLAG_NO_CATCHING); PlaySE(SE_PC_LOGIN); } } @@ -2723,7 +2723,7 @@ static void Task_WaitFadeAccessPC(u8 taskId) if (!gPaletteFade.active) { DestroyTask(taskId); - FlagSet(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU); + FlagSet(DEBUG_FLAG_PC_FROM_DEBUG_MENU); EnterPokeStorage(2); } } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 9765febbf4..2c5418da41 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -4630,8 +4630,8 @@ u8 GetCollisionAtCoords(struct ObjectEvent *objectEvent, s16 x, s16 y, u32 dir) { u8 direction = dir; -#if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(TX_DEBUG_FLAG_NO_COLLISION)) +#if DEBUG_SYSTEM_ENABLE == TRUE + if (FlagGet(DEBUG_FLAG_NO_COLLISION)) return COLLISION_NONE; #endif diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 2b86bf2cf7..76503a85a2 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -131,7 +131,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; -#if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE +#if DEBUG_SYSTEM_ENABLE == TRUE && DEBUG_SYSTEM_IN_MENU == FALSE if ((heldKeys & R_BUTTON) && input->pressedStartButton) { input->input_field_1_2 = TRUE; @@ -197,7 +197,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE) return TRUE; -#if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == FALSE +#if DEBUG_SYSTEM_ENABLE == TRUE && DEBUG_SYSTEM_IN_MENU == FALSE if (input->input_field_1_2) { PlaySE(SE_WIN_OPEN); @@ -686,8 +686,8 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { -#if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(TX_DEBUG_FLAG_NO_ENCOUNTER)) +#if DEBUG_SYSTEM_ENABLE == TRUE + if (FlagGet(DEBUG_FLAG_NO_ENCOUNTER)) return FALSE; #endif diff --git a/src/item_use.c b/src/item_use.c index ea2bea0fe7..a0b4233fff 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -982,14 +982,12 @@ static const u8 sText_CantThrowPokeBall_TwoMons[] = _("Cannot throw a ball!\nThe static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a ball!\nThere's no Pokémon in sight!\p"); void ItemUseInBattle_PokeBall(u8 taskId) { -#if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(TX_DEBUG_FLAG_NO_CATCHING)) + if (FlagGet(B_FLAG_NO_CATCHING)) { static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); return; } -#endif switch (GetBallThrowableState()) { diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 437458d75b..d3fe3caa29 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1669,7 +1669,7 @@ static void FieldTask_ReturnToPcMenu(void) MainCallback vblankCb = gMain.vblankCallback; SetVBlankCallback(NULL); - if (!FlagGet(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU)) + if (!FlagGet(DEBUG_FLAG_PC_FROM_DEBUG_MENU)) { taskId = CreateTask(Task_PCMainMenu, 80); gTasks[taskId].tState = 0; @@ -1678,7 +1678,7 @@ static void FieldTask_ReturnToPcMenu(void) } else { - FlagClear(TX_DEBUG_FLAG_PC_FROM_DEBUG_MENU); + FlagClear(DEBUG_FLAG_PC_FROM_DEBUG_MENU); ScriptContext_Enable(); } SetVBlankCallback(vblankCb); diff --git a/src/start_menu.c b/src/start_menu.c index 9f84df16ad..0f7c0cb697 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -286,7 +286,7 @@ static void BuildStartMenuActions(void) } else { - #if TX_DEBUG_SYSTEM == TRUE && TX_DEBUG_SYSTEM_IN_MENU == TRUE + #if DEBUG_SYSTEM_ENABLE == TRUE && DEBUG_SYSTEM_IN_MENU == TRUE BuildDebugStartMenu(); #else BuildNormalStartMenu(); @@ -760,7 +760,7 @@ static bool8 StartMenuDebugCallback(void) RemoveExtraStartMenuWindows(); HideStartMenuDebug(); // Hide start menu without enabling movement -#if TX_DEBUG_SYSTEM == TRUE +#if DEBUG_SYSTEM_ENABLE == TRUE Debug_ShowMainMenu(); #endif diff --git a/src/trainer_see.c b/src/trainer_see.c index 73b4395d40..d44e5e46fb 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -193,8 +193,8 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; -#if TX_DEBUG_SYSTEM == TRUE - if (FlagGet(TX_DEBUG_FLAG_NO_TRAINER_SEE)) +#if DEBUG_SYSTEM_ENABLE == TRUE + if (FlagGet(DEBUG_FLAG_NO_TRAINER_SEE)) return FALSE; #endif From b4b3e84cbdeb790a982ed97e48a2a7e5f9be4f73 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Fri, 2 Sep 2022 18:39:38 +0200 Subject: [PATCH 184/271] removed default flags and added ingame warning if a function that requires them is used --- data/scripts/debug.inc | 14 ++++++++++++- include/constants/battle_config.h | 4 ++-- include/constants/flags.h | 12 +++++------ include/constants/overworld_config.h | 8 +++---- src/debug.c | 31 ++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 13 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index e174343f22..fe86197c8c 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -38,10 +38,22 @@ Debug_CheatStart:: setflag FLAG_HIDE_ROUTE_116_MR_BRINEY clearflag FLAG_HIDE_BRINEYS_HOUSE_MR_BRINEY clearflag FLAG_HIDE_BRINEYS_HOUSE_PEEKO - closemessage release end +Debug_FlagsNotSetMessage:: + lockall + message Debug_FlagsNotSetMessage_Text + waitmessage + waitbuttonpress + releaseall + end + +Debug_FlagsNotSetMessage_Text: + .string "Feature unavailable!\n" + .string "Please define a usable flag in:\l" + .string "'include/constants/debug{UNDERSCORE}config.h'!$" + Debug_Script_1:: end diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index a5db36e19b..ad7775b673 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -138,8 +138,8 @@ #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. #define B_SMART_WILD_AI_FLAG 0 // If not 0, you can set this flag in a script to enable smart wild pokemon -#define B_FLAG_NO_BAG_USE FLAG_UNUSED_0x023 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. -#define B_FLAG_NO_CATCHING FLAG_UNUSED_0x024 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. +#define B_FLAG_NO_BAG_USE 0 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. +#define B_FLAG_NO_CATCHING 0 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. diff --git a/include/constants/flags.h b/include/constants/flags.h index ac8de43dc4..8fbc246300 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -41,12 +41,12 @@ #define FLAG_TEMP_1F (TEMP_FLAGS_START + 0x1F) #define TEMP_FLAGS_END FLAG_TEMP_1F -#define FLAG_UNUSED_0x020 0x20 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" -#define FLAG_UNUSED_0x021 0x21 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" -#define FLAG_UNUSED_0x022 0x22 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" -#define FLAG_UNUSED_0x023 0x23 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" -#define FLAG_UNUSED_0x024 0x24 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" -#define FLAG_UNUSED_0x025 0x25 // Unused Flag //Used for DEBUG functions, can be changed in "constants/battle_config.h" +#define FLAG_UNUSED_0x020 0x20 // Unused Flag +#define FLAG_UNUSED_0x021 0x21 // Unused Flag +#define FLAG_UNUSED_0x022 0x22 // Unused Flag +#define FLAG_UNUSED_0x023 0x23 // Unused Flag +#define FLAG_UNUSED_0x024 0x24 // Unused Flag +#define FLAG_UNUSED_0x025 0x25 // Unused Flag #define FLAG_UNUSED_0x026 0x26 // Unused Flag #define FLAG_UNUSED_0x027 0x27 // Unused Flag #define FLAG_UNUSED_0x028 0x28 // Unused Flag diff --git a/include/constants/overworld_config.h b/include/constants/overworld_config.h index 3e57066f5f..6d094d60f5 100644 --- a/include/constants/overworld_config.h +++ b/include/constants/overworld_config.h @@ -6,9 +6,9 @@ #define DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). // Replace the used flags with others or disable with a 0 -#define DEBUG_FLAG_NO_COLLISION FLAG_UNUSED_0x020 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. -#define DEBUG_FLAG_NO_ENCOUNTER FLAG_UNUSED_0x021 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. -#define DEBUG_FLAG_NO_TRAINER_SEE FLAG_UNUSED_0x022 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. -#define DEBUG_FLAG_PC_FROM_DEBUG_MENU FLAG_UNUSED_0x025 // If this flag is set, the debug function in debug menu to access the player PC works. +#define DEBUG_FLAG_NO_COLLISION 0 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. +#define DEBUG_FLAG_NO_ENCOUNTER 0 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. +#define DEBUG_FLAG_NO_TRAINER_SEE 0 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. +#define DEBUG_FLAG_PC_FROM_DEBUG_MENU 0 // If this flag is set, the debug function in debug menu to access the player PC works. #endif // GUARD_CONSTANTS_OVERWORLD_CONFIG_H diff --git a/src/debug.c b/src/debug.c index 2883beb797..81e30cff01 100644 --- a/src/debug.c +++ b/src/debug.c @@ -271,6 +271,7 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId); static void DebugTask_HandleMenuInput(u8 taskId, void (*HandleInput)(u8)); static void DebugAction_OpenSubMenu(u8 taskId, struct ListMenuTemplate LMtemplate); +extern u8 Debug_FlagsNotSetMessage[]; extern u8 Debug_Script_1[]; extern u8 Debug_Script_2[]; extern u8 Debug_Script_3[]; @@ -1447,6 +1448,11 @@ static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) } static void DebugAction_Flags_CollisionOnOff(u8 taskId) { +#if DEBUG_FLAG_NO_COLLISION == 0 + Debug_DestroyMenu(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsNotSetMessage); +#else if(FlagGet(DEBUG_FLAG_NO_COLLISION)) { FlagClear(DEBUG_FLAG_NO_COLLISION); @@ -1455,9 +1461,15 @@ static void DebugAction_Flags_CollisionOnOff(u8 taskId) FlagSet(DEBUG_FLAG_NO_COLLISION); PlaySE(SE_PC_LOGIN); } +#endif } static void DebugAction_Flags_EncounterOnOff(u8 taskId) { +#if DEBUG_FLAG_NO_ENCOUNTER == 0 + Debug_DestroyMenu(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsNotSetMessage); +#else if(FlagGet(DEBUG_FLAG_NO_ENCOUNTER)) { FlagClear(DEBUG_FLAG_NO_ENCOUNTER); @@ -1466,9 +1478,15 @@ static void DebugAction_Flags_EncounterOnOff(u8 taskId) FlagSet(DEBUG_FLAG_NO_ENCOUNTER); PlaySE(SE_PC_LOGIN); } +#endif } static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) { +#if DEBUG_FLAG_NO_TRAINER_SEE == 0 + Debug_DestroyMenu(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsNotSetMessage); +#else if(FlagGet(DEBUG_FLAG_NO_TRAINER_SEE)) { FlagClear(DEBUG_FLAG_NO_TRAINER_SEE); @@ -1477,9 +1495,15 @@ static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) FlagSet(DEBUG_FLAG_NO_TRAINER_SEE); PlaySE(SE_PC_LOGIN); } +#endif } static void DebugAction_Flags_BagUseOnOff(u8 taskId) { +#if B_FLAG_NO_BAG_USE == 0 + Debug_DestroyMenu(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsNotSetMessage); +#else if(FlagGet(B_FLAG_NO_BAG_USE)) { FlagClear(B_FLAG_NO_BAG_USE); @@ -1488,9 +1512,15 @@ static void DebugAction_Flags_BagUseOnOff(u8 taskId) FlagSet(B_FLAG_NO_BAG_USE); PlaySE(SE_PC_LOGIN); } +#endif } static void DebugAction_Flags_CatchingOnOff(u8 taskId) { +#if B_FLAG_NO_CATCHING_USE == 0 + Debug_DestroyMenu(taskId); + LockPlayerFieldControls(); + ScriptContext_SetupScript(Debug_FlagsNotSetMessage); +#else if(FlagGet(B_FLAG_NO_CATCHING)) { FlagClear(B_FLAG_NO_CATCHING); @@ -1499,6 +1529,7 @@ static void DebugAction_Flags_CatchingOnOff(u8 taskId) FlagSet(B_FLAG_NO_CATCHING); PlaySE(SE_PC_LOGIN); } +#endif } // ******************************* From 13cc640b7841fb0e71ee1225aa64db4114c4ecfd Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Fri, 2 Sep 2022 18:53:51 +0200 Subject: [PATCH 185/271] whitspace changes, removed wrong comment --- src/start_menu.c | 4 ++-- tools/mapjson/mapjson.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/start_menu.c b/src/start_menu.c index 0f7c0cb697..a0cff087cd 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -174,7 +174,7 @@ static const struct MenuAction sStartMenuItems[] = [MENU_ACTION_REST_FRONTIER] = {gText_MenuRest, {.u8_void = StartMenuSaveCallback}}, [MENU_ACTION_RETIRE_FRONTIER] = {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}}, [MENU_ACTION_PYRAMID_BAG] = {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}, - [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, + [MENU_ACTION_DEBUG] = {gText_MenuDebug, {.u8_void = StartMenuDebugCallback}}, }; static const struct BgTemplate sBgTemplates_LinkBattleSave[] = @@ -762,7 +762,7 @@ static bool8 StartMenuDebugCallback(void) #if DEBUG_SYSTEM_ENABLE == TRUE Debug_ShowMainMenu(); - #endif +#endif return TRUE; } diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index c5f86bdf0e..8de9ff8d01 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -398,8 +398,8 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { for (auto &group : groups_data["group_order"].array_items()) { text << "// " << group.string_value() << "\n"; vector map_ids; - - size_t max_length = 0; //DEBUG + size_t max_length = 0; + int map_count = 0; //DEBUG for (auto &map_name : groups_data[group.string_value()].array_items()) { From c7fc2e13f771cb30a0eb579d1f77e76a85d3be5d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 2 Sep 2022 16:54:58 -0400 Subject: [PATCH 186/271] Renamed TM flags to keep consistency with the rest of the repo --- .../AbandonedShip_HiddenFloorRooms/map.json | 2 +- data/maps/AbandonedShip_Room_B1F/map.json | 2 +- data/maps/MeteorFalls_1F_1R/map.json | 2 +- data/maps/MeteorFalls_B1F_2R/map.json | 2 +- data/maps/MtPyre_6F/map.json | 2 +- data/maps/MtPyre_Exterior/map.json | 2 +- data/maps/Route111/map.json | 2 +- data/maps/Route113/map.json | 2 +- data/maps/Route115/map.json | 2 +- data/maps/SafariZone_Northwest/map.json | 2 +- data/maps/ScorchedSlab/map.json | 2 +- data/maps/SeafloorCavern_Room9/map.json | 2 +- data/maps/ShoalCave_LowTideIceRoom/map.json | 2 +- data/maps/VictoryRoad_B1F/map.json | 2 +- include/constants/flags.h | 28 +++++++++---------- 15 files changed, 28 insertions(+), 28 deletions(-) diff --git a/data/maps/AbandonedShip_HiddenFloorRooms/map.json b/data/maps/AbandonedShip_HiddenFloorRooms/map.json index b81c33c843..e9442f22e2 100644 --- a/data/maps/AbandonedShip_HiddenFloorRooms/map.json +++ b/data/maps/AbandonedShip_HiddenFloorRooms/map.json @@ -51,7 +51,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "AbandonedShip_HiddenFloorRooms_EventScript_ItemTM18", - "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM_18" + "flag": "FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM18" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/data/maps/AbandonedShip_Room_B1F/map.json b/data/maps/AbandonedShip_Room_B1F/map.json index f5d14ac595..537f0ec645 100644 --- a/data/maps/AbandonedShip_Room_B1F/map.json +++ b/data/maps/AbandonedShip_Room_B1F/map.json @@ -25,7 +25,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "AbandonedShip_Room_B1F_EventScript_ItemTM13", - "flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM_13" + "flag": "FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM13" } ], "warp_events": [ diff --git a/data/maps/MeteorFalls_1F_1R/map.json b/data/maps/MeteorFalls_1F_1R/map.json index f177410e27..145289ce79 100644 --- a/data/maps/MeteorFalls_1F_1R/map.json +++ b/data/maps/MeteorFalls_1F_1R/map.json @@ -25,7 +25,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "MeteorFalls_1F_1R_EventScript_ItemTM23", - "flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_TM_23" + "flag": "FLAG_ITEM_METEOR_FALLS_1F_1R_TM23" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/data/maps/MeteorFalls_B1F_2R/map.json b/data/maps/MeteorFalls_B1F_2R/map.json index 57276d86db..7fc43762f5 100644 --- a/data/maps/MeteorFalls_B1F_2R/map.json +++ b/data/maps/MeteorFalls_B1F_2R/map.json @@ -25,7 +25,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "MeteorFalls_B1F_2R_EventScript_ItemTM02", - "flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM_02" + "flag": "FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02" } ], "warp_events": [ diff --git a/data/maps/MtPyre_6F/map.json b/data/maps/MtPyre_6F/map.json index dc2e7f9b00..88c091f3e3 100644 --- a/data/maps/MtPyre_6F/map.json +++ b/data/maps/MtPyre_6F/map.json @@ -38,7 +38,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "MtPyre_6F_EventScript_ItemTM30", - "flag": "FLAG_ITEM_MT_PYRE_6F_TM_30" + "flag": "FLAG_ITEM_MT_PYRE_6F_TM30" }, { "graphics_id": "OBJ_EVENT_GFX_PSYCHIC_M", diff --git a/data/maps/MtPyre_Exterior/map.json b/data/maps/MtPyre_Exterior/map.json index 58c865305f..2df79262c2 100644 --- a/data/maps/MtPyre_Exterior/map.json +++ b/data/maps/MtPyre_Exterior/map.json @@ -38,7 +38,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "MtPyre_Exterior_EventScript_ItemTM48", - "flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_TM_48" + "flag": "FLAG_ITEM_MT_PYRE_EXTERIOR_TM48" } ], "warp_events": [ diff --git a/data/maps/Route111/map.json b/data/maps/Route111/map.json index 4621591e43..566e7c9629 100644 --- a/data/maps/Route111/map.json +++ b/data/maps/Route111/map.json @@ -262,7 +262,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "Route111_EventScript_ItemTM37", - "flag": "FLAG_ITEM_ROUTE_111_TM_37" + "flag": "FLAG_ITEM_ROUTE_111_TM37" }, { "graphics_id": "OBJ_EVENT_GFX_BERRY_TREE", diff --git a/data/maps/Route113/map.json b/data/maps/Route113/map.json index 422b88e6ef..783406346e 100644 --- a/data/maps/Route113/map.json +++ b/data/maps/Route113/map.json @@ -451,7 +451,7 @@ "y": 5, "elevation": 3, "item": "ITEM_TM32", - "flag": "FLAG_HIDDEN_ITEM_ROUTE_113_TM_32" + "flag": "FLAG_HIDDEN_ITEM_ROUTE_113_TM32" }, { "type": "hidden_item", diff --git a/data/maps/Route115/map.json b/data/maps/Route115/map.json index bbac132f52..a5e2b10f9e 100644 --- a/data/maps/Route115/map.json +++ b/data/maps/Route115/map.json @@ -166,7 +166,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "Route115_EventScript_ItemTM01", - "flag": "FLAG_ITEM_ROUTE_115_TM_01" + "flag": "FLAG_ITEM_ROUTE_115_TM01" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/data/maps/SafariZone_Northwest/map.json b/data/maps/SafariZone_Northwest/map.json index 1e27def2cd..20fffd0498 100644 --- a/data/maps/SafariZone_Northwest/map.json +++ b/data/maps/SafariZone_Northwest/map.json @@ -49,7 +49,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SafariZone_Northwest_EventScript_ItemTM22", - "flag": "FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM_22" + "flag": "FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM22" } ], "warp_events": [], diff --git a/data/maps/ScorchedSlab/map.json b/data/maps/ScorchedSlab/map.json index e90f1f5c1f..cb97894903 100644 --- a/data/maps/ScorchedSlab/map.json +++ b/data/maps/ScorchedSlab/map.json @@ -25,7 +25,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "ScorchedSlab_EventScript_ItemTM11", - "flag": "FLAG_ITEM_SCORCHED_SLAB_TM_11" + "flag": "FLAG_ITEM_SCORCHED_SLAB_TM11" } ], "warp_events": [ diff --git a/data/maps/SeafloorCavern_Room9/map.json b/data/maps/SeafloorCavern_Room9/map.json index 0557b0c3eb..7942b3d1d4 100644 --- a/data/maps/SeafloorCavern_Room9/map.json +++ b/data/maps/SeafloorCavern_Room9/map.json @@ -90,7 +90,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "SeafloorCavern_Room9_EventScript_ItemTM26", - "flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM_26" + "flag": "FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM26" }, { "graphics_id": "OBJ_EVENT_GFX_KYOGRE_ASLEEP", diff --git a/data/maps/ShoalCave_LowTideIceRoom/map.json b/data/maps/ShoalCave_LowTideIceRoom/map.json index ea4f0cedf4..3195d408b3 100644 --- a/data/maps/ShoalCave_LowTideIceRoom/map.json +++ b/data/maps/ShoalCave_LowTideIceRoom/map.json @@ -25,7 +25,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "ShoalCave_LowTideIceRoom_EventScript_ItemTM07", - "flag": "FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM_07" + "flag": "FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM07" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/data/maps/VictoryRoad_B1F/map.json b/data/maps/VictoryRoad_B1F/map.json index 6e290ce6de..68b013ef46 100644 --- a/data/maps/VictoryRoad_B1F/map.json +++ b/data/maps/VictoryRoad_B1F/map.json @@ -246,7 +246,7 @@ "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", "script": "VictoryRoad_B1F_EventScript_ItemTM29", - "flag": "FLAG_ITEM_VICTORY_ROAD_B1F_TM_29" + "flag": "FLAG_ITEM_VICTORY_ROAD_B1F_TM29" }, { "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", diff --git a/include/constants/flags.h b/include/constants/flags.h index 8fbc246300..4e108e1fe9 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -568,7 +568,7 @@ #define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x1B) #define FLAG_HIDDEN_ITEM_FALLARBOR_TOWN_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x1C) #define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x1D) -#define FLAG_HIDDEN_ITEM_ROUTE_113_TM_32 (FLAG_HIDDEN_ITEMS_START + 0x1E) +#define FLAG_HIDDEN_ITEM_ROUTE_113_TM32 (FLAG_HIDDEN_ITEMS_START + 0x1E) #define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_1_KEY (FLAG_HIDDEN_ITEMS_START + 0x1F) #define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_2_KEY (FLAG_HIDDEN_ITEMS_START + 0x20) #define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_4_KEY (FLAG_HIDDEN_ITEMS_START + 0x21) @@ -1053,7 +1053,7 @@ #define FLAG_ITEM_ROUTE_109_PP_UP 0x3ED #define FLAG_ITEM_ROUTE_109_RARE_CANDY 0x3EE #define FLAG_ITEM_ROUTE_110_DIRE_HIT 0x3EF -#define FLAG_ITEM_ROUTE_111_TM_37 0x3F0 +#define FLAG_ITEM_ROUTE_111_TM37 0x3F0 #define FLAG_ITEM_ROUTE_111_STARDUST 0x3F1 #define FLAG_ITEM_ROUTE_111_HP_UP 0x3F2 #define FLAG_ITEM_ROUTE_112_NUGGET 0x3F3 @@ -1062,7 +1062,7 @@ #define FLAG_ITEM_ROUTE_114_RARE_CANDY 0x3F6 #define FLAG_ITEM_ROUTE_114_PROTEIN 0x3F7 #define FLAG_ITEM_ROUTE_115_SUPER_POTION 0x3F8 -#define FLAG_ITEM_ROUTE_115_TM_01 0x3F9 +#define FLAG_ITEM_ROUTE_115_TM01 0x3F9 #define FLAG_ITEM_ROUTE_115_IRON 0x3FA #define FLAG_ITEM_ROUTE_116_ETHER 0x3FB #define FLAG_ITEM_ROUTE_116_REPEL 0x3FC @@ -1089,7 +1089,7 @@ #define FLAG_ITEM_RUSTBORO_CITY_X_DEFEND 0x411 #define FLAG_ITEM_LILYCOVE_CITY_MAX_REPEL 0x412 #define FLAG_ITEM_MOSSDEEP_CITY_NET_BALL 0x413 -#define FLAG_ITEM_METEOR_FALLS_1F_1R_TM_23 0x414 +#define FLAG_ITEM_METEOR_FALLS_1F_1R_TM23 0x414 #define FLAG_ITEM_METEOR_FALLS_1F_1R_FULL_HEAL 0x415 #define FLAG_ITEM_METEOR_FALLS_1F_1R_MOON_STONE 0x416 #define FLAG_ITEM_METEOR_FALLS_1F_1R_PP_UP 0x417 @@ -1119,35 +1119,35 @@ #define FLAG_ITEM_AQUA_HIDEOUT_B1F_MAX_ELIXIR 0x42F #define FLAG_ITEM_AQUA_HIDEOUT_B2F_NEST_BALL 0x430 #define FLAG_ITEM_MT_PYRE_EXTERIOR_MAX_POTION 0x431 -#define FLAG_ITEM_MT_PYRE_EXTERIOR_TM_48 0x432 +#define FLAG_ITEM_MT_PYRE_EXTERIOR_TM48 0x432 #define FLAG_ITEM_NEW_MAUVILLE_ULTRA_BALL 0x433 #define FLAG_ITEM_NEW_MAUVILLE_ESCAPE_ROPE 0x434 #define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_6_LUXURY_BALL 0x435 #define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_4_SCANNER 0x436 -#define FLAG_ITEM_SCORCHED_SLAB_TM_11 0x437 -#define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM_02 0x438 +#define FLAG_ITEM_SCORCHED_SLAB_TM11 0x437 +#define FLAG_ITEM_METEOR_FALLS_B1F_2R_TM02 0x438 #define FLAG_ITEM_SHOAL_CAVE_ENTRANCE_BIG_PEARL 0x439 #define FLAG_ITEM_SHOAL_CAVE_INNER_ROOM_RARE_CANDY 0x43A #define FLAG_ITEM_SHOAL_CAVE_STAIRS_ROOM_ICE_HEAL 0x43B #define FLAG_ITEM_VICTORY_ROAD_1F_MAX_ELIXIR 0x43C #define FLAG_ITEM_VICTORY_ROAD_1F_PP_UP 0x43D -#define FLAG_ITEM_VICTORY_ROAD_B1F_TM_29 0x43E +#define FLAG_ITEM_VICTORY_ROAD_B1F_TM29 0x43E #define FLAG_ITEM_VICTORY_ROAD_B1F_FULL_RESTORE 0x43F #define FLAG_ITEM_VICTORY_ROAD_B2F_FULL_HEAL 0x440 -#define FLAG_ITEM_MT_PYRE_6F_TM_30 0x441 -#define FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM_26 0x442 +#define FLAG_ITEM_MT_PYRE_6F_TM30 0x441 +#define FLAG_ITEM_SEAFLOOR_CAVERN_ROOM_9_TM26 0x442 #define FLAG_ITEM_FIERY_PATH_TM06 0x443 #define FLAG_ITEM_ROUTE_124_RED_SHARD 0x444 #define FLAG_ITEM_ROUTE_124_BLUE_SHARD 0x445 -#define FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM_22 0x446 +#define FLAG_ITEM_SAFARI_ZONE_NORTH_WEST_TM22 0x446 #define FLAG_ITEM_ABANDONED_SHIP_ROOMS_1F_HARBOR_MAIL 0x447 #define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_ESCAPE_ROPE 0x448 #define FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_B1F_DIVE_BALL 0x449 -#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM_13 0x44A +#define FLAG_ITEM_ABANDONED_SHIP_ROOMS_B1F_TM13 0x44A #define FLAG_ITEM_ABANDONED_SHIP_ROOMS_2_1F_REVIVE 0x44B #define FLAG_ITEM_ABANDONED_SHIP_CAPTAINS_OFFICE_STORAGE_KEY 0x44C #define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_3_WATER_STONE 0x44D -#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM_18 0x44E +#define FLAG_ITEM_ABANDONED_SHIP_HIDDEN_FLOOR_ROOM_1_TM18 0x44E #define FLAG_ITEM_ROUTE_121_CARBOS 0x44F #define FLAG_ITEM_ROUTE_123_ULTRA_BALL 0x450 #define FLAG_ITEM_ROUTE_126_GREEN_SHARD 0x451 @@ -1157,7 +1157,7 @@ #define FLAG_ITEM_ROUTE_123_ELIXIR 0x455 #define FLAG_ITEM_NEW_MAUVILLE_THUNDER_STONE 0x456 #define FLAG_ITEM_FIERY_PATH_FIRE_STONE 0x457 -#define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM_07 0x458 +#define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_TM07 0x458 #define FLAG_ITEM_SHOAL_CAVE_ICE_ROOM_NEVER_MELT_ICE 0x459 #define FLAG_ITEM_ROUTE_103_GUARD_SPEC 0x45A #define FLAG_ITEM_ROUTE_104_X_ACCURACY 0x45B From 03a98c72bc435bf92e535de26f21ce0c06df6dd9 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 2 Sep 2022 19:29:35 -0400 Subject: [PATCH 187/271] Sync fieldmap --- include/fieldmap.h | 2 +- include/global.fieldmap.h | 10 +++++----- src/fieldmap.c | 13 +++++++------ src/item_use.c | 2 +- src/scrcmd.c | 8 ++++---- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/include/fieldmap.h b/include/fieldmap.h index 7caadfcaaa..2f7eaba66b 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -47,7 +47,7 @@ void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout); void CopyPrimaryTilesetToVram(const struct MapLayout *); void CopySecondaryTilesetToVram(const struct MapLayout *); struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection); -struct MapConnection *GetConnectionAtCoords(s16 x, s16 y); +struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y); void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable); // field_region_map.c diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 974fa3382b..2be44a5f3b 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -4,9 +4,9 @@ // Masks/shifts for blocks in the map grid // Map grid blocks consist of a 10 bit metatile id, a 2 bit collision value, and a 4 bit elevation value // This is the data stored in each data/layouts/*/map.bin file -#define MAPGRID_METATILE_ID_MASK 0x03FF // Bits 1-10 -#define MAPGRID_COLLISION_MASK 0x0C00 // Bits 11-12 -#define MAPGRID_ELEVATION_MASK 0xF000 // Bits 13-16 +#define MAPGRID_METATILE_ID_MASK 0x03FF // Bits 0-9 +#define MAPGRID_COLLISION_MASK 0x0C00 // Bits 10-11 +#define MAPGRID_ELEVATION_MASK 0xF000 // Bits 12-15 #define MAPGRID_COLLISION_SHIFT 10 #define MAPGRID_ELEVATION_SHIFT 12 @@ -16,8 +16,8 @@ // Masks/shifts for metatile attributes // Metatile attributes consist of an 8 bit behavior value, 4 unused bits, and a 4 bit layer type value // This is the data stored in each data/tilesets/*/*/metatile_attributes.bin file -#define METATILE_ATTR_BEHAVIOR_MASK 0x00FF // Bits 1-8 -#define METATILE_ATTR_LAYER_MASK 0xF000 // Bits 13-16 +#define METATILE_ATTR_BEHAVIOR_MASK 0x00FF // Bits 0-7 +#define METATILE_ATTR_LAYER_MASK 0xF000 // Bits 12-15 #define METATILE_ATTR_LAYER_SHIFT 12 enum { diff --git a/src/fieldmap.c b/src/fieldmap.c index 2b981dc6e5..8dfa23bf34 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -753,7 +753,7 @@ static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y) return FALSE; } -struct MapConnection *GetConnectionAtCoords(s16 x, s16 y) +struct MapConnection *GetMapConnectionAtPos(s16 x, s16 y) { int count; struct MapConnection *connection; @@ -860,12 +860,13 @@ static void CopyTilesetToVramUsingHeap(struct Tileset const *tileset, u16 numTil } } -static void FieldmapPaletteDummy(u16 offset, u16 size) +// Below two are dummied functions from FRLG, used to tint the overworld palettes for the Quest Log +static void ApplyGlobalTintToPaletteEntries(u16 offset, u16 size) { } -static void FieldmapUnkDummy(void) +static void ApplyGlobalTintToPaletteSlot(void) { } @@ -880,17 +881,17 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size) { LoadPalette(&black, destOffset, 2); LoadPalette(((u16 *)tileset->palettes) + 1, destOffset + 1, size - 2); - FieldmapPaletteDummy(destOffset + 1, (size - 2) >> 1); + ApplyGlobalTintToPaletteEntries(destOffset + 1, (size - 2) >> 1); } else if (tileset->isSecondary == TRUE) { LoadPalette(((u16 *)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size); - FieldmapPaletteDummy(destOffset, size >> 1); + ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); } else { LoadCompressedPalette((u32 *)tileset->palettes, destOffset, size); - FieldmapPaletteDummy(destOffset, size >> 1); + ApplyGlobalTintToPaletteEntries(destOffset, size >> 1); } } } diff --git a/src/item_use.c b/src/item_use.c index e5c78d0910..41e8884968 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -456,7 +456,7 @@ static void CheckForHiddenItemsInMapConnection(u8 taskId) || var2 > y || y >= height) { - struct MapConnection *conn = GetConnectionAtCoords(x, y); + struct MapConnection *conn = GetMapConnectionAtPos(x, y); if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE) SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY); } diff --git a/src/scrcmd.c b/src/scrcmd.c index 6ca02019d8..3d67c69e51 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2038,15 +2038,15 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - u16 tileId = VarGet(ScriptReadHalfword(ctx)); - u16 isImpassable = VarGet(ScriptReadHalfword(ctx)); + u16 metatileId = VarGet(ScriptReadHalfword(ctx)); + bool16 isImpassable = VarGet(ScriptReadHalfword(ctx)); x += MAP_OFFSET; y += MAP_OFFSET; if (!isImpassable) - MapGridSetMetatileIdAt(x, y, tileId); + MapGridSetMetatileIdAt(x, y, metatileId); else - MapGridSetMetatileIdAt(x, y, tileId | MAPGRID_COLLISION_MASK); + MapGridSetMetatileIdAt(x, y, metatileId | MAPGRID_COLLISION_MASK); return FALSE; } From 7f1c4720a246702c97ef04f7191648ccac587232 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 2 Sep 2022 19:36:46 -0400 Subject: [PATCH 188/271] Update arguments for ApplyGlobalTintToPaletteSlot --- src/fieldmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fieldmap.c b/src/fieldmap.c index 8dfa23bf34..149084d35e 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -866,7 +866,7 @@ static void ApplyGlobalTintToPaletteEntries(u16 offset, u16 size) } -static void ApplyGlobalTintToPaletteSlot(void) +static void ApplyGlobalTintToPaletteSlot(u8 slot, u8 count) { } From 8b7230c3c456f23cc87b3581f641688e41e82987 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 2 Sep 2022 19:41:28 -0400 Subject: [PATCH 189/271] CpuFastFill -> CpuFastFill16 in fieldmap --- src/fieldmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fieldmap.c b/src/fieldmap.c index 149084d35e..bcd2d1019a 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -87,13 +87,13 @@ void InitMapFromSavedGame(void) void InitBattlePyramidMap(bool8 setPlayerPosition) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); + CpuFastFill16(MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); GenerateBattlePyramidFloorLayout(sBackupMapData, setPlayerPosition); } void InitTrainerHillMap(void) { - CpuFastFill(MAPGRID_UNDEFINED << 16 | MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); + CpuFastFill16(MAPGRID_UNDEFINED, sBackupMapData, sizeof(sBackupMapData)); GenerateTrainerHillFloorLayout(sBackupMapData); } From 97021baec6f9f112b27ce1356b7e3ca0873327ba Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 2 Sep 2022 21:53:44 -0400 Subject: [PATCH 190/271] Drop usage of global directive --- src/crt0.s | 6 ++---- src/rom_header.s | 21 +++++++-------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/crt0.s b/src/crt0.s index 523061f52d..5808147220 100644 --- a/src/crt0.s +++ b/src/crt0.s @@ -5,8 +5,7 @@ .arm .align 2, 0 - .global Init -Init: +Init:: mov r0, #PSR_IRQ_MODE msr cpsr_cf, r0 ldr sp, sp_irq @@ -33,8 +32,7 @@ sp_irq: .word IWRAM_END - 0x60 .arm .align 2, 0 - .global IntrMain -IntrMain: +IntrMain:: mov r3, #REG_BASE add r3, r3, #OFFSET_REG_IE ldr r2, [r3] diff --git a/src/rom_header.s b/src/rom_header.s index c5fa5ddf40..4f80d8f63f 100644 --- a/src/rom_header.s +++ b/src/rom_header.s @@ -1,19 +1,16 @@ @ Note: ROM header data is empty space here. @ It's populated by gbafix using data provided in the Makefile. - .global Start -Start: +Start:: b Init - .global RomHeaderNintendoLogo -RomHeaderNintendoLogo: +RomHeaderNintendoLogo:: .space 156 RomHeaderGameTitle: .space 12 - .global RomHeaderGameCode -RomHeaderGameCode: +RomHeaderGameCode:: .space 4 RomHeaderMakerCode: @@ -31,8 +28,7 @@ RomHeaderDeviceType: RomHeaderReserved1: .space 7 - .global RomHeaderSoftwareVersion -RomHeaderSoftwareVersion: +RomHeaderSoftwareVersion:: .byte 0 RomHeaderChecksum: @@ -43,16 +39,13 @@ RomHeaderReserved2: .word 0 - .global GPIOPortData -GPIOPortData: +GPIOPortData:: .2byte 0 - .global GPIOPortDirection -GPIOPortDirection: +GPIOPortDirection:: .2byte 0 - .global GPIOPortReadEnable -GPIOPortReadEnable: +GPIOPortReadEnable:: .2byte 0 .2byte 0 From 03498d7240b47bfb76b410323ebcf53c82c70ff3 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 2 Sep 2022 23:57:43 -0400 Subject: [PATCH 191/271] Applied remaining instances of BATTLE_OPPOSITE and BATTLE_PARTNER --- include/battle_ai_util.h | 2 +- src/battle_ai_main.c | 2 +- src/battle_ai_util.c | 2 +- src/battle_anim_new.c | 2 +- src/battle_controller_opponent.c | 2 +- src/battle_message.c | 6 +++--- src/battle_script_commands.c | 2 +- src/battle_util.c | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index 5e66577e30..11eba7b661 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -5,7 +5,7 @@ #define AI_IS_FASTER 0 #define AI_IS_SLOWER 1 -#define FOE(battler) ((battler ^ BIT_SIDE) & BIT_SIDE) +#define FOE(battler) ((BATTLE_OPPOSITE(battler)) & BIT_SIDE) bool32 AI_RandLessThan(u8 val); void RecordLastUsedMoveByTarget(void); diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index f496b90e81..af642aa8dc 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -486,7 +486,7 @@ static u8 ChooseMoveOrAction_Doubles(void) bestMovePointsForTarget[i] = mostViableMovesScores[0]; // Don't use a move against ally if it has less than 100 points. - if (i == (sBattler_AI ^ BIT_FLANK) && bestMovePointsForTarget[i] < 100) + if (i == BATTLE_PARTNER(sBattler_AI) && bestMovePointsForTarget[i] < 100) { bestMovePointsForTarget[i] = -1; mostViableMovesScores[0] = mostViableMovesScores[0]; // Needed to match. diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 25c7f3b9d5..98fcf948a3 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -3248,7 +3248,7 @@ s32 CountUsablePartyMons(u8 battlerId) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { battlerOnField1 = gBattlerPartyIndexes[battlerId]; - battlerOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_FLANK)]; + battlerOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(battlerId)))]; } else // In singles there's only one battlerId by side. { diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 35c1244670..0a3d433b46 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -6523,7 +6523,7 @@ const struct SpriteTemplate gSoulStealZStarSpriteTemplate = //general void AnimTask_IsTargetPartner(u8 taskId) { - if (gBattleAnimTarget == (gBattleAnimAttacker ^ BIT_FLANK)) + if (gBattleAnimTarget == BATTLE_PARTNER(gBattleAnimAttacker)) gBattleAnimArgs[0] = 1; else gBattleAnimArgs[0] = 0; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index d249fc38be..8f02fb3e35 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -226,7 +226,7 @@ static void Intro_DelayAndEnd(void) static bool32 TwoIntroMons(u32 battlerId) // Double battle with both player pokemon active. { - return (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[battlerId ^ BIT_FLANK]])); + return (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battlerId)]])); } static void Intro_WaitForShinyAnimAndHealthbox(void) diff --git a/src/battle_message.c b/src/battle_message.c index 7b263ea657..8298accf1f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2703,7 +2703,7 @@ void BufferStringBattle(u16 stringID) { if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY) stringPtr = sText_LegendaryPkmnAppeared; - else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]])) // interesting, looks like they had something planned for wild double battles + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]])) // interesting, looks like they had something planned for wild double battles stringPtr = sText_TwoWildPkmnAppeared; else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL) stringPtr = sText_WildPkmnAppearedPause; @@ -2714,7 +2714,7 @@ void BufferStringBattle(u16 stringID) case STRINGID_INTROSENDOUT: // poke first send-out if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]])) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]])) { if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) stringPtr = sText_InGamePartnerSentOutZGoN; @@ -2732,7 +2732,7 @@ void BufferStringBattle(u16 stringID) } else { - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]])) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]])) { if (BATTLE_TWO_VS_ONE_OPPONENT) stringPtr = sText_Trainer1SentOutTwoPkmn; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c485f40172..5c4ba2c401 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -10730,7 +10730,7 @@ static void Cmd_forcerandomswitch(void) monsCount = 6; minNeeded = 2; battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; - battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK]; + battler1PartyId = gBattlerPartyIndexes[BATTLE_PARTNER(gBattlerTarget)]; } else if ((gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_LINK) || (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK) diff --git a/src/battle_util.c b/src/battle_util.c index d39b03215b..1c1cf685d9 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5817,7 +5817,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move { if (gBattleMons[i].ability == ABILITY_TRACE && (gBattleResources->flags->flags[i] & RESOURCE_FLAG_TRACED)) { - u8 side = (GetBattlerPosition(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon + u8 side = (BATTLE_OPPOSITE(GetBattlerPosition(i))) & BIT_SIDE; // side of the opposing pokemon u8 target1 = GetBattlerAtPosition(side); u8 target2 = GetBattlerAtPosition(side + BIT_FLANK); From 790bdd69f81a3ea43f7e30c783eee651f8496b5d Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 3 Sep 2022 00:28:32 -0400 Subject: [PATCH 192/271] Using GET_BATTLER_SIDE and GET_BATTLER_SIDE2 --- src/battle_anim_effects_2.c | 2 +- src/battle_anim_fight.c | 2 +- src/battle_anim_ice.c | 4 ++-- src/battle_controller_player.c | 2 +- src/battle_gfx_sfx_util.c | 2 +- src/battle_util.c | 4 ++-- src/pokemon.c | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 5bd28acea1..6b60440528 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1667,7 +1667,7 @@ void AnimTask_AirCutterProjectile(u8 taskId) } else { - if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER) + if (GET_BATTLER_SIDE2(gBattleAnimTarget) == B_SIDE_PLAYER) { gTasks[taskId].data[4] = 1; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index 0d7b977e9d..764a951ef8 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -492,7 +492,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) if (Random2() & 1) y *= -1; - if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER) + if (GET_BATTLER_SIDE2(battler) == B_SIDE_PLAYER) y += 0xFFF0; sprite->x += x; diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index d2779d1415..3032db7f3f 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -1193,12 +1193,12 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite) if (GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) < GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2)) sprite->data[7] = 0x8000; - if ((gBattlerPositions[gBattleAnimTarget] & BIT_SIDE) == B_SIDE_PLAYER) + if (GET_BATTLER_SIDE2(gBattleAnimTarget) == B_SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; - if ((sprite->data[7] & 0x8000) && (gBattlerPositions[gBattleAnimAttacker] & BIT_SIDE) == B_SIDE_PLAYER) + if ((sprite->data[7] & 0x8000) && GET_BATTLER_SIDE2(gBattleAnimAttacker) == B_SIDE_PLAYER) sprite->subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; sprite->data[6] = 1; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 96a3d6bf01..265bb7f657 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -498,7 +498,7 @@ static void HandleInputChooseMove(void) if (moveTarget & MOVE_TARGET_USER) gMultiUsePlayerCursor = gActiveBattler; else - gMultiUsePlayerCursor = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler) & BIT_SIDE)); + gMultiUsePlayerCursor = GetBattlerAtPosition(BATTLE_OPPOSITE(GET_BATTLER_SIDE(gActiveBattler))); if (!gBattleBufferA[gActiveBattler][1]) // not a double battle { diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index c2d4fad186..9c5243548d 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -254,7 +254,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void) else if (moveTarget == MOVE_TARGET_SELECTED) chosenMoveId |= GetBattlePalaceTarget(); else - chosenMoveId |= (GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler) & BIT_SIDE)) << 8); + chosenMoveId |= (GetBattlerAtPosition(BATTLE_OPPOSITE(GET_BATTLER_SIDE(gActiveBattler))) << 8); return chosenMoveId; } diff --git a/src/battle_util.c b/src/battle_util.c index 9bfeacd2d2..bbf34ab316 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3844,7 +3844,7 @@ u8 GetMoveTarget(u16 move, u8 setTarget) case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: case MOVE_TARGET_OPPONENTS_FIELD: - targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker) & BIT_SIDE)); + targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GET_BATTLER_SIDE(gBattlerAttacker))); if (gAbsentBattlerFlags & gBitTable[targetBattler]) targetBattler ^= BIT_FLANK; break; @@ -3872,7 +3872,7 @@ u8 GetMoveTarget(u16 move, u8 setTarget) targetBattler ^= BIT_FLANK; } else - targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(gBattlerAttacker) & BIT_SIDE)); + targetBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GET_BATTLER_SIDE(gBattlerAttacker))); break; case MOVE_TARGET_USER_OR_SELECTED: case MOVE_TARGET_USER: diff --git a/src/pokemon.c b/src/pokemon.c index 4b22947cb0..d4931f8e5e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3405,7 +3405,7 @@ static bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId) u8 GetDefaultMoveTarget(u8 battlerId) { - u8 opposing = BATTLE_OPPOSITE(GetBattlerPosition(battlerId) & BIT_SIDE); + u8 opposing = BATTLE_OPPOSITE(GET_BATTLER_SIDE(battlerId)); if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) return GetBattlerAtPosition(opposing); From 41bf6bde258af3e52867800c7b2fdb02f0540674 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sat, 3 Sep 2022 00:28:53 -0400 Subject: [PATCH 193/271] Removed pointless macro --- include/battle.h | 3 +-- src/battle_anim_mons.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/battle.h b/include/battle.h index 0eaa60f30f..5cc5521859 100644 --- a/include/battle.h +++ b/include/battle.h @@ -13,9 +13,8 @@ #include "battle_bg.h" #include "pokeball.h" -#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler]) #define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE) -#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE) +#define GET_BATTLER_SIDE2(battler) (gBattlerPositions[battler] & BIT_SIDE) // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index f8fc5647ea..25817c0740 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -857,7 +857,7 @@ u8 GetBattlerSide(u8 battlerId) u8 GetBattlerPosition(u8 battlerId) { - return GET_BATTLER_POSITION(battlerId); + return gBattlerPositions[battlerId]; } u8 GetBattlerAtPosition(u8 position) From 7e920040ca25227b7f72f8bfee50bfaa4c9a6e78 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 3 Sep 2022 09:59:53 -0300 Subject: [PATCH 194/271] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ce0b6b4c73..e4285f7239 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ The pokeemerald Expansion is a collection of feature branches that can be integr ## What feature branches are included? -- **[Battle Engine Upgrade](../tree/battle_engine):** Upgrades the battle engine in pokeemerald to newer Generation games' standards. It also adds newer moves and abilities. -- **[Pokémon Expansion](../tree/pokemon_expansion):** Adds Pokémon from newer Generations and makes them available in the National Dex. It also updates base stats and other Pokémon info. -- **[Item Expansion](../tree/item_expansion):** Adds items from newer Generations and also updates item effects for field use. -- **[master](../tree/master):** Combines the above branches into one single branch for the sake of convenience. Note that this branch is only updated once in a while, so you must merge manually if you want the latest features. +- **[Battle Engine Upgrade](../../tree/battle_engine):** Upgrades the battle engine in pokeemerald to newer Generation games' standards. It also adds newer moves and abilities. +- **[Pokémon Expansion](../../tree/pokemon_expansion):** Adds Pokémon from newer Generations and makes them available in the National Dex. It also updates base stats and other Pokémon info. +- **[Item Expansion](../../tree/item_expansion):** Adds items from newer Generations and also updates item effects for field use. +- **[master](../../tree/master):** Combines the above branches into one single branch for the sake of convenience. Note that this branch is only updated once in a while, so you must merge manually if you want the latest features. ## Who maintains the project? From 8079224340e2b5373cfcffd0ae29082dce0967d3 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 3 Sep 2022 10:20:52 -0300 Subject: [PATCH 195/271] Copy-pasted Eduardo's README --- README.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e4285f7239..8a1c3d37d4 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,19 @@ The pokeemerald Expansion is a collection of feature branches that can be integrated into existing [pokeemerald](https://github.com/pret/pokeemerald) projects. -## What feature branches are included? - -- **[Battle Engine Upgrade](../../tree/battle_engine):** Upgrades the battle engine in pokeemerald to newer Generation games' standards. It also adds newer moves and abilities. -- **[Pokémon Expansion](../../tree/pokemon_expansion):** Adds Pokémon from newer Generations and makes them available in the National Dex. It also updates base stats and other Pokémon info. -- **[Item Expansion](../../tree/item_expansion):** Adds items from newer Generations and also updates item effects for field use. -- **[master](../../tree/master):** Combines the above branches into one single branch for the sake of convenience. Note that this branch is only updated once in a while, so you must merge manually if you want the latest features. +## What features are included? +- Upgraded battle engine. + - Fairy Type. + - New moves and abilities up to SwSh. + - Options to change behaviors and data by generation. + - Mega Evolution and Primal Reversion + - Z-Moves (TODO: Ultra Burst) +- Adds Pokémon from newer Generations and makes them available in the National Dex (with the option to disable them if needed). + - Updates Hoenn's Regional Dex to match ORAS'. + - Option to change base stats by generation. + - New evolution methods. + - Hidden Abilities data (How to obtain them is up to the user). +- Adds items from newer Generations and also updates item effects for field use. ## Who maintains the project? @@ -19,7 +26,7 @@ The project has now gotten larger and DizzyEgg is now maintaining the project as ## Can I contribute even if I'm not a member of ROM Hacking Hideout? -Yes! Contributions are welcome via Pull Requests and they will be reviewed by maintainers. Please note that PRs to master are not accepted, as master is only intended to be a merged branch. +Yes! Contributions are welcome via Pull Requests and they will be reviewed by maintainers. Don't feel discouraged if we take a bit to review your PR, we'll get to it ## What is ROM Hacking Hideout? From 9df8d2dc63e59a96bda704a448ee33b01eb4a947 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 3 Sep 2022 10:21:11 -0300 Subject: [PATCH 196/271] Updated the README again --- README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8a1c3d37d4..d22891fdf0 100644 --- a/README.md +++ b/README.md @@ -2,21 +2,25 @@ ## What is the pokeemerald Expansion? -The pokeemerald Expansion is a collection of feature branches that can be integrated into existing [pokeemerald](https://github.com/pret/pokeemerald) projects. +The Pokeemerald Expansion is a collection of feature branches that can be integrated into existing [pokeemerald](https://github.com/pret/pokeemerald) projects. ## What features are included? - Upgraded battle engine. - Fairy Type. + - Physical/Special/Status Category Split. - New moves and abilities up to SwSh. - Options to change behaviors and data by generation. - Mega Evolution and Primal Reversion - - Z-Moves (TODO: Ultra Burst) -- Adds Pokémon from newer Generations and makes them available in the National Dex (with the option to disable them if needed). + - Z-Moves +- Pokémon Species from newer Generations (with the option to disable them if needed). - Updates Hoenn's Regional Dex to match ORAS'. + - Updates National Dex incorporating all the new species. - Option to change base stats by generation. - New evolution methods. - - Hidden Abilities data (How to obtain them is up to the user). -- Adds items from newer Generations and also updates item effects for field use. + - Hidden Abilities data (How to make them available is up to the user). +- Items from newer Generations and updated item effects for battle and field use. + +Certain mechanics, moves, abilities and species sprites are missing. For more information, see [the project's milestones](https://github.com/rh-hideout/pokeemerald-expansion/milestones). ## Who maintains the project? @@ -26,7 +30,7 @@ The project has now gotten larger and DizzyEgg is now maintaining the project as ## Can I contribute even if I'm not a member of ROM Hacking Hideout? -Yes! Contributions are welcome via Pull Requests and they will be reviewed by maintainers. Don't feel discouraged if we take a bit to review your PR, we'll get to it +Yes! Contributions are welcome via Pull Requests and they will be reviewed by maintainers. Don't feel discouraged if we take a bit to review your PR, we'll get to it. ## What is ROM Hacking Hideout? From 4017fc3e20f3c996a46eccb650f72c46c302fc0b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sat, 3 Sep 2022 21:22:15 -0400 Subject: [PATCH 197/271] Apply style suggestions from code review --- data/scripts/debug.inc | 2 +- include/constants/battle_config.h | 4 +- src/battle_main.c | 1 - src/debug.c | 815 ++++++++++++++---------------- src/item_use.c | 1 - src/trainer_see.c | 1 - 6 files changed, 372 insertions(+), 452 deletions(-) diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index fe86197c8c..9463164ac2 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -52,7 +52,7 @@ Debug_FlagsNotSetMessage:: Debug_FlagsNotSetMessage_Text: .string "Feature unavailable!\n" .string "Please define a usable flag in:\l" - .string "'include/constants/debug{UNDERSCORE}config.h'!$" + .string "'include/constants/overworld{UNDERSCORE}config.h'!$" Debug_Script_1:: end diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index ad7775b673..461829e261 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -138,8 +138,8 @@ #define B_FLAG_INVERSE_BATTLE 0 // If this flag is set, the battle's type effectiveness are inversed. For example, fire is super effective against water. #define B_FLAG_FORCE_DOUBLE_WILD 0 // If this flag is set, all land and surfing wild battles will be double battles. #define B_SMART_WILD_AI_FLAG 0 // If not 0, you can set this flag in a script to enable smart wild pokemon -#define B_FLAG_NO_BAG_USE 0 // If this flag is set, the debug function in the Utility submenu to disable the bag in battle can be used. -#define B_FLAG_NO_CATCHING 0 // If this flag is set, the debug function in the Utility submenu to disable catching of wild Pokémon can be used. +#define B_FLAG_NO_BAG_USE 0 // If this flag is set, the ability to use the bag in battle is disabled. +#define B_FLAG_NO_CATCHING 0 // If this flag is set, the ability to catch wild Pokémon is disabled. // Var Settings // To use the following features in scripting, replace the 0s with the var ID you're assigning it to. diff --git a/src/battle_main.c b/src/battle_main.c index 39deaca27f..69335532c4 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -16,7 +16,6 @@ #include "berry.h" #include "bg.h" #include "data.h" -#include "debug.h" #include "decompress.h" #include "dma3.h" #include "event_data.h" diff --git a/src/debug.c b/src/debug.c index 81e30cff01..5d861640cd 100644 --- a/src/debug.c +++ b/src/debug.c @@ -151,7 +151,6 @@ enum { //Sound // EWRAM static EWRAM_DATA struct DebugMonData *sDebugMonData = NULL; - // ******************************* struct DebugMonData { @@ -172,7 +171,6 @@ struct DebugMonData u16 mon_move_3; }; - // ******************************* // Define functions static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); @@ -285,12 +283,6 @@ extern u8 Debug_ShowFieldMessageStringVar4[]; extern u8 Debug_CheatStart[]; extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; -#ifdef BATTLE_ENGINE -#define ABILITY_NAME_LENGTH 16 -#else -#define ABILITY_NAME_LENGTH 12 -#endif -extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; // ******************************* @@ -299,108 +291,108 @@ static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, // Text // Main Menu -static const u8 gDebugText_Utilities[] = _("Utilities"); -static const u8 gDebugText_Scripts[] = _("Scripts"); -static const u8 gDebugText_Flags[] = _("Flags"); -static const u8 gDebugText_Vars[] = _("Variables"); -static const u8 gDebugText_Give[] = _("Give X"); -static const u8 gDebugText_Sound[] = _("Sound"); -static const u8 gDebugText_Cancel[] = _("Cancel"); +static const u8 gDebugText_Utilities[] = _("Utilities"); +static const u8 gDebugText_Scripts[] = _("Scripts"); +static const u8 gDebugText_Flags[] = _("Flags"); +static const u8 gDebugText_Vars[] = _("Variables"); +static const u8 gDebugText_Give[] = _("Give X"); +static const u8 gDebugText_Sound[] = _("Sound"); +static const u8 gDebugText_Cancel[] = _("Cancel"); // Script menu -static const u8 gDebugText_Util_Script_1[] = _("Script 1"); -static const u8 gDebugText_Util_Script_2[] = _("Script 2"); -static const u8 gDebugText_Util_Script_3[] = _("Script 3"); -static const u8 gDebugText_Util_Script_4[] = _("Script 4"); -static const u8 gDebugText_Util_Script_5[] = _("Script 5"); -static const u8 gDebugText_Util_Script_6[] = _("Script 6"); -static const u8 gDebugText_Util_Script_7[] = _("Script 7"); -static const u8 gDebugText_Util_Script_8[] = _("Script 8"); +static const u8 gDebugText_Util_Script_1[] = _("Script 1"); +static const u8 gDebugText_Util_Script_2[] = _("Script 2"); +static const u8 gDebugText_Util_Script_3[] = _("Script 3"); +static const u8 gDebugText_Util_Script_4[] = _("Script 4"); +static const u8 gDebugText_Util_Script_5[] = _("Script 5"); +static const u8 gDebugText_Util_Script_6[] = _("Script 6"); +static const u8 gDebugText_Util_Script_7[] = _("Script 7"); +static const u8 gDebugText_Util_Script_8[] = _("Script 8"); // Util Menu -static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); -static const u8 gDebugText_Util_Fly[] = _("Fly to map"); -static const u8 gDebugText_Util_WarpToMap[] = _("Warp to map warp"); -static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] =_("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); -static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); -static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); -static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); -static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); -static const u8 gDebugText_Util_CheckWeekDay[] = _("Check Week Day"); -static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); -static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); -static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); -static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); +static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); +static const u8 gDebugText_Util_Fly[] = _("Fly to map"); +static const u8 gDebugText_Util_WarpToMap[] = _("Warp to map warp"); +static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); +static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); +static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); +static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); +static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); +static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); +static const u8 gDebugText_Util_CheckWeekDay[] = _("Check Week Day"); +static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); +static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); +static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); +static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); // Flags Menu -static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); -static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); -static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); -static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); -static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); -static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); -static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); -static const u8 gDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); -static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); -static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); -static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); -static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); -static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); -static const u8 gDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); -static const u8 gDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Flags_FlagSet[] = _("TRUE"); -static const u8 gDebugText_Flags_FlagUnset[] = _("FALSE"); +static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); +static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); +static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); +static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); +static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); +static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); +static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 gDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); +static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); +static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); +static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); +static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); +static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); +static const u8 gDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); +static const u8 gDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_Flags_FlagSet[] = _("TRUE"); +static const u8 gDebugText_Flags_FlagUnset[] = _("FALSE"); // Variables Menu -static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); -static const u8 gDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); -static const u8 gDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); +static const u8 gDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 gDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 gDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); // Give Menu -static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); -static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_Give_AllTMs[] = _("Give all TMs"); -static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); -static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); -static const u8 gDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); -static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); -static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); -static const u8 gDebugText_Give_BattlePoints[] = _("Max Battle Points"); -static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); -static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); -static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); -static const u8 gDebugText_AccessPC[] = _("Access PC"); +static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); +static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_Give_AllTMs[] = _("Give all TMs"); +static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); +static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); +static const u8 gDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); +static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); +static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); +static const u8 gDebugText_Give_BattlePoints[] = _("Max Battle Points"); +static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); +static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); +static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); +static const u8 gDebugText_AccessPC[] = _("Access PC"); // Sound Mneu -static const u8 gDebugText_Sound_SE[] = _("Effects"); -static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_MUS[] = _("Music"); -static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_Empty[] = _(""); +static const u8 gDebugText_Sound_SE[] = _("Effects"); +static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 gDebugText_Sound_MUS[] = _("Music"); +static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 gDebugText_Sound_Empty[] = _(""); -static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); -static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); -static const u8 digitInidicator_100[] = _("{LEFT_ARROW}+100{RIGHT_ARROW} "); -static const u8 digitInidicator_1000[] = _("{LEFT_ARROW}+1000{RIGHT_ARROW} "); -static const u8 digitInidicator_10000[] = _("{LEFT_ARROW}+10000{RIGHT_ARROW} "); -static const u8 digitInidicator_100000[] = _("{LEFT_ARROW}+100000{RIGHT_ARROW} "); -static const u8 digitInidicator_1000000[] = _("{LEFT_ARROW}+1000000{RIGHT_ARROW} "); -static const u8 digitInidicator_10000000[] = _("{LEFT_ARROW}+10000000{RIGHT_ARROW} "); +static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); +static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); +static const u8 digitInidicator_100[] = _("{LEFT_ARROW}+100{RIGHT_ARROW} "); +static const u8 digitInidicator_1000[] = _("{LEFT_ARROW}+1000{RIGHT_ARROW} "); +static const u8 digitInidicator_10000[] = _("{LEFT_ARROW}+10000{RIGHT_ARROW} "); +static const u8 digitInidicator_100000[] = _("{LEFT_ARROW}+100000{RIGHT_ARROW} "); +static const u8 digitInidicator_1000000[] = _("{LEFT_ARROW}+1000000{RIGHT_ARROW} "); +static const u8 digitInidicator_10000000[] = _("{LEFT_ARROW}+10000000{RIGHT_ARROW} "); const u8 * const gText_DigitIndicator[] = { digitInidicator_1, @@ -430,158 +422,156 @@ static const s32 sPowersOfTen[] = // List Menu Items static const struct ListMenuItem sDebugMenu_Items_Main[] = { - [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, - [DEBUG_MENU_ITEM_SCRIPTS] = {gDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, - [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, - [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, - [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, - [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, - [DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, - [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} + [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_SCRIPTS] = {gDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, + [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, + [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, + [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, + [DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, + [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} }; static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, - [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, - [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = {gDebugText_Util_CheckWeekDay, DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY}, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {gDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {gDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = { - [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {gDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {gDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {gDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {gDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {gDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {gDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {gDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {gDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {gDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {gDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {gDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {gDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {gDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {gDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {gDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {gDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, }; static const struct ListMenuItem sDebugMenu_Items_Flags[] = { - [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {gDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {gDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {gDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, - [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, - [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, - [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {gDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, - [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {gDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {gDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {gDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {gDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {gDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {gDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {gDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {gDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, }; static const struct ListMenuItem sDebugMenu_Items_Vars[] = { - [DEBUG_VARS_MENU_ITEM_VARS] = {gDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_VARS_MENU_ITEM_VARS] = {gDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, }; static const struct ListMenuItem sDebugMenu_Items_Give[] = { - [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, - [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, - [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, - [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, - [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS]= {gDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, - [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, - [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, - [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {gDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, }; static const struct ListMenuItem sDebugMenu_Items_Sound[] = { - [DEBUG_SOUND_MENU_ITEM_SE] = {gDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, - [DEBUG_SOUND_MENU_ITEM_MUS] = {gDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, + [DEBUG_SOUND_MENU_ITEM_SE] = {gDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, + [DEBUG_SOUND_MENU_ITEM_MUS] = {gDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, }; // ******************************* // Menu Actions static void (*const sDebugMenu_Actions_Main[])(u8) = { - [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, - [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, - [DEBUG_MENU_ITEM_FLAGS] = DebugAction_OpenFlagsMenu, - [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, - [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, - [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, - [DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, - [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel + [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, + [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, + [DEBUG_MENU_ITEM_FLAGS] = DebugAction_OpenFlagsMenu, + [DEBUG_MENU_ITEM_VARS] = DebugAction_OpenVariablesMenu, + [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, + [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, + [DEBUG_MENU_ITEM_ACCESS_PC] = DebugAction_AccessPC, + [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel }; static void (*const sDebugMenu_Actions_Utilities[])(u8) = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = DebugAction_Util_HealParty, - [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, - [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, - [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = DebugAction_Util_RunningShoes, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, - [DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY] = DebugAction_Util_CheckWeekDay, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = DebugAction_Util_Trainer_Name, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = DebugAction_Util_HealParty, + [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, + [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = DebugAction_Util_RunningShoes, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = DebugAction_Util_Trainer_Name, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = DebugAction_Util_Trainer_Gender, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = DebugAction_Util_Trainer_Id, }; static void (*const sDebugMenu_Actions_Scripts[])(u8) = { - [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = DebugAction_Util_Script_1, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = DebugAction_Util_Script_2, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = DebugAction_Util_Script_3, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = DebugAction_Util_Script_4, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = DebugAction_Util_Script_5, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = DebugAction_Util_Script_6, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = DebugAction_Util_Script_7, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = DebugAction_Util_Script_8, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = DebugAction_Util_Script_1, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = DebugAction_Util_Script_2, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = DebugAction_Util_Script_3, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = DebugAction_Util_Script_4, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = DebugAction_Util_Script_5, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = DebugAction_Util_Script_6, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = DebugAction_Util_Script_7, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = DebugAction_Util_Script_8, }; static void (*const sDebugMenu_Actions_Flags[])(u8) = { - [DEBUG_FLAG_MENU_ITEM_FLAGS] = DebugAction_Flags_Flags, - [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = DebugAction_Flags_SetPokedexFlags, - [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = DebugAction_Flags_SwitchDex, - [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = DebugAction_Flags_SwitchNatDex, - [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = DebugAction_Flags_SwitchPokeNav, - [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = DebugAction_Flags_ToggleFlyFlags, - [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = DebugAction_Flags_ToggleBadgeFlags, - [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = DebugAction_Flags_ToggleFrontierPass, - [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = DebugAction_Flags_CollisionOnOff, - [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = DebugAction_Flags_EncounterOnOff, - [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF]= DebugAction_Flags_TrainerSeeOnOff, - [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = DebugAction_Flags_BagUseOnOff, - [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = DebugAction_Flags_CatchingOnOff, + [DEBUG_FLAG_MENU_ITEM_FLAGS] = DebugAction_Flags_Flags, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = DebugAction_Flags_SetPokedexFlags, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = DebugAction_Flags_SwitchDex, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = DebugAction_Flags_SwitchNatDex, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = DebugAction_Flags_SwitchPokeNav, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = DebugAction_Flags_ToggleFlyFlags, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = DebugAction_Flags_ToggleBadgeFlags, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = DebugAction_Flags_ToggleFrontierPass, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = DebugAction_Flags_CollisionOnOff, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = DebugAction_Flags_EncounterOnOff, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = DebugAction_Flags_TrainerSeeOnOff, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = DebugAction_Flags_BagUseOnOff, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = DebugAction_Flags_CatchingOnOff, }; static void (*const sDebugMenu_Actions_Vars[])(u8) = { - [DEBUG_VARS_MENU_ITEM_VARS] = DebugAction_Vars_Vars, + [DEBUG_VARS_MENU_ITEM_VARS] = DebugAction_Vars_Vars, }; static void (*const sDebugMenu_Actions_Give[])(u8) = { - [DEBUG_GIVE_MENU_ITEM_ITEM_X] = DebugAction_Give_Item, - [DEBUG_GIVE_MENU_ITEM_ALLTMS] = DebugAction_Give_AllTMs, - [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, - [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, - [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = DebugAction_Give_MaxMoney, - [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = DebugAction_Give_MaxCoins, - [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS]= DebugAction_Give_MaxBattlePoints, - [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, - [DEBUG_GIVE_MENU_ITEM_FILL_PC] = DebugAction_Give_FillPC, - [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = DebugAction_Give_Item, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = DebugAction_Give_AllTMs, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = DebugAction_Give_PokemonSimple, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = DebugAction_Give_PokemonComplex, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = DebugAction_Give_MaxMoney, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = DebugAction_Give_MaxCoins, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = DebugAction_Give_MaxBattlePoints, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = DebugAction_Give_FillPC, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = DebugAction_Give_CHEAT, }; static void (*const sDebugMenu_Actions_Sound[])(u8) = { - [DEBUG_SOUND_MENU_ITEM_SE] = DebugAction_Sound_SE, - [DEBUG_SOUND_MENU_ITEM_MUS] = DebugAction_Sound_MUS, + [DEBUG_SOUND_MENU_ITEM_SE] = DebugAction_Sound_SE, + [DEBUG_SOUND_MENU_ITEM_MUS] = DebugAction_Sound_MUS, }; @@ -944,7 +934,6 @@ static void DebugAction_Util_Warp_Warp(u8 taskId) CopyWindowToVram(windowId, 3); - ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); @@ -965,31 +954,31 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > MAP_GROUPS_COUNT-1) - gTasks[taskId].data[3] = MAP_GROUPS_COUNT-1; + if (gTasks[taskId].data[3] > MAP_GROUPS_COUNT - 1) + gTasks[taskId].data[3] = MAP_GROUPS_COUNT - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 2) + if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT - 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); @@ -1003,7 +992,7 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) gTasks[taskId].data[4] = 0; ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]]-1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); @@ -1025,31 +1014,31 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > max_value-1) - gTasks[taskId].data[3] = max_value-1; + if(gTasks[taskId].data[3] > max_value - 1) + gTasks[taskId].data[3] = max_value - 1; } if(gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } if(gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { if(gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]]-1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); @@ -1103,7 +1092,8 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) { gTasks[taskId].data[7] = gTasks[taskId].data[3]; //WARP - SetWarpDestinationToMapWarp(gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]); //If not warp with the number available -> center of map + //If there's no warp with the number available, warp to the center of the map. + SetWarpDestinationToMapWarp(gTasks[taskId].data[5], gTasks[taskId].data[6], gTasks[taskId].data[7]); DoWarp(); ResetInitialPlayerAvatarState(); DebugAction_DestroyExtraWindow(taskId); @@ -1277,7 +1267,7 @@ static void DebugAction_Flags_Flags(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, 0, STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); - if(FlagGet(0) == TRUE) + if (FlagGet(0) == TRUE) StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); @@ -1301,38 +1291,38 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) return; } - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] >= FLAGS_COUNT){ + if (gTasks[taskId].data[3] >= FLAGS_COUNT){ gTasks[taskId].data[3] = FLAGS_COUNT - 1; } } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0){ + if (gTasks[taskId].data[3] < 0){ gTasks[taskId].data[3] = 0; } } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { PlaySE(SE_SELECT); gTasks[taskId].data[4] -= 1; - if(gTasks[taskId].data[4] < 0) + if (gTasks[taskId].data[4] < 0) { gTasks[taskId].data[4] = 0; } } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { PlaySE(SE_SELECT); gTasks[taskId].data[4] += 1; - if(gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_FLAGS-1) + if (gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_FLAGS - 1) { - gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_FLAGS-1; + gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_FLAGS - 1; } } @@ -1341,7 +1331,7 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); - if(FlagGet(gTasks[taskId].data[3]) == TRUE) + if (FlagGet(gTasks[taskId].data[3]) == TRUE) StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); @@ -1364,44 +1354,41 @@ static void DebugAction_Flags_SetPokedexFlags(u8 taskId) } static void DebugAction_Flags_SwitchDex(u8 taskId) { - if(FlagGet(FLAG_SYS_POKEDEX_GET)) - { - FlagClear(FLAG_SYS_POKEDEX_GET); + if (FlagGet(FLAG_SYS_POKEDEX_GET)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(FLAG_SYS_POKEDEX_GET); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(FLAG_SYS_POKEDEX_GET); } static void DebugAction_Flags_SwitchNatDex(u8 taskId) { - if(IsNationalPokedexEnabled()) + if (IsNationalPokedexEnabled()) { DisableNationalPokedex(); PlaySE(SE_PC_OFF); - }else{ + } + else + { EnableNationalPokedex(); PlaySE(SE_PC_LOGIN); } } static void DebugAction_Flags_SwitchPokeNav(u8 taskId) { - if(FlagGet(FLAG_SYS_POKENAV_GET)) - { - FlagClear(FLAG_SYS_POKENAV_GET); + if (FlagGet(FLAG_SYS_POKENAV_GET)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(FLAG_SYS_POKENAV_GET); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(FLAG_SYS_POKENAV_GET); } static void DebugAction_Flags_ToggleFlyFlags(u8 taskId) { // Sound effect - if(FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER)) + if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER)) PlaySE(SE_PC_OFF); else PlaySE(SE_PC_LOGIN); + FlagToggle(FLAG_VISITED_LITTLEROOT_TOWN); FlagToggle(FLAG_VISITED_OLDALE_TOWN); FlagToggle(FLAG_VISITED_DEWFORD_TOWN); @@ -1424,10 +1411,11 @@ static void DebugAction_Flags_ToggleFlyFlags(u8 taskId) static void DebugAction_Flags_ToggleBadgeFlags(u8 taskId) { // Sound effect - if(FlagGet(FLAG_BADGE08_GET)) + if (FlagGet(FLAG_BADGE08_GET)) PlaySE(SE_PC_OFF); else PlaySE(SE_PC_LOGIN); + FlagToggle(FLAG_BADGE01_GET); FlagToggle(FLAG_BADGE02_GET); FlagToggle(FLAG_BADGE03_GET); @@ -1440,7 +1428,7 @@ static void DebugAction_Flags_ToggleBadgeFlags(u8 taskId) static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) { // Sound effect - if(FlagGet(FLAG_SYS_FRONTIER_PASS)) + if (FlagGet(FLAG_SYS_FRONTIER_PASS)) PlaySE(SE_PC_OFF); else PlaySE(SE_PC_LOGIN); @@ -1453,48 +1441,39 @@ static void DebugAction_Flags_CollisionOnOff(u8 taskId) LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else - if(FlagGet(DEBUG_FLAG_NO_COLLISION)) - { - FlagClear(DEBUG_FLAG_NO_COLLISION); + if (FlagGet(DEBUG_FLAG_NO_COLLISION)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(DEBUG_FLAG_NO_COLLISION); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(DEBUG_FLAG_NO_COLLISION); #endif } static void DebugAction_Flags_EncounterOnOff(u8 taskId) { -#if DEBUG_FLAG_NO_ENCOUNTER == 0 +#if OW_FLAG_NO_ENCOUNTER == 0 Debug_DestroyMenu(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else - if(FlagGet(DEBUG_FLAG_NO_ENCOUNTER)) - { - FlagClear(DEBUG_FLAG_NO_ENCOUNTER); + if (FlagGet(OW_FLAG_NO_ENCOUNTER)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(DEBUG_FLAG_NO_ENCOUNTER); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(OW_FLAG_NO_ENCOUNTER); #endif } static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) { -#if DEBUG_FLAG_NO_TRAINER_SEE == 0 +#if OW_FLAG_NO_TRAINER_SEE == 0 Debug_DestroyMenu(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else - if(FlagGet(DEBUG_FLAG_NO_TRAINER_SEE)) - { - FlagClear(DEBUG_FLAG_NO_TRAINER_SEE); + if (FlagGet(OW_FLAG_NO_TRAINER_SEE)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(DEBUG_FLAG_NO_TRAINER_SEE); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(OW_FLAG_NO_TRAINER_SEE); #endif } static void DebugAction_Flags_BagUseOnOff(u8 taskId) @@ -1504,14 +1483,11 @@ static void DebugAction_Flags_BagUseOnOff(u8 taskId) LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else - if(FlagGet(B_FLAG_NO_BAG_USE)) - { - FlagClear(B_FLAG_NO_BAG_USE); + if (FlagGet(B_FLAG_NO_BAG_USE)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(B_FLAG_NO_BAG_USE); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(B_FLAG_NO_BAG_USE); #endif } static void DebugAction_Flags_CatchingOnOff(u8 taskId) @@ -1521,14 +1497,11 @@ static void DebugAction_Flags_CatchingOnOff(u8 taskId) LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else - if(FlagGet(B_FLAG_NO_CATCHING)) - { - FlagClear(B_FLAG_NO_CATCHING); + if (FlagGet(B_FLAG_NO_CATCHING)) PlaySE(SE_PC_OFF); - }else{ - FlagSet(B_FLAG_NO_CATCHING); + else PlaySE(SE_PC_LOGIN); - } + FlagToggle(B_FLAG_NO_CATCHING); #endif } @@ -1560,42 +1533,36 @@ static void DebugAction_Vars_Vars(u8 taskId) gTasks[taskId].func = DebugAction_Vars_Select; gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = VARS_START; //Current Variable - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[3] = VARS_START; //Current Variable + gTasks[taskId].data[4] = 0; //Digit Selected gTasks[taskId].data[5] = 0; //Current Variable VALUE } static void DebugAction_Vars_Select(u8 taskId) { - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > VARS_END){ + if(gTasks[taskId].data[3] > VARS_END) gTasks[taskId].data[3] = VARS_END; - } } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < VARS_START){ + if (gTasks[taskId].data[3] < VARS_START) gTasks[taskId].data[3] = VARS_START; - } } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { gTasks[taskId].data[4] -= 1; if(gTasks[taskId].data[4] < 0) - { gTasks[taskId].data[4] = 0; - } } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { gTasks[taskId].data[4] += 1; - if(gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_VARIABLES-1) - { - gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_VARIABLES-1; - } + if (gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_VARIABLES - 1) + gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_VARIABLES - 1; } if (gMain.newKeys & DPAD_ANY) @@ -1653,30 +1620,30 @@ static void DebugAction_Vars_SetValue(u8 taskId) if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].data[4]] <= 32000) gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; else - gTasks[taskId].data[6] = 32000-1; - if(gTasks[taskId].data[6] >= 32000){ - gTasks[taskId].data[6] = 32000-1; - } + gTasks[taskId].data[6] = 32000 - 1; + + if (gTasks[taskId].data[6] >= 32000) + gTasks[taskId].data[6] = 32000 - 1; } if(gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[6] < 0){ + if (gTasks[taskId].data[6] < 0){ gTasks[taskId].data[6] = 0; } } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { gTasks[taskId].data[4] -= 1; - if(gTasks[taskId].data[4] < 0) + if (gTasks[taskId].data[4] < 0) { gTasks[taskId].data[4] = 0; } } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { gTasks[taskId].data[4] += 1; - if(gTasks[taskId].data[4] > 4) + if (gTasks[taskId].data[4] > 4) { gTasks[taskId].data[4] = 4; } @@ -1751,26 +1718,26 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if(gTasks[taskId].data[3] >= ITEMS_COUNT) gTasks[taskId].data[3] = ITEMS_COUNT - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 1) + if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { if(gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } @@ -1822,26 +1789,26 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] >= 100) + if (gTasks[taskId].data[3] >= 100) gTasks[taskId].data[3] = 99; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 1) + if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 2) + if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } @@ -1880,9 +1847,11 @@ static void DebugAction_Give_AllTMs(u8 taskId) { u16 i; PlayFanfare(MUS_OBTAIN_TMHM); - for (i = ITEM_TM01; i <= ITEM_TM50; i++) - if(!CheckBagHasItem(i, 1)) + for (i = ITEM_TM01; i <= ITEM_HM08; i++) + { + if (ItemIdToBattleMoveId(i) != MOVE_NONE && !CheckBagHasItem(i, 1)) AddBagItem(i, 1); + } Debug_DestroyMenu(taskId); ScriptContext_Enable(); } @@ -1937,12 +1906,7 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) gTasks[taskId].data[5] = 0; //Complex? FreeMonIconPalettes(); //Free space for new pallete LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - #ifndef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite - #endif - #ifdef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - #endif + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID } static void DebugAction_Give_PokemonComplex(u8 taskId) @@ -1972,7 +1936,6 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); - gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; gTasks[taskId].data[2] = windowId; gTasks[taskId].data[3] = 1; //Current ID @@ -1980,12 +1943,7 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) gTasks[taskId].data[5] = 1; //Complex? FreeMonIconPalettes(); //Free space for new palletes LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - #ifndef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite - #endif - #ifdef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - #endif + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; //Mon Icon ID gTasks[taskId].data[7] = 0; //iterator } @@ -1996,30 +1954,26 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > SPECIES_CELEBI && gTasks[taskId].data[3] < SPECIES_TREECKO) - gTasks[taskId].data[3] = SPECIES_TREECKO; - if(gTasks[taskId].data[3] >= NUM_SPECIES) + if (gTasks[taskId].data[3] >= NUM_SPECIES) gTasks[taskId].data[3] = NUM_SPECIES - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < SPECIES_TREECKO && gTasks[taskId].data[3] > SPECIES_CELEBI) - gTasks[taskId].data[3] = SPECIES_CELEBI; - if(gTasks[taskId].data[3] < 1) + if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } @@ -2033,12 +1987,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); FreeMonIconPalettes(); //Free space for new pallete LoadMonIconPalette(gTasks[taskId].data[3]); //Loads pallete for current mon - #ifndef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0, TRUE); //Create pokemon sprite - #endif - #ifdef POKEMON_EXPANSION - gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite - #endif + gTasks[taskId].data[6] = CreateMonIcon(gTasks[taskId].data[3], SpriteCB_MonIcon, DEBUG_NUMBER_ICON_X, DEBUG_NUMBER_ICON_Y, 4, 0); //Create pokemon sprite gSprites[gTasks[taskId].data[6]].oam.priority = 0; } @@ -2071,26 +2020,26 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > 100) + if (gTasks[taskId].data[3] > 100) gTasks[taskId].data[3] = 100; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 1) + if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 2) + if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } @@ -2143,20 +2092,20 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > 1) + if (gTasks[taskId].data[3] > 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if(gTasks[taskId].data[3] == 1) + if (gTasks[taskId].data[3] == 1) StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); @@ -2194,13 +2143,13 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > NUM_NATURES-1) + if (gTasks[taskId].data[3] > NUM_NATURES-1) gTasks[taskId].data[3] = NUM_NATURES-1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if(gTasks[taskId].data[3] < 0) @@ -2242,26 +2191,23 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) { u8 abilityId; - u8 abilityCount = 2 - 1; //-1 for proper iteration + u8 abilityCount = NUM_ABILITY_SLOTS - 1; //-1 for proper iteration u8 i = 0; - #ifdef POKEMON_EXPANSION - abilityCount = NUM_ABILITY_SLOTS - 1; - #endif if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > abilityCount) + if (gTasks[taskId].data[3] > abilityCount) gTasks[taskId].data[3] = abilityCount; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } @@ -2305,26 +2251,26 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > 31) + if (gTasks[taskId].data[3] > 31) gTasks[taskId].data[3] = 31; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 2) + if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } @@ -2444,26 +2390,26 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] >= MOVES_COUNT) + if (gTasks[taskId].data[3] >= MOVES_COUNT) gTasks[taskId].data[3] = MOVES_COUNT - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 3) + if (gTasks[taskId].data[4] < 3) gTasks[taskId].data[4] += 1; } @@ -2583,12 +2529,11 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu IVs[4] = sDebugMonData->mon_iv_satk; IVs[5] = sDebugMonData->mon_iv_sdef; - //Nature if (nature == NUM_NATURES || nature == 0xFF) nature = Random() % NUM_NATURES; - //Shinyness + //Shininess if (isShiny == 1) { u32 personality; @@ -2608,21 +2553,9 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu else CreateMonWithNature(&mon, species, level, 32, nature); - //EVs/IVs + //IVs for (i = 0; i < NUM_STATS; i++) { - // ev - // if (evs[i] != 0xFF && evTotal < 510) - // { - // // only up to 510 evs - // if ((evTotal + evs[i]) > 510) - // evs[i] = (510 - evTotal); - - // evTotal += evs[i]; - // SetMonData(&mon, MON_DATA_HP_EV + i, &evs[i]); - // } - - // iv iv_val = IVs[i]; if (iv_val != 32 && iv_val != 0xFF) SetMonData(&mon, MON_DATA_HP_IV + i, &iv_val); @@ -2648,17 +2581,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu SetMonData(&mon, MON_DATA_ABILITY_NUM, &abilityNum); - //ball - // if (ball <= POKEBALL_COUNT) - // SetMonData(&mon, MON_DATA_POKEBALL, &ball); - - //item - // heldItem[0] = item; - // heldItem[1] = item >> 8; - // SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); - // give player the mon - //sentToPc = GiveMonToPlayer(&mon); SetMonData(&mon, MON_DATA_OT_NAME, gSaveBlock2Ptr->playerName); SetMonData(&mon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender); for (i = 0; i < PARTY_SIZE; i++) @@ -2805,26 +2728,26 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) { if (gMain.newKeys & DPAD_ANY) { - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > END_SE) + if (gTasks[taskId].data[3] > END_SE) gTasks[taskId].data[3] = END_SE; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 1) + if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } @@ -2882,26 +2805,26 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) { if (gMain.newKeys & DPAD_ANY) { - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > END_MUS) + if (gTasks[taskId].data[3] > END_MUS) gTasks[taskId].data[3] = END_MUS; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < START_MUS) + if (gTasks[taskId].data[3] < START_MUS) gTasks[taskId].data[3] = START_MUS; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if(gMain.newKeys & DPAD_RIGHT) + if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS-1) + if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } diff --git a/src/item_use.c b/src/item_use.c index a0b4233fff..cb85ae3e35 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -9,7 +9,6 @@ #include "bike.h" #include "coins.h" #include "data.h" -#include "debug.h" #include "event_data.h" #include "event_object_lock.h" #include "event_object_movement.h" diff --git a/src/trainer_see.c b/src/trainer_see.c index d44e5e46fb..b720a59d90 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -1,6 +1,5 @@ #include "global.h" #include "battle_setup.h" -#include "debug.h" #include "event_data.h" #include "event_object_movement.h" #include "field_effect.h" From 1287c3d2636a411a11ec96f32e7bd906c5a779aa Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sat, 3 Sep 2022 21:27:29 -0400 Subject: [PATCH 198/271] Fixed call to ItemIdToBattleMoveId --- src/debug.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/debug.c b/src/debug.c index 5d861640cd..f889ed5d29 100644 --- a/src/debug.c +++ b/src/debug.c @@ -33,6 +33,7 @@ #include "new_game.h" #include "overworld.h" #include "palette.h" +#include "party_menu.h" #include "pokedex.h" #include "pokemon.h" #include "pokemon_icon.h" From 7e9d243677d52df99bfac420f430b152e8ac0c22 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Sun, 4 Sep 2022 23:24:37 +0700 Subject: [PATCH 199/271] Tidying graphics/battle_anims --- .../backgrounds/{new => }/aeroblast.pal | 0 .../backgrounds/{new => }/aeroblast_map.bin | Bin .../backgrounds/{new => }/aeroblast_tiles.png | Bin .../backgrounds/{new => }/aura_sphere.pal | 0 .../{new => }/blackhole_eclipse.bin | Bin .../{new => }/blackhole_eclipse.png | Bin .../backgrounds/{new => }/bloom_doom.bin | 0 .../backgrounds/{new => }/bloom_doom.pal | 0 .../backgrounds/{new => }/bloom_doom.png | Bin .../backgrounds/{new => }/bolt_strike.bin | Bin .../backgrounds/{new => }/bolt_strike.pal | 0 .../backgrounds/{new => }/bolt_strike.png | Bin .../{new => }/clangorous_soulblaze.bin | 0 .../{new => }/clangorous_soulblaze.pal | 0 .../{new => }/clangorous_soulblaze.png | Bin .../backgrounds/{new => }/dark_void.bin | 0 .../backgrounds/{new => }/dark_void.pal | 0 .../backgrounds/{new => }/dynamax_cannon.pal | 0 .../{new => }/electric_terrain.bin | Bin .../{new => }/electric_terrain.pal | 0 .../{new => }/electric_terrain.png | Bin .../backgrounds/{new => }/fire1.bin | 0 .../backgrounds/{new => }/fire1.pal | 0 .../backgrounds/{new => }/fire1.png | Bin .../backgrounds/{new => }/fire2.pal | 0 .../backgrounds/{new => }/focus_blast.bin | 0 .../backgrounds/{new => }/focus_blast.pal | 0 .../backgrounds/{new => }/focus_blast.png | Bin .../backgrounds/{new => }/garbage_falls.pal | 0 .../backgrounds/{new => }/giga_impact.pal | 0 .../backgrounds/{new => }/giga_impact.png | Bin .../{new => }/giga_impact_contest.bin | 0 .../{new => }/giga_impact_opponent.bin | 0 .../{new => }/giga_impact_player.bin | Bin .../backgrounds/{new => }/grassy_terrain.bin | Bin .../backgrounds/{new => }/grassy_terrain.pal | 0 .../backgrounds/{new => }/grassy_terrain.png | Bin .../backgrounds/{new => }/gunk_shot.pal | 0 .../backgrounds/{new => }/hurricane.bin | Bin .../backgrounds/{new => }/hurricane.pal | 0 .../backgrounds/{new => }/hurricane.png | Bin .../backgrounds/{new => }/hydro_cannon.bin | Bin .../backgrounds/{new => }/hydro_cannon.pal | 0 .../backgrounds/{new => }/hydro_cannon.png | Bin .../backgrounds/{new => }/hydro_pump.bin | 0 .../backgrounds/{new => }/hydro_pump.pal | 0 .../backgrounds/{new => }/hydro_pump.png | Bin .../backgrounds/{new => }/hyper_beam.pal | 0 .../backgrounds/{new => }/hyperspace_fury.pal | 0 .../{new => }/inferno_overdrive.bin | 0 .../{new => }/inferno_overdrive.pal | 0 .../{new => }/inferno_overdrive.png | Bin .../backgrounds/{new => }/leaf_storm.bin | Bin .../backgrounds/{new => }/leaf_storm.pal | 0 .../backgrounds/{new => }/leaf_storm.png | Bin .../backgrounds/{new => }/magic_room.pal | 0 .../{new => }/malicious_moonsault.bin | 0 .../{new => }/malicious_moonsault.pal | 0 .../{new => }/malicious_moonsault.png | Bin .../backgrounds/{new => }/max_lightning.bin | Bin .../backgrounds/{new => }/max_lightning.pal | 0 .../backgrounds/{new => }/max_lightning.png | Bin .../backgrounds/{new => }/misty_terrain.bin | Bin .../backgrounds/{new => }/misty_terrain.pal | 0 .../backgrounds/{new => }/misty_terrain.png | Bin .../{new => }/neverending_nightmare.bin | Bin .../{new => }/neverending_nightmare.pal | 0 .../{new => }/neverending_nightmare.png | Bin .../backgrounds/new/tectonic_rage.bin | Bin 296 -> 0 bytes .../backgrounds/{new => }/nightmare.bin | Bin .../backgrounds/{new => }/nightmare.pal | 0 .../backgrounds/{new => }/nightmare.png | Bin .../backgrounds/{new => }/poison_falls.pal | 0 .../{new/psychic.pal => psychic_new.pal} | 0 .../backgrounds/{new => }/psychic_terrain.bin | Bin .../backgrounds/{new => }/psychic_terrain.pal | 0 .../backgrounds/{new => }/psychic_terrain.png | Bin .../backgrounds/{new => }/rock_wrecker.pal | 0 .../{new => }/shattered_psyche.bin | Bin .../{new => }/shattered_psyche.pal | 0 .../{new => }/shattered_psyche.png | Bin .../backgrounds/{new => }/sky_afternoon.pal | 0 .../backgrounds/{new => }/sky_day.bin | Bin .../backgrounds/{new => }/sky_day.pal | 0 .../backgrounds/{new => }/sky_day.png | Bin .../backgrounds/{new => }/sky_night.pal | 0 .../backgrounds/{new => }/sludge_wave.pal | 0 .../backgrounds/{new => }/snuggle_forever.bin | Bin .../backgrounds/{new => }/snuggle_forever.pal | 0 .../backgrounds/{new => }/snuggle_forever.png | Bin .../{new => }/soulstealing_7star_strike.bin | Bin .../{new => }/soulstealing_7star_strike.pal | 0 .../{new => }/soulstealing_7star_strike.png | Bin .../backgrounds/{new => }/spacial_rend.pal | 0 .../backgrounds/{new => }/spacial_rend.png | Bin .../{new/steel_beam_bg.pal => steel_beam.pal} | 0 .../backgrounds/{new => }/tectonic_rage.pal | 0 .../backgrounds/{new => }/trick_room.bin | Bin .../backgrounds/{new => }/trick_room.pal | 0 .../backgrounds/{new => }/trick_room.png | Bin .../backgrounds/{new => }/twinkle_tackle.bin | Bin .../backgrounds/{new => }/twinkle_tackle.pal | 0 .../backgrounds/{new => }/twinkle_tackle.png | Bin .../backgrounds/{new => }/water_pulse.bin | 0 .../backgrounds/{new => }/water_pulse.pal | 0 .../backgrounds/{new => }/water_pulse.png | Bin .../backgrounds/{new => }/waterfall.bin | 0 .../backgrounds/{new => }/waterfall.pal | 0 .../backgrounds/{new => }/waterfall.png | Bin .../backgrounds/{new => }/wonder_room.pal | 0 .../backgrounds/{new => }/zmove_activate.bin | 0 .../backgrounds/{new => }/zmove_activate.pal | 0 .../backgrounds/{new => }/zmove_activate.png | Bin .../backgrounds/{new => }/zmove_mountain.bin | Bin .../backgrounds/{new => }/zmove_mountain.pal | 0 .../backgrounds/{new => }/zmove_mountain.png | Bin .../sprites/{new => }/acupressure_finger.png | Bin .../sprites/{new => }/alpha_stone.png | Bin .../battle_anims/sprites/{new => }/anchor.png | Bin .../battle_anims/sprites/{new => }/apple.png | Bin .../battle_anims/sprites/{new => }/arrows.png | Bin .../sprites/{new => }/assurance_hand.png | Bin .../sprites/{new => }/aura_sphere.png | Bin .../sprites/{new => }/avalanche_rocks.pal | 0 .../sprites/{new => }/baton_pass_ball.png | Bin .../sprites/{new => }/berry_eaten.png | Bin .../sprites/{new => }/berry_normal.png | Bin .../sprites/{new => }/big_rock.png | Bin .../sprites/{new => }/blacephalon_head.png | Bin .../sprites/{new => }/blue_flare.pal | 0 .../battle_anims/sprites/{new => }/branch.png | Bin .../battle_anims/sprites/{new => }/brine.png | Bin .../battle_anims/sprites/{new => }/cacoon.png | Bin .../sprites/{new => }/chain_link.png | Bin .../battle_anims/sprites/{new => }/chop.png | Bin .../sprites/{new => }/confide.png | Bin .../sprites/{new => }/crafty_shield.png | Bin .../sprites/{new => }/curse_nail.png | Bin .../sprites/{new => }/draco_meteor.pal | 0 .../sprites/{new => }/dragon_pulse_ring.png | Bin .../sprites/{new => }/dreepy_missile.png | Bin .../battle_anims/sprites/{new => }/drill.png | Bin .../battle_anims/sprites/{new => }/embers.png | Bin .../sprites/{new => }/fairy_lock_chains.png | Bin .../sprites/{new => }/fishies.png | Bin .../battle_anims/sprites/{new => }/fly.png | Bin .../sprites/{new => }/fusion_flare.pal | 0 .../{new => }/garbage_poison_column.pal | 0 .../battle_anims/sprites/{new => }/gear.png | Bin .../{new => }/gigavolt_havoc_spear.png | Bin .../sprites/{new => }/golden_apple.png | Bin .../sprites/{new => }/green_drake.pal | 0 .../green_star.png => green_star_new.png} | Bin .../thrash.png => hands_and_feet_new.png} | Bin .../sprites/{new => }/heart_stamp.png | Bin .../battle_anims/sprites/{new => }/hexes.png | Bin .../sprites/{new => }/hoopa_hand.png | Bin .../sprites/{new => }/hoopa_ring.png | Bin .../{new/horn.png => horn_hit_new.png} | Bin .../sprites/{new => }/horn_leech.png | Bin .../sprites/{new => }/horseshoe_fist.png | Bin .../sprites/{new => }/hydro_pump.png | Bin .../sprites/{new => }/ice_rock.png | Bin .../{new/impact.pal => impact_new.pal} | 0 .../sprites/{new => }/large_spike.png | Bin .../battle_anims/sprites/{new => }/leaves.png | Bin .../sprites/{new => }/leech_seed.png | Bin .../sprites/{new => }/lightning_rain.png | Bin .../sprites/{new => }/mean_look.png | Bin .../sprites/{new => }/metal_bits.png | Bin .../sprites/{new => }/mud_bomb.png | Bin .../sprites/{new => }/mushroom.png | Bin .../sprites/{new => }/natural_gift_ring.pal | 0 .../sprites/{new => }/necrozma_star.png | Bin .../sprites/new/ability_pop_up.png | Bin 275 -> 0 bytes graphics/battle_anims/sprites/new/bee.png | Bin 317 -> 0 bytes .../battle_anims/sprites/new/energy_ball.png | Bin 409 -> 0 bytes .../sprites/new/flash_cannon_ball.png | Bin 257 -> 0 bytes .../battle_anims/sprites/new/poison_jab.png | Bin 194 -> 0 bytes .../battle_anims/sprites/new/power_gem.png | Bin 179 -> 0 bytes .../battle_anims/sprites/new/punishment.png | Bin 470 -> 0 bytes .../battle_anims/sprites/new/quick_guard.png | Bin 205 -> 0 bytes .../battle_anims/sprites/new/stealth_rock.png | Bin 395 -> 0 bytes .../battle_anims/sprites/new/stone_edge.png | Bin 326 -> 0 bytes .../battle_anims/sprites/new/water_gun.png | Bin 214 -> 0 bytes graphics/battle_anims/sprites/new/wood.png | Bin 881 -> 0 bytes .../sprites/{new => }/obstruct.png | Bin .../sprites/{new => }/omega_stone.png | Bin .../sprites/{new => }/pink_diamond.png | Bin .../sprites/{new => }/poison_column.png | Bin .../sprites/{new => }/poltergeist.pal | 0 .../sprites/{new => }/power_trick.png | Bin .../sprites/{new => }/purple_drake.png | Bin .../sprites/{new => }/razor_shell.png | Bin .../sprites/{new => }/rock_small.png | Bin .../sprites/{new/rocks.png => rocks_new.png} | Bin .../sprites/{new => }/shell_left.png | Bin .../sprites/{new => }/shell_right.png | Bin .../sprites/{new => }/spacial_rend_slices.pal | 0 .../{new/spikes.png => spikes_new.png} | Bin .../{new => }/spirit_shackle_arrow.png | Bin .../sprites/{new => }/steam_eruption.png | Bin .../sprites/{new => }/steamroller.png | Bin .../sprites/{new => }/steel_beam.pal | 0 .../sprites/{new => }/stone_pillar.png | Bin .../sprites/{new => }/straight_beam.png | Bin ...itute_back.png => substitute_back_new.png} | Bin ...ubstitute_front.png => substitute_new.png} | Bin .../sprites/{new => }/surf_new.pal | 0 .../sprites/{new/sword.png => sword_new.png} | Bin .../sprites/{new/teeth.png => teeth_new.png} | Bin .../sprites/{new => }/tornado.png | Bin .../sprites/{new => }/z_move_symbol.png | Bin src/graphics.c | 537 +++++++++--------- 214 files changed, 269 insertions(+), 268 deletions(-) rename graphics/battle_anims/backgrounds/{new => }/aeroblast.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/aeroblast_map.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/aeroblast_tiles.png (100%) rename graphics/battle_anims/backgrounds/{new => }/aura_sphere.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/blackhole_eclipse.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/blackhole_eclipse.png (100%) rename graphics/battle_anims/backgrounds/{new => }/bloom_doom.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/bloom_doom.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/bloom_doom.png (100%) rename graphics/battle_anims/backgrounds/{new => }/bolt_strike.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/bolt_strike.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/bolt_strike.png (100%) rename graphics/battle_anims/backgrounds/{new => }/clangorous_soulblaze.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/clangorous_soulblaze.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/clangorous_soulblaze.png (100%) rename graphics/battle_anims/backgrounds/{new => }/dark_void.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/dark_void.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/dynamax_cannon.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/electric_terrain.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/electric_terrain.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/electric_terrain.png (100%) rename graphics/battle_anims/backgrounds/{new => }/fire1.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/fire1.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/fire1.png (100%) rename graphics/battle_anims/backgrounds/{new => }/fire2.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/focus_blast.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/focus_blast.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/focus_blast.png (100%) rename graphics/battle_anims/backgrounds/{new => }/garbage_falls.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/giga_impact.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/giga_impact.png (100%) rename graphics/battle_anims/backgrounds/{new => }/giga_impact_contest.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/giga_impact_opponent.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/giga_impact_player.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/grassy_terrain.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/grassy_terrain.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/grassy_terrain.png (100%) rename graphics/battle_anims/backgrounds/{new => }/gunk_shot.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/hurricane.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/hurricane.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/hurricane.png (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_cannon.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_cannon.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_cannon.png (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_pump.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_pump.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/hydro_pump.png (100%) rename graphics/battle_anims/backgrounds/{new => }/hyper_beam.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/hyperspace_fury.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/inferno_overdrive.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/inferno_overdrive.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/inferno_overdrive.png (100%) rename graphics/battle_anims/backgrounds/{new => }/leaf_storm.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/leaf_storm.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/leaf_storm.png (100%) rename graphics/battle_anims/backgrounds/{new => }/magic_room.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/malicious_moonsault.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/malicious_moonsault.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/malicious_moonsault.png (100%) rename graphics/battle_anims/backgrounds/{new => }/max_lightning.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/max_lightning.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/max_lightning.png (100%) rename graphics/battle_anims/backgrounds/{new => }/misty_terrain.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/misty_terrain.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/misty_terrain.png (100%) rename graphics/battle_anims/backgrounds/{new => }/neverending_nightmare.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/neverending_nightmare.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/neverending_nightmare.png (100%) delete mode 100644 graphics/battle_anims/backgrounds/new/tectonic_rage.bin rename graphics/battle_anims/backgrounds/{new => }/nightmare.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/nightmare.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/nightmare.png (100%) rename graphics/battle_anims/backgrounds/{new => }/poison_falls.pal (100%) rename graphics/battle_anims/backgrounds/{new/psychic.pal => psychic_new.pal} (100%) rename graphics/battle_anims/backgrounds/{new => }/psychic_terrain.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/psychic_terrain.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/psychic_terrain.png (100%) rename graphics/battle_anims/backgrounds/{new => }/rock_wrecker.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/shattered_psyche.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/shattered_psyche.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/shattered_psyche.png (100%) rename graphics/battle_anims/backgrounds/{new => }/sky_afternoon.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/sky_day.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/sky_day.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/sky_day.png (100%) rename graphics/battle_anims/backgrounds/{new => }/sky_night.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/sludge_wave.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/snuggle_forever.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/snuggle_forever.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/snuggle_forever.png (100%) rename graphics/battle_anims/backgrounds/{new => }/soulstealing_7star_strike.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/soulstealing_7star_strike.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/soulstealing_7star_strike.png (100%) rename graphics/battle_anims/backgrounds/{new => }/spacial_rend.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/spacial_rend.png (100%) rename graphics/battle_anims/backgrounds/{new/steel_beam_bg.pal => steel_beam.pal} (100%) rename graphics/battle_anims/backgrounds/{new => }/tectonic_rage.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/trick_room.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/trick_room.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/trick_room.png (100%) rename graphics/battle_anims/backgrounds/{new => }/twinkle_tackle.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/twinkle_tackle.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/twinkle_tackle.png (100%) rename graphics/battle_anims/backgrounds/{new => }/water_pulse.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/water_pulse.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/water_pulse.png (100%) rename graphics/battle_anims/backgrounds/{new => }/waterfall.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/waterfall.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/waterfall.png (100%) rename graphics/battle_anims/backgrounds/{new => }/wonder_room.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_activate.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_activate.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_activate.png (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_mountain.bin (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_mountain.pal (100%) rename graphics/battle_anims/backgrounds/{new => }/zmove_mountain.png (100%) rename graphics/battle_anims/sprites/{new => }/acupressure_finger.png (100%) rename graphics/battle_anims/sprites/{new => }/alpha_stone.png (100%) rename graphics/battle_anims/sprites/{new => }/anchor.png (100%) rename graphics/battle_anims/sprites/{new => }/apple.png (100%) rename graphics/battle_anims/sprites/{new => }/arrows.png (100%) rename graphics/battle_anims/sprites/{new => }/assurance_hand.png (100%) rename graphics/battle_anims/sprites/{new => }/aura_sphere.png (100%) rename graphics/battle_anims/sprites/{new => }/avalanche_rocks.pal (100%) rename graphics/battle_anims/sprites/{new => }/baton_pass_ball.png (100%) rename graphics/battle_anims/sprites/{new => }/berry_eaten.png (100%) rename graphics/battle_anims/sprites/{new => }/berry_normal.png (100%) rename graphics/battle_anims/sprites/{new => }/big_rock.png (100%) rename graphics/battle_anims/sprites/{new => }/blacephalon_head.png (100%) rename graphics/battle_anims/sprites/{new => }/blue_flare.pal (100%) rename graphics/battle_anims/sprites/{new => }/branch.png (100%) rename graphics/battle_anims/sprites/{new => }/brine.png (100%) rename graphics/battle_anims/sprites/{new => }/cacoon.png (100%) rename graphics/battle_anims/sprites/{new => }/chain_link.png (100%) rename graphics/battle_anims/sprites/{new => }/chop.png (100%) rename graphics/battle_anims/sprites/{new => }/confide.png (100%) rename graphics/battle_anims/sprites/{new => }/crafty_shield.png (100%) rename graphics/battle_anims/sprites/{new => }/curse_nail.png (100%) rename graphics/battle_anims/sprites/{new => }/draco_meteor.pal (100%) rename graphics/battle_anims/sprites/{new => }/dragon_pulse_ring.png (100%) rename graphics/battle_anims/sprites/{new => }/dreepy_missile.png (100%) rename graphics/battle_anims/sprites/{new => }/drill.png (100%) rename graphics/battle_anims/sprites/{new => }/embers.png (100%) rename graphics/battle_anims/sprites/{new => }/fairy_lock_chains.png (100%) rename graphics/battle_anims/sprites/{new => }/fishies.png (100%) rename graphics/battle_anims/sprites/{new => }/fly.png (100%) rename graphics/battle_anims/sprites/{new => }/fusion_flare.pal (100%) rename graphics/battle_anims/sprites/{new => }/garbage_poison_column.pal (100%) rename graphics/battle_anims/sprites/{new => }/gear.png (100%) rename graphics/battle_anims/sprites/{new => }/gigavolt_havoc_spear.png (100%) rename graphics/battle_anims/sprites/{new => }/golden_apple.png (100%) rename graphics/battle_anims/sprites/{new => }/green_drake.pal (100%) rename graphics/battle_anims/sprites/{new/green_star.png => green_star_new.png} (100%) rename graphics/battle_anims/sprites/{new/thrash.png => hands_and_feet_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/heart_stamp.png (100%) rename graphics/battle_anims/sprites/{new => }/hexes.png (100%) rename graphics/battle_anims/sprites/{new => }/hoopa_hand.png (100%) rename graphics/battle_anims/sprites/{new => }/hoopa_ring.png (100%) rename graphics/battle_anims/sprites/{new/horn.png => horn_hit_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/horn_leech.png (100%) rename graphics/battle_anims/sprites/{new => }/horseshoe_fist.png (100%) rename graphics/battle_anims/sprites/{new => }/hydro_pump.png (100%) rename graphics/battle_anims/sprites/{new => }/ice_rock.png (100%) rename graphics/battle_anims/sprites/{new/impact.pal => impact_new.pal} (100%) rename graphics/battle_anims/sprites/{new => }/large_spike.png (100%) rename graphics/battle_anims/sprites/{new => }/leaves.png (100%) rename graphics/battle_anims/sprites/{new => }/leech_seed.png (100%) rename graphics/battle_anims/sprites/{new => }/lightning_rain.png (100%) rename graphics/battle_anims/sprites/{new => }/mean_look.png (100%) rename graphics/battle_anims/sprites/{new => }/metal_bits.png (100%) rename graphics/battle_anims/sprites/{new => }/mud_bomb.png (100%) rename graphics/battle_anims/sprites/{new => }/mushroom.png (100%) rename graphics/battle_anims/sprites/{new => }/natural_gift_ring.pal (100%) rename graphics/battle_anims/sprites/{new => }/necrozma_star.png (100%) delete mode 100644 graphics/battle_anims/sprites/new/ability_pop_up.png delete mode 100644 graphics/battle_anims/sprites/new/bee.png delete mode 100644 graphics/battle_anims/sprites/new/energy_ball.png delete mode 100644 graphics/battle_anims/sprites/new/flash_cannon_ball.png delete mode 100644 graphics/battle_anims/sprites/new/poison_jab.png delete mode 100644 graphics/battle_anims/sprites/new/power_gem.png delete mode 100644 graphics/battle_anims/sprites/new/punishment.png delete mode 100644 graphics/battle_anims/sprites/new/quick_guard.png delete mode 100644 graphics/battle_anims/sprites/new/stealth_rock.png delete mode 100644 graphics/battle_anims/sprites/new/stone_edge.png delete mode 100644 graphics/battle_anims/sprites/new/water_gun.png delete mode 100644 graphics/battle_anims/sprites/new/wood.png rename graphics/battle_anims/sprites/{new => }/obstruct.png (100%) rename graphics/battle_anims/sprites/{new => }/omega_stone.png (100%) rename graphics/battle_anims/sprites/{new => }/pink_diamond.png (100%) rename graphics/battle_anims/sprites/{new => }/poison_column.png (100%) rename graphics/battle_anims/sprites/{new => }/poltergeist.pal (100%) rename graphics/battle_anims/sprites/{new => }/power_trick.png (100%) rename graphics/battle_anims/sprites/{new => }/purple_drake.png (100%) rename graphics/battle_anims/sprites/{new => }/razor_shell.png (100%) rename graphics/battle_anims/sprites/{new => }/rock_small.png (100%) rename graphics/battle_anims/sprites/{new/rocks.png => rocks_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/shell_left.png (100%) rename graphics/battle_anims/sprites/{new => }/shell_right.png (100%) rename graphics/battle_anims/sprites/{new => }/spacial_rend_slices.pal (100%) rename graphics/battle_anims/sprites/{new/spikes.png => spikes_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/spirit_shackle_arrow.png (100%) rename graphics/battle_anims/sprites/{new => }/steam_eruption.png (100%) rename graphics/battle_anims/sprites/{new => }/steamroller.png (100%) rename graphics/battle_anims/sprites/{new => }/steel_beam.pal (100%) rename graphics/battle_anims/sprites/{new => }/stone_pillar.png (100%) rename graphics/battle_anims/sprites/{new => }/straight_beam.png (100%) rename graphics/battle_anims/sprites/{new/substitute_back.png => substitute_back_new.png} (100%) rename graphics/battle_anims/sprites/{new/substitute_front.png => substitute_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/surf_new.pal (100%) rename graphics/battle_anims/sprites/{new/sword.png => sword_new.png} (100%) rename graphics/battle_anims/sprites/{new/teeth.png => teeth_new.png} (100%) rename graphics/battle_anims/sprites/{new => }/tornado.png (100%) rename graphics/battle_anims/sprites/{new => }/z_move_symbol.png (100%) diff --git a/graphics/battle_anims/backgrounds/new/aeroblast.pal b/graphics/battle_anims/backgrounds/aeroblast.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/aeroblast.pal rename to graphics/battle_anims/backgrounds/aeroblast.pal diff --git a/graphics/battle_anims/backgrounds/new/aeroblast_map.bin b/graphics/battle_anims/backgrounds/aeroblast_map.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/aeroblast_map.bin rename to graphics/battle_anims/backgrounds/aeroblast_map.bin diff --git a/graphics/battle_anims/backgrounds/new/aeroblast_tiles.png b/graphics/battle_anims/backgrounds/aeroblast_tiles.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/aeroblast_tiles.png rename to graphics/battle_anims/backgrounds/aeroblast_tiles.png diff --git a/graphics/battle_anims/backgrounds/new/aura_sphere.pal b/graphics/battle_anims/backgrounds/aura_sphere.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/aura_sphere.pal rename to graphics/battle_anims/backgrounds/aura_sphere.pal diff --git a/graphics/battle_anims/backgrounds/new/blackhole_eclipse.bin b/graphics/battle_anims/backgrounds/blackhole_eclipse.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/blackhole_eclipse.bin rename to graphics/battle_anims/backgrounds/blackhole_eclipse.bin diff --git a/graphics/battle_anims/backgrounds/new/blackhole_eclipse.png b/graphics/battle_anims/backgrounds/blackhole_eclipse.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/blackhole_eclipse.png rename to graphics/battle_anims/backgrounds/blackhole_eclipse.png diff --git a/graphics/battle_anims/backgrounds/new/bloom_doom.bin b/graphics/battle_anims/backgrounds/bloom_doom.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/bloom_doom.bin rename to graphics/battle_anims/backgrounds/bloom_doom.bin diff --git a/graphics/battle_anims/backgrounds/new/bloom_doom.pal b/graphics/battle_anims/backgrounds/bloom_doom.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/bloom_doom.pal rename to graphics/battle_anims/backgrounds/bloom_doom.pal diff --git a/graphics/battle_anims/backgrounds/new/bloom_doom.png b/graphics/battle_anims/backgrounds/bloom_doom.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/bloom_doom.png rename to graphics/battle_anims/backgrounds/bloom_doom.png diff --git a/graphics/battle_anims/backgrounds/new/bolt_strike.bin b/graphics/battle_anims/backgrounds/bolt_strike.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/bolt_strike.bin rename to graphics/battle_anims/backgrounds/bolt_strike.bin diff --git a/graphics/battle_anims/backgrounds/new/bolt_strike.pal b/graphics/battle_anims/backgrounds/bolt_strike.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/bolt_strike.pal rename to graphics/battle_anims/backgrounds/bolt_strike.pal diff --git a/graphics/battle_anims/backgrounds/new/bolt_strike.png b/graphics/battle_anims/backgrounds/bolt_strike.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/bolt_strike.png rename to graphics/battle_anims/backgrounds/bolt_strike.png diff --git a/graphics/battle_anims/backgrounds/new/clangorous_soulblaze.bin b/graphics/battle_anims/backgrounds/clangorous_soulblaze.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/clangorous_soulblaze.bin rename to graphics/battle_anims/backgrounds/clangorous_soulblaze.bin diff --git a/graphics/battle_anims/backgrounds/new/clangorous_soulblaze.pal b/graphics/battle_anims/backgrounds/clangorous_soulblaze.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/clangorous_soulblaze.pal rename to graphics/battle_anims/backgrounds/clangorous_soulblaze.pal diff --git a/graphics/battle_anims/backgrounds/new/clangorous_soulblaze.png b/graphics/battle_anims/backgrounds/clangorous_soulblaze.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/clangorous_soulblaze.png rename to graphics/battle_anims/backgrounds/clangorous_soulblaze.png diff --git a/graphics/battle_anims/backgrounds/new/dark_void.bin b/graphics/battle_anims/backgrounds/dark_void.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/dark_void.bin rename to graphics/battle_anims/backgrounds/dark_void.bin diff --git a/graphics/battle_anims/backgrounds/new/dark_void.pal b/graphics/battle_anims/backgrounds/dark_void.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/dark_void.pal rename to graphics/battle_anims/backgrounds/dark_void.pal diff --git a/graphics/battle_anims/backgrounds/new/dynamax_cannon.pal b/graphics/battle_anims/backgrounds/dynamax_cannon.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/dynamax_cannon.pal rename to graphics/battle_anims/backgrounds/dynamax_cannon.pal diff --git a/graphics/battle_anims/backgrounds/new/electric_terrain.bin b/graphics/battle_anims/backgrounds/electric_terrain.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/electric_terrain.bin rename to graphics/battle_anims/backgrounds/electric_terrain.bin diff --git a/graphics/battle_anims/backgrounds/new/electric_terrain.pal b/graphics/battle_anims/backgrounds/electric_terrain.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/electric_terrain.pal rename to graphics/battle_anims/backgrounds/electric_terrain.pal diff --git a/graphics/battle_anims/backgrounds/new/electric_terrain.png b/graphics/battle_anims/backgrounds/electric_terrain.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/electric_terrain.png rename to graphics/battle_anims/backgrounds/electric_terrain.png diff --git a/graphics/battle_anims/backgrounds/new/fire1.bin b/graphics/battle_anims/backgrounds/fire1.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/fire1.bin rename to graphics/battle_anims/backgrounds/fire1.bin diff --git a/graphics/battle_anims/backgrounds/new/fire1.pal b/graphics/battle_anims/backgrounds/fire1.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/fire1.pal rename to graphics/battle_anims/backgrounds/fire1.pal diff --git a/graphics/battle_anims/backgrounds/new/fire1.png b/graphics/battle_anims/backgrounds/fire1.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/fire1.png rename to graphics/battle_anims/backgrounds/fire1.png diff --git a/graphics/battle_anims/backgrounds/new/fire2.pal b/graphics/battle_anims/backgrounds/fire2.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/fire2.pal rename to graphics/battle_anims/backgrounds/fire2.pal diff --git a/graphics/battle_anims/backgrounds/new/focus_blast.bin b/graphics/battle_anims/backgrounds/focus_blast.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/focus_blast.bin rename to graphics/battle_anims/backgrounds/focus_blast.bin diff --git a/graphics/battle_anims/backgrounds/new/focus_blast.pal b/graphics/battle_anims/backgrounds/focus_blast.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/focus_blast.pal rename to graphics/battle_anims/backgrounds/focus_blast.pal diff --git a/graphics/battle_anims/backgrounds/new/focus_blast.png b/graphics/battle_anims/backgrounds/focus_blast.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/focus_blast.png rename to graphics/battle_anims/backgrounds/focus_blast.png diff --git a/graphics/battle_anims/backgrounds/new/garbage_falls.pal b/graphics/battle_anims/backgrounds/garbage_falls.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/garbage_falls.pal rename to graphics/battle_anims/backgrounds/garbage_falls.pal diff --git a/graphics/battle_anims/backgrounds/new/giga_impact.pal b/graphics/battle_anims/backgrounds/giga_impact.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/giga_impact.pal rename to graphics/battle_anims/backgrounds/giga_impact.pal diff --git a/graphics/battle_anims/backgrounds/new/giga_impact.png b/graphics/battle_anims/backgrounds/giga_impact.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/giga_impact.png rename to graphics/battle_anims/backgrounds/giga_impact.png diff --git a/graphics/battle_anims/backgrounds/new/giga_impact_contest.bin b/graphics/battle_anims/backgrounds/giga_impact_contest.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/giga_impact_contest.bin rename to graphics/battle_anims/backgrounds/giga_impact_contest.bin diff --git a/graphics/battle_anims/backgrounds/new/giga_impact_opponent.bin b/graphics/battle_anims/backgrounds/giga_impact_opponent.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/giga_impact_opponent.bin rename to graphics/battle_anims/backgrounds/giga_impact_opponent.bin diff --git a/graphics/battle_anims/backgrounds/new/giga_impact_player.bin b/graphics/battle_anims/backgrounds/giga_impact_player.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/giga_impact_player.bin rename to graphics/battle_anims/backgrounds/giga_impact_player.bin diff --git a/graphics/battle_anims/backgrounds/new/grassy_terrain.bin b/graphics/battle_anims/backgrounds/grassy_terrain.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/grassy_terrain.bin rename to graphics/battle_anims/backgrounds/grassy_terrain.bin diff --git a/graphics/battle_anims/backgrounds/new/grassy_terrain.pal b/graphics/battle_anims/backgrounds/grassy_terrain.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/grassy_terrain.pal rename to graphics/battle_anims/backgrounds/grassy_terrain.pal diff --git a/graphics/battle_anims/backgrounds/new/grassy_terrain.png b/graphics/battle_anims/backgrounds/grassy_terrain.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/grassy_terrain.png rename to graphics/battle_anims/backgrounds/grassy_terrain.png diff --git a/graphics/battle_anims/backgrounds/new/gunk_shot.pal b/graphics/battle_anims/backgrounds/gunk_shot.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/gunk_shot.pal rename to graphics/battle_anims/backgrounds/gunk_shot.pal diff --git a/graphics/battle_anims/backgrounds/new/hurricane.bin b/graphics/battle_anims/backgrounds/hurricane.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/hurricane.bin rename to graphics/battle_anims/backgrounds/hurricane.bin diff --git a/graphics/battle_anims/backgrounds/new/hurricane.pal b/graphics/battle_anims/backgrounds/hurricane.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/hurricane.pal rename to graphics/battle_anims/backgrounds/hurricane.pal diff --git a/graphics/battle_anims/backgrounds/new/hurricane.png b/graphics/battle_anims/backgrounds/hurricane.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/hurricane.png rename to graphics/battle_anims/backgrounds/hurricane.png diff --git a/graphics/battle_anims/backgrounds/new/hydro_cannon.bin b/graphics/battle_anims/backgrounds/hydro_cannon.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_cannon.bin rename to graphics/battle_anims/backgrounds/hydro_cannon.bin diff --git a/graphics/battle_anims/backgrounds/new/hydro_cannon.pal b/graphics/battle_anims/backgrounds/hydro_cannon.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_cannon.pal rename to graphics/battle_anims/backgrounds/hydro_cannon.pal diff --git a/graphics/battle_anims/backgrounds/new/hydro_cannon.png b/graphics/battle_anims/backgrounds/hydro_cannon.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_cannon.png rename to graphics/battle_anims/backgrounds/hydro_cannon.png diff --git a/graphics/battle_anims/backgrounds/new/hydro_pump.bin b/graphics/battle_anims/backgrounds/hydro_pump.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_pump.bin rename to graphics/battle_anims/backgrounds/hydro_pump.bin diff --git a/graphics/battle_anims/backgrounds/new/hydro_pump.pal b/graphics/battle_anims/backgrounds/hydro_pump.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_pump.pal rename to graphics/battle_anims/backgrounds/hydro_pump.pal diff --git a/graphics/battle_anims/backgrounds/new/hydro_pump.png b/graphics/battle_anims/backgrounds/hydro_pump.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/hydro_pump.png rename to graphics/battle_anims/backgrounds/hydro_pump.png diff --git a/graphics/battle_anims/backgrounds/new/hyper_beam.pal b/graphics/battle_anims/backgrounds/hyper_beam.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/hyper_beam.pal rename to graphics/battle_anims/backgrounds/hyper_beam.pal diff --git a/graphics/battle_anims/backgrounds/new/hyperspace_fury.pal b/graphics/battle_anims/backgrounds/hyperspace_fury.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/hyperspace_fury.pal rename to graphics/battle_anims/backgrounds/hyperspace_fury.pal diff --git a/graphics/battle_anims/backgrounds/new/inferno_overdrive.bin b/graphics/battle_anims/backgrounds/inferno_overdrive.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/inferno_overdrive.bin rename to graphics/battle_anims/backgrounds/inferno_overdrive.bin diff --git a/graphics/battle_anims/backgrounds/new/inferno_overdrive.pal b/graphics/battle_anims/backgrounds/inferno_overdrive.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/inferno_overdrive.pal rename to graphics/battle_anims/backgrounds/inferno_overdrive.pal diff --git a/graphics/battle_anims/backgrounds/new/inferno_overdrive.png b/graphics/battle_anims/backgrounds/inferno_overdrive.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/inferno_overdrive.png rename to graphics/battle_anims/backgrounds/inferno_overdrive.png diff --git a/graphics/battle_anims/backgrounds/new/leaf_storm.bin b/graphics/battle_anims/backgrounds/leaf_storm.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/leaf_storm.bin rename to graphics/battle_anims/backgrounds/leaf_storm.bin diff --git a/graphics/battle_anims/backgrounds/new/leaf_storm.pal b/graphics/battle_anims/backgrounds/leaf_storm.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/leaf_storm.pal rename to graphics/battle_anims/backgrounds/leaf_storm.pal diff --git a/graphics/battle_anims/backgrounds/new/leaf_storm.png b/graphics/battle_anims/backgrounds/leaf_storm.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/leaf_storm.png rename to graphics/battle_anims/backgrounds/leaf_storm.png diff --git a/graphics/battle_anims/backgrounds/new/magic_room.pal b/graphics/battle_anims/backgrounds/magic_room.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/magic_room.pal rename to graphics/battle_anims/backgrounds/magic_room.pal diff --git a/graphics/battle_anims/backgrounds/new/malicious_moonsault.bin b/graphics/battle_anims/backgrounds/malicious_moonsault.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/malicious_moonsault.bin rename to graphics/battle_anims/backgrounds/malicious_moonsault.bin diff --git a/graphics/battle_anims/backgrounds/new/malicious_moonsault.pal b/graphics/battle_anims/backgrounds/malicious_moonsault.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/malicious_moonsault.pal rename to graphics/battle_anims/backgrounds/malicious_moonsault.pal diff --git a/graphics/battle_anims/backgrounds/new/malicious_moonsault.png b/graphics/battle_anims/backgrounds/malicious_moonsault.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/malicious_moonsault.png rename to graphics/battle_anims/backgrounds/malicious_moonsault.png diff --git a/graphics/battle_anims/backgrounds/new/max_lightning.bin b/graphics/battle_anims/backgrounds/max_lightning.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/max_lightning.bin rename to graphics/battle_anims/backgrounds/max_lightning.bin diff --git a/graphics/battle_anims/backgrounds/new/max_lightning.pal b/graphics/battle_anims/backgrounds/max_lightning.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/max_lightning.pal rename to graphics/battle_anims/backgrounds/max_lightning.pal diff --git a/graphics/battle_anims/backgrounds/new/max_lightning.png b/graphics/battle_anims/backgrounds/max_lightning.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/max_lightning.png rename to graphics/battle_anims/backgrounds/max_lightning.png diff --git a/graphics/battle_anims/backgrounds/new/misty_terrain.bin b/graphics/battle_anims/backgrounds/misty_terrain.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/misty_terrain.bin rename to graphics/battle_anims/backgrounds/misty_terrain.bin diff --git a/graphics/battle_anims/backgrounds/new/misty_terrain.pal b/graphics/battle_anims/backgrounds/misty_terrain.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/misty_terrain.pal rename to graphics/battle_anims/backgrounds/misty_terrain.pal diff --git a/graphics/battle_anims/backgrounds/new/misty_terrain.png b/graphics/battle_anims/backgrounds/misty_terrain.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/misty_terrain.png rename to graphics/battle_anims/backgrounds/misty_terrain.png diff --git a/graphics/battle_anims/backgrounds/new/neverending_nightmare.bin b/graphics/battle_anims/backgrounds/neverending_nightmare.bin similarity index 100% rename from graphics/battle_anims/backgrounds/new/neverending_nightmare.bin rename to graphics/battle_anims/backgrounds/neverending_nightmare.bin diff --git a/graphics/battle_anims/backgrounds/new/neverending_nightmare.pal b/graphics/battle_anims/backgrounds/neverending_nightmare.pal similarity index 100% rename from graphics/battle_anims/backgrounds/new/neverending_nightmare.pal rename to graphics/battle_anims/backgrounds/neverending_nightmare.pal diff --git a/graphics/battle_anims/backgrounds/new/neverending_nightmare.png b/graphics/battle_anims/backgrounds/neverending_nightmare.png similarity index 100% rename from graphics/battle_anims/backgrounds/new/neverending_nightmare.png rename to graphics/battle_anims/backgrounds/neverending_nightmare.png diff --git a/graphics/battle_anims/backgrounds/new/tectonic_rage.bin b/graphics/battle_anims/backgrounds/new/tectonic_rage.bin deleted file mode 100644 index 914a9deb9a21e551d801771755bfa9409d48c68a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmXAize@sP9EU&GtK8Q6zPG4by*H?vbb&c(^aT|cA!vPt;BM;|ai=(xDG0S>36AI9 zVzf2&C%CoRTFYDifOQ1V_V9c@VzmJeFxGvV$XN5Vwd=a%?RYhNUoE+kQaWHi#x8MV zEmBm5E-#@=b|RyU+H|7Kc49lvQ#6T24WeFZM${cISQLS#LD(Dx;Xy;NOW&^>X4sqH zo%OWn(s1ucLA%f%j)kpmx9lkLpo`Fjcfn9Eqm{pAh8up8Z&&eD!ONL$pY||QG%C3C zSgU+rO>)v1WFb{=CY|oMBo$caZ%95^L72MEaktF()}8K_KW5d&4I+y&nwBi#sPO*c~|VM5IgH zfMd2$z=B0y9*r+f1T>g0XmngVsZHKs#gxbFi@6fGE^%rEm?;ZfVfn;s@c6;miUn)T zIT#LEcHIzFuzAuG%c@kVWzC%s+%V-(s0fD!hndO(g%h0(O$QR!FznPhu!_O5F)6fR z&JlM}f#nN&0s_>f6N4W(X*^e$&KhBSPJw|Tm}5Dk)xBpbATM~j`njxgN@xNAFV|SY diff --git a/graphics/battle_anims/sprites/new/bee.png b/graphics/battle_anims/sprites/new/bee.png deleted file mode 100644 index 448935c10a426b59ab5eb9439ca6751329a9c767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0zf>0g&9bG&i&Q}qznRlLR@EDSn%wu-j4aIKYsk! zxN&1vR+f#84Nwvnux309GW3L}i(^Q|oVOEf`3@QIv~CWWn|R`!6Mq0ZU&6vQQ!lM3 z?wYbrbjjDRmCxLD?le?&%(Jupwz=0aWTWx<7q_|NCR%P#nz(WYgUU+_*D`_Kd-Pd0 z%1xdtvC>NWm5-^)>^DtvCCs0Wv9Rr$rx;Uzxx@DIOkEWPd)ki_Af#iq_$SsGalG;$I^UygYL9z;$6EI t=$!FmKRPx#1ZP1_K>z@;j|==^1poj5Fi=cXMWm991Zo5X(gXyu1O$o%{Qmq5`UC&~chHgk z0Bt+~Zj}IacL7l-0BsBbZU6yw0DS{qcK`qY32;bRa{vGi!vFvd!vV){sAK>D0P;yh zK~yNub&)}C!yphv2Z*|^V;_KEsq2Y9^|}#}Z$Q^o+;aaTbRdMfayuKucKhTt#VW*=Tsy7@*_0L!BN<5vF_SLeV_=PH>sh0D1QfG^P%XF!xe`JA}o0m}EO|3K+! zz;doF6p3gK*V;mn7$?=5EKRiZYYe+V?MJyEb}OQ9no2meApg1X00000NkvXXu0mjf D0#u|d diff --git a/graphics/battle_anims/sprites/new/flash_cannon_ball.png b/graphics/battle_anims/sprites/new/flash_cannon_ball.png deleted file mode 100644 index b08d1d39f4a2deb8450fb465793258d6db9499b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*Z(JOym;~A!Gi}EE?n5K zVM9SdK|(?TP!bn7*s&r7DA(iZ;uumfXX~Vmf`=7&TvxuB%iCnGaF3y~`N1vUE&n-w zdK_8)dHrXry}wT=SgN|4x`tHub3Ju%)_q{~^Rrm8{W-}A-E-^N-Ha2qRd3Jp=74DW~bv>&m;MQJPZu} W8~7IgR$ki%vd+`h&t;ucLK6Vw&^gcm diff --git a/graphics/battle_anims/sprites/new/power_gem.png b/graphics/battle_anims/sprites/new/power_gem.png deleted file mode 100644 index 5523bb8a7570bab7fbfdd46f16dcfb29fa32194a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU{h!V7{{8!B&z|8YuU)&g zb?esR;$rtl!P|g(?L1u^LpWw8Cmdk=k=Ro&zkn(KzB8-dz26Li0+U#||L#`N;1GIL xUmY0m@m=+X4uJ@kg>37%6Z!6>w8SPbFz{Q-b)VaPzz}E>gQu&X%Q~loCIFK{P)z^; diff --git a/graphics/battle_anims/sprites/new/punishment.png b/graphics/battle_anims/sprites/new/punishment.png deleted file mode 100644 index 9215b6ec07019d39cf52c78ec4efb33f40749251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^3P8Mog&9cBe^M+DqznRlLR^zI|7SZT@9kOJlUxiG zBM8>me#vHFU`+IMaSW-LvvgYEq!tApRzW=lV|4+4hI{|>w69(B`V}a=e470&7N$zI zmIcb+4bR;_Zs}GsCFq;*U6rYQt0sL_`>4dsv39c6J6*Mp3r~6pGb@R|RGZD%tB^GN z^zkM)f!GN#0z1|=r76#Ch+w?*s!_G#LH?7RxzocLtwcAaCtvSE}@?d=wF$`ugP8_nTIq z3EJ@ce~#(|uMhuy>iJWqMFVdQ&MBb@07pf*{r~^~ diff --git a/graphics/battle_anims/sprites/new/quick_guard.png b/graphics/battle_anims/sprites/new/quick_guard.png deleted file mode 100644 index 71d343eeb5a8f93b0a50cd832de74728bb9c2b6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*Z=?jYiepLC@4rsNC*fB zluka#CnN!s#07E|XG#I(B0OCjLn`KMz39l*V8G*YF{fyMj+%MKyZRQbgA&V{xPFz_ zE@>5-=%Z-c+FttM0|Un|9u5vD diff --git a/graphics/battle_anims/sprites/new/stealth_rock.png b/graphics/battle_anims/sprites/new/stealth_rock.png deleted file mode 100644 index 6ade3bb8797edee17a694e0c61ad21f15dc3e83c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmV;60d)R}P)T%~}0000mP)t-sI@TeC zb1_Of8Dm-@85tSQwPR9BAt4zErIbnl004VyIx#5_2nYysV<}@&DLOG3jtgKo0003N zNklNX7F!G5B8S8#raX%)&Q_~^0gC}!n;>Z|2CM5Nh@C}9 z;YkD!S&PF;Ft4y+VPTbPtSl0DcAIN%n*U=MX2x+=s@b!-fw(aEKs=^&8QPZ15@dvc zF_sXXS;Ep?!f2oE#2WAE5#xs%VLIZqL0$8hhQm+ErCHrb`DTxW&B9qzlP{ZFLW~Vg zgm|DFps=k0mI4Xe`oWU$hb30mgxL??EHzH6M{K_}ylU2V23^-KY1ljK+up36^!=|r z=1s=y{wbbpx=KwA?v*;A3_#gd0FeU1CICc)ONfA95QZ;sKG(S8G00a9pAThjkmqtv p!~Sh1GqbwLvMYPcFQzLm`~z^SVKrewrilOm002ovPDHLkV1k*3o{j(j diff --git a/graphics/battle_anims/sprites/new/stone_edge.png b/graphics/battle_anims/sprites/new/stone_edge.png deleted file mode 100644 index 8e27efb9a2c528fad7817d986e35864703d5cd9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmV-M0lEH(P)Or#cy)!AL82muq2R`1#<_0azp)_8C4J} zW1s_1(%ZBtyMYG;fl5ueve3ko>5dHn!t`Mw{L0aRtN@C_ecy?w8dS#4M5E5UV%&eu Y2WF&G=u-g_xc~qF07*qoM6N<$g3EG&EdT%j diff --git a/graphics/battle_anims/sprites/new/water_gun.png b/graphics/battle_anims/sprites/new/water_gun.png deleted file mode 100644 index 4f30b2133dcca00deb0874af741c321f3ec21d59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^aRPioT>mQ?N^ae1cqPk_P= zZc)xy?vy3WFAFAku!R^lM`UMId~}`AXl`Y7fURjwfQZAk5)lDbhP)CbyHbT!Z9vNy NJYD@<);T3K0RXhmR=@xN diff --git a/graphics/battle_anims/sprites/new/wood.png b/graphics/battle_anims/sprites/new/wood.png deleted file mode 100644 index 1b64a647f5ce0f878de260bac06bcdf5ecc0cbc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmV-%1CIQOP)BjU5Xax(!5TH#F}O<)gj#GtAz6|skSxs>!D|aqhYU@JO!4v(L?9`o zmdVo179HbBn+3)#ZigBKEz#0I3H>%bIkI&3LMa3~r1S`Z_v7B(y?g(AvJhxSh$c!i zLa@LlB!qV2+DGpS(06_$aIFepsQ5|)9gs7d0v{5$rAQ1PQV9eM6j(C~4CPoeNA(DR z#B(MDbYshN?4z>OevCmm0GTjwY^72MZi|3{58g{SB!wVgr6Q2hVWoofIJmMnz)~el zN`RGF(qn~mEUk8IA^-!9bZH^|&J>Mx^^0kmmjrw=o6~)>1cCWrWRAX`l$E``oPKYV zO~v~Tf`G2?Xw{%dQd!UbpKdo6q%zDhAM8#V3vjWS^|iiK%Uvo_v@QmngVFY3?y?mP z@xU$f+3v{#L{GbMd$go-un|S83eueevj}q0@3cLD!vd^!A)#&F%68DER`4EB?o4)` zrzuss+Rb_HB&0j^d*VAX2d0L(1F(tWJF@AZ8Z^2-ST0eiagOp~InH&(y^ncSVld`{ z6NZGAqHlo+-zYNpbHW~ryIK%v>*gLKfvh(RwV+kaSIyBr0jE-$wFv=drs+=E>HIO9 z+IiPmLyRu=(56z)Zj!zQs6dN74#L1TbD-LC_JK#mw$i5IsLxsqWI3a)#Af+|9`Uc>C`&3H_LfV>+R-vwJZ$E&_{im;`*4o|F{n4#S{MO$ z_-}v1D*9TVxV53S)}D{8NCWgancMOjcMvPuMBaL{{!#k{k;_KLriUb&00000NkvXX Hu0mjfT=bMR diff --git a/graphics/battle_anims/sprites/new/obstruct.png b/graphics/battle_anims/sprites/obstruct.png similarity index 100% rename from graphics/battle_anims/sprites/new/obstruct.png rename to graphics/battle_anims/sprites/obstruct.png diff --git a/graphics/battle_anims/sprites/new/omega_stone.png b/graphics/battle_anims/sprites/omega_stone.png similarity index 100% rename from graphics/battle_anims/sprites/new/omega_stone.png rename to graphics/battle_anims/sprites/omega_stone.png diff --git a/graphics/battle_anims/sprites/new/pink_diamond.png b/graphics/battle_anims/sprites/pink_diamond.png similarity index 100% rename from graphics/battle_anims/sprites/new/pink_diamond.png rename to graphics/battle_anims/sprites/pink_diamond.png diff --git a/graphics/battle_anims/sprites/new/poison_column.png b/graphics/battle_anims/sprites/poison_column.png similarity index 100% rename from graphics/battle_anims/sprites/new/poison_column.png rename to graphics/battle_anims/sprites/poison_column.png diff --git a/graphics/battle_anims/sprites/new/poltergeist.pal b/graphics/battle_anims/sprites/poltergeist.pal similarity index 100% rename from graphics/battle_anims/sprites/new/poltergeist.pal rename to graphics/battle_anims/sprites/poltergeist.pal diff --git a/graphics/battle_anims/sprites/new/power_trick.png b/graphics/battle_anims/sprites/power_trick.png similarity index 100% rename from graphics/battle_anims/sprites/new/power_trick.png rename to graphics/battle_anims/sprites/power_trick.png diff --git a/graphics/battle_anims/sprites/new/purple_drake.png b/graphics/battle_anims/sprites/purple_drake.png similarity index 100% rename from graphics/battle_anims/sprites/new/purple_drake.png rename to graphics/battle_anims/sprites/purple_drake.png diff --git a/graphics/battle_anims/sprites/new/razor_shell.png b/graphics/battle_anims/sprites/razor_shell.png similarity index 100% rename from graphics/battle_anims/sprites/new/razor_shell.png rename to graphics/battle_anims/sprites/razor_shell.png diff --git a/graphics/battle_anims/sprites/new/rock_small.png b/graphics/battle_anims/sprites/rock_small.png similarity index 100% rename from graphics/battle_anims/sprites/new/rock_small.png rename to graphics/battle_anims/sprites/rock_small.png diff --git a/graphics/battle_anims/sprites/new/rocks.png b/graphics/battle_anims/sprites/rocks_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/rocks.png rename to graphics/battle_anims/sprites/rocks_new.png diff --git a/graphics/battle_anims/sprites/new/shell_left.png b/graphics/battle_anims/sprites/shell_left.png similarity index 100% rename from graphics/battle_anims/sprites/new/shell_left.png rename to graphics/battle_anims/sprites/shell_left.png diff --git a/graphics/battle_anims/sprites/new/shell_right.png b/graphics/battle_anims/sprites/shell_right.png similarity index 100% rename from graphics/battle_anims/sprites/new/shell_right.png rename to graphics/battle_anims/sprites/shell_right.png diff --git a/graphics/battle_anims/sprites/new/spacial_rend_slices.pal b/graphics/battle_anims/sprites/spacial_rend_slices.pal similarity index 100% rename from graphics/battle_anims/sprites/new/spacial_rend_slices.pal rename to graphics/battle_anims/sprites/spacial_rend_slices.pal diff --git a/graphics/battle_anims/sprites/new/spikes.png b/graphics/battle_anims/sprites/spikes_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/spikes.png rename to graphics/battle_anims/sprites/spikes_new.png diff --git a/graphics/battle_anims/sprites/new/spirit_shackle_arrow.png b/graphics/battle_anims/sprites/spirit_shackle_arrow.png similarity index 100% rename from graphics/battle_anims/sprites/new/spirit_shackle_arrow.png rename to graphics/battle_anims/sprites/spirit_shackle_arrow.png diff --git a/graphics/battle_anims/sprites/new/steam_eruption.png b/graphics/battle_anims/sprites/steam_eruption.png similarity index 100% rename from graphics/battle_anims/sprites/new/steam_eruption.png rename to graphics/battle_anims/sprites/steam_eruption.png diff --git a/graphics/battle_anims/sprites/new/steamroller.png b/graphics/battle_anims/sprites/steamroller.png similarity index 100% rename from graphics/battle_anims/sprites/new/steamroller.png rename to graphics/battle_anims/sprites/steamroller.png diff --git a/graphics/battle_anims/sprites/new/steel_beam.pal b/graphics/battle_anims/sprites/steel_beam.pal similarity index 100% rename from graphics/battle_anims/sprites/new/steel_beam.pal rename to graphics/battle_anims/sprites/steel_beam.pal diff --git a/graphics/battle_anims/sprites/new/stone_pillar.png b/graphics/battle_anims/sprites/stone_pillar.png similarity index 100% rename from graphics/battle_anims/sprites/new/stone_pillar.png rename to graphics/battle_anims/sprites/stone_pillar.png diff --git a/graphics/battle_anims/sprites/new/straight_beam.png b/graphics/battle_anims/sprites/straight_beam.png similarity index 100% rename from graphics/battle_anims/sprites/new/straight_beam.png rename to graphics/battle_anims/sprites/straight_beam.png diff --git a/graphics/battle_anims/sprites/new/substitute_back.png b/graphics/battle_anims/sprites/substitute_back_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/substitute_back.png rename to graphics/battle_anims/sprites/substitute_back_new.png diff --git a/graphics/battle_anims/sprites/new/substitute_front.png b/graphics/battle_anims/sprites/substitute_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/substitute_front.png rename to graphics/battle_anims/sprites/substitute_new.png diff --git a/graphics/battle_anims/sprites/new/surf_new.pal b/graphics/battle_anims/sprites/surf_new.pal similarity index 100% rename from graphics/battle_anims/sprites/new/surf_new.pal rename to graphics/battle_anims/sprites/surf_new.pal diff --git a/graphics/battle_anims/sprites/new/sword.png b/graphics/battle_anims/sprites/sword_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/sword.png rename to graphics/battle_anims/sprites/sword_new.png diff --git a/graphics/battle_anims/sprites/new/teeth.png b/graphics/battle_anims/sprites/teeth_new.png similarity index 100% rename from graphics/battle_anims/sprites/new/teeth.png rename to graphics/battle_anims/sprites/teeth_new.png diff --git a/graphics/battle_anims/sprites/new/tornado.png b/graphics/battle_anims/sprites/tornado.png similarity index 100% rename from graphics/battle_anims/sprites/new/tornado.png rename to graphics/battle_anims/sprites/tornado.png diff --git a/graphics/battle_anims/sprites/new/z_move_symbol.png b/graphics/battle_anims/sprites/z_move_symbol.png similarity index 100% rename from graphics/battle_anims/sprites/new/z_move_symbol.png rename to graphics/battle_anims/sprites/z_move_symbol.png diff --git a/src/graphics.c b/src/graphics.c index 7ccd0d5799..4a795a8b3e 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -43,8 +43,8 @@ const u32 gBattleAnimSpriteGfx_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims const u32 gBattleAnimSpritePal_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.gbapal.lz"); const u32 gBattleAnimSpriteGfx_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.4bpp.lz"); -const u32 gBattleAnimSpritePal_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.gbapal.lz"); +const u32 gBattleAnimSpritePal_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.gbapal.lz"); const u32 gBattleAnimSpriteGfx_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.4bpp.lz"); const u32 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.gbapal.lz"); @@ -57,238 +57,240 @@ const u32 gBattleAnimSpritePal_Punishment[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpriteGfx_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.4bpp.lz"); const u32 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/new/acupressure_finger.4bpp.lz"); -const u32 gBattleAnimSpritePal_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/new/acupressure_finger.gbapal.lz"); +const u32 gBattleAnimSpritePal_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure_finger.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure_finger.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/new/alpha_stone.4bpp.lz"); -const u32 gBattleAnimSpritePal_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/new/alpha_stone.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.4bpp.lz"); +const u32 gBattleAnimSpritePal_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Anchor[] = INCBIN_U32("graphics/battle_anims/sprites/new/anchor.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_Anchor[] = INCBIN_U32("graphics/battle_anims/sprites/anchor.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/new/apple.4bpp.lz"); -const u32 gBattleAnimSpritePal_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/new/apple.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/apple.4bpp.lz"); +const u32 gBattleAnimSpritePal_Apple[] = INCBIN_U32("graphics/battle_anims/sprites/apple.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Arrows[] = INCBIN_U32("graphics/battle_anims/sprites/new/arrows.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_Arrows[] = INCBIN_U32("graphics/battle_anims/sprites/arrows.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/new/assurance_hand.4bpp.lz"); -const u32 gBattleAnimSpritePal_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/new/assurance_hand.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/assurance_hand.4bpp.lz"); +const u32 gBattleAnimSpritePal_AssuranceHand[] = INCBIN_U32("graphics/battle_anims/sprites/assurance_hand.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/new/aura_sphere.4bpp.lz"); -const u32 gBattleAnimSpritePal_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/new/aura_sphere.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/aura_sphere.4bpp.lz"); +const u32 gBattleAnimSpritePal_AuraSphere[] = INCBIN_U32("graphics/battle_anims/sprites/aura_sphere.gbapal.lz"); -const u32 gBattleAnimSpritePal_AvalancheRocks[] = INCBIN_U32("graphics/battle_anims/sprites/new/avalanche_rocks.gbapal.lz"); +const u32 gBattleAnimSpritePal_AvalancheRocks[] = INCBIN_U32("graphics/battle_anims/sprites/avalanche_rocks.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/new/baton_pass_ball.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/new/baton_pass_ball.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewPokeball[] = INCBIN_U32("graphics/battle_anims/sprites/baton_pass_ball.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/new/berry_eaten.4bpp.lz"); -const u32 gBattleAnimSpritePal_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/new/berry_eaten.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.4bpp.lz"); +const u32 gBattleAnimSpritePal_BerryEaten[] = INCBIN_U32("graphics/battle_anims/sprites/berry_eaten.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/new/berry_normal.4bpp.lz"); -const u32 gBattleAnimSpritePal_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/new/berry_normal.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/berry_normal.4bpp.lz"); +const u32 gBattleAnimSpritePal_BerryNormal[] = INCBIN_U32("graphics/battle_anims/sprites/berry_normal.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/new/big_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/new/big_rock.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/big_rock.4bpp.lz"); +const u32 gBattleAnimSpritePal_BigRock[] = INCBIN_U32("graphics/battle_anims/sprites/big_rock.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/new/blacephalon_head.4bpp.lz"); -const u32 gBattleAnimSpritePal_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/new/blacephalon_head.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.4bpp.lz"); +const u32 gBattleAnimSpritePal_BlacephalonHead[] = INCBIN_U32("graphics/battle_anims/sprites/blacephalon_head.gbapal.lz"); -const u32 gBattleAnimSpritePal_BlueFlare[] = INCBIN_U32("graphics/battle_anims/sprites/new/blue_flare.gbapal.lz"); +const u32 gBattleAnimSpritePal_BlueFlare[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flare.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/new/branch.4bpp.lz"); -const u32 gBattleAnimSpritePal_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/new/branch.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/branch.4bpp.lz"); +const u32 gBattleAnimSpritePal_Branch[] = INCBIN_U32("graphics/battle_anims/sprites/branch.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/new/brine.4bpp.lz"); -const u32 gBattleAnimSpritePal_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/new/brine.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/brine.4bpp.lz"); +const u32 gBattleAnimSpritePal_Brine[] = INCBIN_U32("graphics/battle_anims/sprites/brine.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/new/chain_link.4bpp.lz"); -const u32 gBattleAnimSpritePal_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/new/chain_link.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/chain_link.4bpp.lz"); +const u32 gBattleAnimSpritePal_ChainLink[] = INCBIN_U32("graphics/battle_anims/sprites/chain_link.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/new/chop.4bpp.lz"); -const u32 gBattleAnimSpritePal_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/new/chop.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/chop.4bpp.lz"); +const u32 gBattleAnimSpritePal_Chop[] = INCBIN_U32("graphics/battle_anims/sprites/chop.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/new/cacoon.4bpp.lz"); -const u32 gBattleAnimSpritePal_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/new/cacoon.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/cacoon.4bpp.lz"); +const u32 gBattleAnimSpritePal_Cacoon[] = INCBIN_U32("graphics/battle_anims/sprites/cacoon.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/new/confide.4bpp.lz"); -const u32 gBattleAnimSpritePal_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/new/confide.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/confide.4bpp.lz"); +const u32 gBattleAnimSpritePal_Confide[] = INCBIN_U32("graphics/battle_anims/sprites/confide.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/new/crafty_shield.4bpp.lz"); -const u32 gBattleAnimSpritePal_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/new/crafty_shield.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/crafty_shield.4bpp.lz"); +const u32 gBattleAnimSpritePal_CraftyShield[] = INCBIN_U32("graphics/battle_anims/sprites/crafty_shield.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/new/curse_nail.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/new/curse_nail.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/curse_nail.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewNail[] = INCBIN_U32("graphics/battle_anims/sprites/curse_nail.gbapal.lz"); -const u32 gBattleAnimSpritePal_DracoMeteor[] = INCBIN_U32("graphics/battle_anims/sprites/new/draco_meteor.gbapal.lz"); +const u32 gBattleAnimSpritePal_DracoMeteor[] = INCBIN_U32("graphics/battle_anims/sprites/draco_meteor.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/new/dragon_pulse_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/new/dragon_pulse_ring.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse_ring.4bpp.lz"); +const u32 gBattleAnimSpritePal_DragonPulseRing[] = INCBIN_U32("graphics/battle_anims/sprites/dragon_pulse_ring.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/new/dreepy_missile.4bpp.lz"); -const u32 gBattleAnimSpritePal_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/new/dreepy_missile.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile.4bpp.lz"); +const u32 gBattleAnimSpritePal_DreepyMissile[] = INCBIN_U32("graphics/battle_anims/sprites/dreepy_missile.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/new/drill.4bpp.lz"); -const u32 gBattleAnimSpritePal_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/new/drill.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/drill.4bpp.lz"); +const u32 gBattleAnimSpritePal_Drill[] = INCBIN_U32("graphics/battle_anims/sprites/drill.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/new/embers.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/new/embers.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/embers.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewEmbers[] = INCBIN_U32("graphics/battle_anims/sprites/embers.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_FairyLockChains[] = INCBIN_U32("graphics/battle_anims/sprites/new/fairy_lock_chains.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_FairyLockChains[] = INCBIN_U32("graphics/battle_anims/sprites/fairy_lock_chains.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/new/fishies.4bpp.lz"); -const u32 gBattleAnimSpritePal_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/new/fishies.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/fishies.4bpp.lz"); +const u32 gBattleAnimSpritePal_Fishies[] = INCBIN_U32("graphics/battle_anims/sprites/fishies.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/new/fly.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/new/fly.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/fly.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewFly[] = INCBIN_U32("graphics/battle_anims/sprites/fly.gbapal.lz"); -const u32 gBattleAnimSpritePal_FusionFlare[] = INCBIN_U32("graphics/battle_anims/sprites/new/fusion_flare.gbapal.lz"); +const u32 gBattleAnimSpritePal_FusionFlare[] = INCBIN_U32("graphics/battle_anims/sprites/fusion_flare.gbapal.lz"); -const u32 gBattleAnimSpritePal_GarbagePoisonPillar[] = INCBIN_U32("graphics/battle_anims/sprites/new/garbage_poison_column.gbapal.lz"); +const u32 gBattleAnimSpritePal_GarbagePoisonPillar[] = INCBIN_U32("graphics/battle_anims/sprites/garbage_poison_column.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/new/gear.4bpp.lz"); -const u32 gBattleAnimSpritePal_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/new/gear.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/gear.4bpp.lz"); +const u32 gBattleAnimSpritePal_Gear[] = INCBIN_U32("graphics/battle_anims/sprites/gear.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/new/gigavolt_havoc_spear.4bpp.lz"); -const u32 gBattleAnimSpritePal_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/new/gigavolt_havoc_spear.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/gigavolt_havoc_spear.4bpp.lz"); +const u32 gBattleAnimSpritePal_GigavoltHavocSpear[] = INCBIN_U32("graphics/battle_anims/sprites/gigavolt_havoc_spear.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/new/golden_apple.4bpp.lz"); -const u32 gBattleAnimSpritePal_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/new/golden_apple.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/golden_apple.4bpp.lz"); +const u32 gBattleAnimSpritePal_GoldenApple[] = INCBIN_U32("graphics/battle_anims/sprites/golden_apple.gbapal.lz"); -const u32 gBattleAnimSpritePal_GreenDrake[] = INCBIN_U32("graphics/battle_anims/sprites/new/green_drake.gbapal.lz"); +const u32 gBattleAnimSpritePal_GreenDrake[] = INCBIN_U32("graphics/battle_anims/sprites/green_drake.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/new/green_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/new/green_star.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewGreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/new/heart_stamp.4bpp.lz"); -const u32 gBattleAnimSpritePal_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/new/heart_stamp.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/heart_stamp.4bpp.lz"); +const u32 gBattleAnimSpritePal_HeartStamp[] = INCBIN_U32("graphics/battle_anims/sprites/heart_stamp.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/new/hexes.4bpp.lz"); -const u32 gBattleAnimSpritePal_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/new/hexes.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/hexes.4bpp.lz"); +const u32 gBattleAnimSpritePal_ZygardeHexes[] = INCBIN_U32("graphics/battle_anims/sprites/hexes.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/new/hoopa_hand.4bpp.lz"); -const u32 gBattleAnimSpritePal_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/new/hoopa_hand.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_hand.4bpp.lz"); +const u32 gBattleAnimSpritePal_HoopaHand[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_hand.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/new/hoopa_ring.4bpp.lz"); -const u32 gBattleAnimSpritePal_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/new/hoopa_ring.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_ring.4bpp.lz"); +const u32 gBattleAnimSpritePal_HoopaRing[] = INCBIN_U32("graphics/battle_anims/sprites/hoopa_ring.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/new/horn.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/new/horn.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewHornHit[] = INCBIN_U32("graphics/battle_anims/sprites/horn_hit_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/new/horn_leech.4bpp.lz"); -const u32 gBattleAnimSpritePal_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/new/horn_leech.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/horn_leech.4bpp.lz"); +const u32 gBattleAnimSpritePal_HornLeech[] = INCBIN_U32("graphics/battle_anims/sprites/horn_leech.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/new/horseshoe_fist.4bpp.lz"); -const u32 gBattleAnimSpritePal_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/new/horseshoe_fist.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/horseshoe_fist.4bpp.lz"); +const u32 gBattleAnimSpritePal_HorseshoeFist[] = INCBIN_U32("graphics/battle_anims/sprites/horseshoe_fist.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/new/hydro_pump.4bpp.lz"); -const u32 gBattleAnimSpritePal_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/new/hydro_pump.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/hydro_pump.4bpp.lz"); +const u32 gBattleAnimSpritePal_HydroPump[] = INCBIN_U32("graphics/battle_anims/sprites/hydro_pump.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/new/ice_rock.4bpp.lz"); -const u32 gBattleAnimSpritePal_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/new/ice_rock.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/ice_rock.4bpp.lz"); +const u32 gBattleAnimSpritePal_IceRock[] = INCBIN_U32("graphics/battle_anims/sprites/ice_rock.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/new/large_spike.4bpp.lz"); -const u32 gBattleAnimSpritePal_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/new/large_spike.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/large_spike.4bpp.lz"); +const u32 gBattleAnimSpritePal_LargeSpike[] = INCBIN_U32("graphics/battle_anims/sprites/large_spike.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/new/leaves.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/new/leaves.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaves.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewLeaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaves.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/new/leech_seed.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/new/leech_seed.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/leech_seed.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewLeechSeed[] = INCBIN_U32("graphics/battle_anims/sprites/leech_seed.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/new/lightning_rain.4bpp.lz"); -const u32 gBattleAnimSpritePal_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/new/lightning_rain.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_rain.4bpp.lz"); +const u32 gBattleAnimSpritePal_LightningRain[] = INCBIN_U32("graphics/battle_anims/sprites/lightning_rain.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/new/mean_look.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/new/mean_look.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/mean_look.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewEye[] = INCBIN_U32("graphics/battle_anims/sprites/mean_look.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_MetalBits[] = INCBIN_U32("graphics/battle_anims/sprites/new/metal_bits.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_MetalBits[] = INCBIN_U32("graphics/battle_anims/sprites/metal_bits.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/new/mud_bomb.4bpp.lz"); -const u32 gBattleAnimSpritePal_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/new/mud_bomb.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/mud_bomb.4bpp.lz"); +const u32 gBattleAnimSpritePal_MudBomb[] = INCBIN_U32("graphics/battle_anims/sprites/mud_bomb.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/new/mushroom.4bpp.lz"); -const u32 gBattleAnimSpritePal_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/new/mushroom.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/mushroom.4bpp.lz"); +const u32 gBattleAnimSpritePal_Mushroom[] = INCBIN_U32("graphics/battle_anims/sprites/mushroom.gbapal.lz"); -const u32 gBattleAnimSpritePal_NaturalGiftRing[] = INCBIN_U32("graphics/battle_anims/sprites/new/natural_gift_ring.gbapal.lz"); +const u32 gBattleAnimSpritePal_NaturalGiftRing[] = INCBIN_U32("graphics/battle_anims/sprites/natural_gift_ring.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/new/necrozma_star.4bpp.lz"); -const u32 gBattleAnimSpritePal_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/new/necrozma_star.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/necrozma_star.4bpp.lz"); +const u32 gBattleAnimSpritePal_NecrozmaStar[] = INCBIN_U32("graphics/battle_anims/sprites/necrozma_star.gbapal.lz"); -const u32 gBattleAnimSpritePal_NewImpact[] = INCBIN_U32("graphics/battle_anims/sprites/new/impact.gbapal.lz"); +const u32 gBattleAnimSpritePal_NewImpact[] = INCBIN_U32("graphics/battle_anims/sprites/impact_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/new/obstruct.4bpp.lz"); -const u32 gBattleAnimSpritePal_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/new/obstruct.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/obstruct.4bpp.lz"); +const u32 gBattleAnimSpritePal_Obstruct[] = INCBIN_U32("graphics/battle_anims/sprites/obstruct.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/new/omega_stone.4bpp.lz"); -const u32 gBattleAnimSpritePal_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/new/omega_stone.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/omega_stone.4bpp.lz"); +const u32 gBattleAnimSpritePal_OmegaStone[] = INCBIN_U32("graphics/battle_anims/sprites/omega_stone.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/new/pink_diamond.4bpp.lz"); -const u32 gBattleAnimSpritePal_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/new/pink_diamond.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/pink_diamond.4bpp.lz"); +const u32 gBattleAnimSpritePal_PinkDiamond[] = INCBIN_U32("graphics/battle_anims/sprites/pink_diamond.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/new/poison_column.4bpp.lz"); -const u32 gBattleAnimSpritePal_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/new/poison_column.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/poison_column.4bpp.lz"); +const u32 gBattleAnimSpritePal_PoisonColumn[] = INCBIN_U32("graphics/battle_anims/sprites/poison_column.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/new/power_trick.4bpp.lz"); -const u32 gBattleAnimSpritePal_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/new/power_trick.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.4bpp.lz"); +const u32 gBattleAnimSpritePal_PowerTrick[] = INCBIN_U32("graphics/battle_anims/sprites/power_trick.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/new/purple_drake.4bpp.lz"); -const u32 gBattleAnimSpritePal_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/new/purple_drake.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.4bpp.lz"); +const u32 gBattleAnimSpritePal_PurpleDrake[] = INCBIN_U32("graphics/battle_anims/sprites/purple_drake.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/new/razor_shell.4bpp.lz"); -const u32 gBattleAnimSpritePal_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/new/razor_shell.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.4bpp.lz"); +const u32 gBattleAnimSpritePal_RazorShell[] = INCBIN_U32("graphics/battle_anims/sprites/razor_shell.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_RocksSmall[] = INCBIN_U32("graphics/battle_anims/sprites/new/rock_small.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_RocksSmall[] = INCBIN_U32("graphics/battle_anims/sprites/rock_small.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/new/rocks.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/new/rocks.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewRocks[] = INCBIN_U32("graphics/battle_anims/sprites/rocks_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/new/shell_left.4bpp.lz"); -const u32 gBattleAnimSpritePal_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/new/shell_left.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/shell_left.4bpp.lz"); +const u32 gBattleAnimSpritePal_ShellLeft[] = INCBIN_U32("graphics/battle_anims/sprites/shell_left.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_ShellRight[] = INCBIN_U32("graphics/battle_anims/sprites/new/shell_right.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_ShellRight[] = INCBIN_U32("graphics/battle_anims/sprites/shell_right.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpacialRendSlices[] = INCBIN_U32("graphics/battle_anims/sprites/new/spacial_rend_slices.gbapal.lz"); +const u32 gBattleAnimSpritePal_SpacialRendSlices[] = INCBIN_U32("graphics/battle_anims/sprites/spacial_rend_slices.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/new/spikes.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/new/spikes.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/spikes_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/new/spirit_shackle_arrow.4bpp.lz"); -const u32 gBattleAnimSpritePal_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/new/spirit_shackle_arrow.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/spirit_shackle_arrow.4bpp.lz"); +const u32 gBattleAnimSpritePal_SpiritShackleArrow[] = INCBIN_U32("graphics/battle_anims/sprites/spirit_shackle_arrow.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/new/steam_eruption.4bpp.lz"); -const u32 gBattleAnimSpritePal_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/new/steam_eruption.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/steam_eruption.4bpp.lz"); +const u32 gBattleAnimSpritePal_SteamEruption[] = INCBIN_U32("graphics/battle_anims/sprites/steam_eruption.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/new/steamroller.4bpp.lz"); -const u32 gBattleAnimSpritePal_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/new/steamroller.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/steamroller.4bpp.lz"); +const u32 gBattleAnimSpritePal_Steamroller[] = INCBIN_U32("graphics/battle_anims/sprites/steamroller.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/new/stone_pillar.4bpp.lz"); -const u32 gBattleAnimSpritePal_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/new/stone_pillar.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/stone_pillar.4bpp.lz"); +const u32 gBattleAnimSpritePal_StonePillar[] = INCBIN_U32("graphics/battle_anims/sprites/stone_pillar.gbapal.lz"); -const u32 gBattleAnimSpritePal_Poltergeist[] = INCBIN_U32("graphics/battle_anims/sprites/new/poltergeist.gbapal.lz"); +const u32 gBattleAnimSpritePal_Poltergeist[] = INCBIN_U32("graphics/battle_anims/sprites/poltergeist.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/new/straight_beam.4bpp.lz"); -const u32 gBattleAnimSpritePal_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/new/straight_beam.gbapal.lz"); +const u32 gBattleAnimSpritePal_SteelBeam[] = INCBIN_U32("graphics/battle_anims/sprites/steel_beam.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_SubstituteBack[] = INCBIN_U32("graphics/battle_anims/sprites/new/substitute_back.4bpp.lz"); -const u32 gBattleAnimSpriteGfx_NewSubstituteFront[] = INCBIN_U32("graphics/battle_anims/sprites/new/substitute_front.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewSubstituteFront[] = INCBIN_U32("graphics/battle_anims/sprites/new/substitute_front.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/straight_beam.4bpp.lz"); +const u32 gBattleAnimSpritePal_StraightBeam[] = INCBIN_U32("graphics/battle_anims/sprites/straight_beam.gbapal.lz"); -const u32 gBattleAnimSpritePal_NewSurf[] = INCBIN_U32("graphics/battle_anims/sprites/new/surf_new.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_SubstituteBack[] = INCBIN_U32("graphics/battle_anims/sprites/substitute_back_new.4bpp.lz"); +const u32 gBattleAnimSpriteGfx_NewSubstituteFront[] = INCBIN_U32("graphics/battle_anims/sprites/substitute_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewSubstituteFront[] = INCBIN_U32("graphics/battle_anims/sprites/substitute_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/new/sword.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/new/sword.gbapal.lz"); +const u32 gBattleAnimSpritePal_NewSurf[] = INCBIN_U32("graphics/battle_anims/sprites/surf_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/new/teeth.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/new/teeth.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/sword_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewSword[] = INCBIN_U32("graphics/battle_anims/sprites/sword_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/new/thrash.4bpp.lz"); -const u32 gBattleAnimSpritePal_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/new/thrash.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewTeeth[] = INCBIN_U32("graphics/battle_anims/sprites/teeth_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/new/tornado.4bpp.lz"); -const u32 gBattleAnimSpritePal_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/new/tornado.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet_new.4bpp.lz"); +const u32 gBattleAnimSpritePal_NewHandsAndFeet[] = INCBIN_U32("graphics/battle_anims/sprites/hands_and_feet_new.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/new/z_move_symbol.4bpp.lz"); -const u32 gBattleAnimSpritePal_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/new/z_move_symbol.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/tornado.4bpp.lz"); +const u32 gBattleAnimSpritePal_Tornado[] = INCBIN_U32("graphics/battle_anims/sprites/tornado.gbapal.lz"); + +const u32 gBattleAnimSpriteGfx_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/z_move_symbol.4bpp.lz"); +const u32 gBattleAnimSpritePal_ZMoveSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/z_move_symbol.gbapal.lz"); // Battle anims @@ -1379,172 +1381,171 @@ const u32 gBattleAnimBgPalette_MagmaStorm[] = INCBIN_U32("graphics/battle_anims/ //new battle bgs -const u32 gBattleAnimBgImage_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.4bpp.lz"); -const u32 gBattleAnimBgPalette_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.gbapal.lz"); -const u32 gBattleAnimBgTilemap_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hurricane.bin.lz"); +const u32 gBattleAnimBgImage_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.4bpp.lz"); +const u32 gBattleAnimBgPalette_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Hurricane[] = INCBIN_U32("graphics/battle_anims/backgrounds/hurricane.bin.lz"); -const u32 gBattleAnimBgPalette_RockWrecker[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/rock_wrecker.gbapal.lz"); +const u32 gBattleAnimBgPalette_RockWrecker[] = INCBIN_U32("graphics/battle_anims/backgrounds/rock_wrecker.gbapal.lz"); -const u32 gBattleAnimBgTilemap_GigaImpactPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/giga_impact_player.bin.lz"); -const u32 gBattleAnimBgTilemap_GigaImpactOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/giga_impact_opponent.bin.lz"); -const u32 gBattleAnimBgTilemap_GigaImpactContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/giga_impact_contest.bin.lz"); -const u32 gBattleAnimBgImage_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/giga_impact.4bpp.lz"); -const u32 gBattleAnimBgPalette_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/giga_impact.gbapal.lz"); +const u32 gBattleAnimBgTilemap_GigaImpactPlayer[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_player.bin.lz"); +const u32 gBattleAnimBgTilemap_GigaImpactOpponent[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_opponent.bin.lz"); +const u32 gBattleAnimBgTilemap_GigaImpactContest[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact_contest.bin.lz"); +const u32 gBattleAnimBgImage_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact.4bpp.lz"); +const u32 gBattleAnimBgPalette_GigaImpact[] = INCBIN_U32("graphics/battle_anims/backgrounds/giga_impact.gbapal.lz"); -const u32 gBattleAnimBgImage_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/spacial_rend.4bpp.lz"); -const u32 gBattleAnimBgPalette_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/spacial_rend.gbapal.lz"); +const u32 gBattleAnimBgImage_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend.4bpp.lz"); +const u32 gBattleAnimBgPalette_SpacialRend[] = INCBIN_U32("graphics/battle_anims/backgrounds/spacial_rend.gbapal.lz"); -const u32 gBattleAnimBgPalette_SludgeWave[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sludge_wave.gbapal.lz"); +const u32 gBattleAnimBgPalette_SludgeWave[] = INCBIN_U32("graphics/battle_anims/backgrounds/sludge_wave.gbapal.lz"); -const u32 gBattleAnimBgImage_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/aeroblast_tiles.4bpp.lz"); -const u32 gBattleAnimBgPalette_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/aeroblast.gbapal.lz"); -const u32 gBattleAnimBgTilemap_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/aeroblast_map.bin.lz"); +const u32 gBattleAnimBgImage_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast_tiles.4bpp.lz"); +const u32 gBattleAnimBgPalette_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Aeroblast[] = INCBIN_U32("graphics/battle_anims/backgrounds/aeroblast_map.bin.lz"); -const u32 gBattleAnimBgPalette_AuraSphere[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/aura_sphere.gbapal.lz"); +const u32 gBattleAnimBgPalette_AuraSphere[] = INCBIN_U32("graphics/battle_anims/backgrounds/aura_sphere.gbapal.lz"); -const u32 gBattleAnimBgImage_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/blackhole_eclipse.4bpp.lz"); -const u32 gBattleAnimBgPalette_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/blackhole_eclipse.gbapal.lz"); -const u32 gBattleAnimBgTilemap_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/blackhole_eclipse.bin.lz"); +const u32 gBattleAnimBgImage_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.4bpp.lz"); +const u32 gBattleAnimBgPalette_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.gbapal.lz"); +const u32 gBattleAnimBgTilemap_BlackholeEclipse[] = INCBIN_U32("graphics/battle_anims/backgrounds/blackhole_eclipse.bin.lz"); -const u32 gBattleAnimBgImage_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bloom_doom.4bpp.lz"); -const u32 gBattleAnimBgPalette_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bloom_doom.gbapal.lz"); -const u32 gBattleAnimBgTilemap_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bloom_doom.bin.lz"); +const u32 gBattleAnimBgImage_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.4bpp.lz"); +const u32 gBattleAnimBgPalette_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.gbapal.lz"); +const u32 gBattleAnimBgTilemap_BloomDoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/bloom_doom.bin.lz"); -const u32 gBattleAnimBgImage_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bolt_strike.4bpp.lz"); -const u32 gBattleAnimBgPalette_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bolt_strike.gbapal.lz"); -const u32 gBattleAnimBgTilemap_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/bolt_strike.bin.lz"); +const u32 gBattleAnimBgImage_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.4bpp.lz"); +const u32 gBattleAnimBgPalette_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.gbapal.lz"); +const u32 gBattleAnimBgTilemap_BoltStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/bolt_strike.bin.lz"); -const u32 gBattleAnimBgImage_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/clangorous_soulblaze.4bpp.lz"); -const u32 gBattleAnimBgPalette_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/clangorous_soulblaze.gbapal.lz"); -const u32 gBattleAnimBgTilemap_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/clangorous_soulblaze.bin.lz"); +const u32 gBattleAnimBgImage_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.4bpp.lz"); +const u32 gBattleAnimBgPalette_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.gbapal.lz"); +const u32 gBattleAnimBgTilemap_ClangorousSoulblaze[] = INCBIN_U32("graphics/battle_anims/backgrounds/clangorous_soulblaze.bin.lz"); -const u32 gBattleAnimBgPalette_DynamaxCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dynamax_cannon.gbapal.lz"); +const u32 gBattleAnimBgPalette_DynamaxCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/dynamax_cannon.gbapal.lz"); -const u32 gBattleAnimBgImage_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/electric_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/electric_terrain.gbapal.lz"); -const u32 gBattleAnimBgTilemap_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/electric_terrain.bin.lz"); +const u32 gBattleAnimBgImage_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.4bpp.lz"); +const u32 gBattleAnimBgPalette_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.gbapal.lz"); +const u32 gBattleAnimBgTilemap_ElectricTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/electric_terrain.bin.lz"); -const u32 gBattleAnimBgImage_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/fire1.4bpp.lz"); -const u32 gBattleAnimBgPalette_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/fire1.gbapal.lz"); -const u32 gBattleAnimBgTilemap_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/fire1.bin.lz"); +const u32 gBattleAnimBgImage_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.4bpp.lz"); +const u32 gBattleAnimBgPalette_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Fire1[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire1.bin.lz"); -const u32 gBattleAnimBgPalette_Fire2[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/fire2.gbapal.lz"); +const u32 gBattleAnimBgPalette_Fire2[] = INCBIN_U32("graphics/battle_anims/backgrounds/fire2.gbapal.lz"); -const u32 gBattleAnimBgImage_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/focus_blast.4bpp.lz"); -const u32 gBattleAnimBgPalette_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/focus_blast.gbapal.lz"); -const u32 gBattleAnimBgTilemap_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/focus_blast.bin.lz"); +const u32 gBattleAnimBgImage_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.4bpp.lz"); +const u32 gBattleAnimBgPalette_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.gbapal.lz"); +const u32 gBattleAnimBgTilemap_FocusBlast[] = INCBIN_U32("graphics/battle_anims/backgrounds/focus_blast.bin.lz"); -const u32 gBattleAnimBgPalette_GarbageFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/garbage_falls.gbapal.lz"); +const u32 gBattleAnimBgPalette_GarbageFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/garbage_falls.gbapal.lz"); -const u32 gBattleAnimBgImage_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/grassy_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/grassy_terrain.gbapal.lz"); -const u32 gBattleAnimBgTilemap_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/grassy_terrain.bin.lz"); +const u32 gBattleAnimBgImage_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.4bpp.lz"); +const u32 gBattleAnimBgPalette_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.gbapal.lz"); +const u32 gBattleAnimBgTilemap_GrassyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/grassy_terrain.bin.lz"); -const u32 gBattleAnimBgPalette_GunkShot[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/gunk_shot.gbapal.lz"); +const u32 gBattleAnimBgPalette_GunkShot[] = INCBIN_U32("graphics/battle_anims/backgrounds/gunk_shot.gbapal.lz"); -const u32 gBattleAnimBgImage_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_cannon.4bpp.lz"); -const u32 gBattleAnimBgPalette_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_cannon.gbapal.lz"); -const u32 gBattleAnimBgTilemap_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_cannon.bin.lz"); +const u32 gBattleAnimBgImage_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.4bpp.lz"); +const u32 gBattleAnimBgPalette_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.gbapal.lz"); +const u32 gBattleAnimBgTilemap_HydroCannon[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_cannon.bin.lz"); -const u32 gBattleAnimBgImage_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_pump.4bpp.lz"); -const u32 gBattleAnimBgPalette_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_pump.gbapal.lz"); -const u32 gBattleAnimBgTilemap_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hydro_pump.bin.lz"); +const u32 gBattleAnimBgImage_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.4bpp.lz"); +const u32 gBattleAnimBgPalette_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.gbapal.lz"); +const u32 gBattleAnimBgTilemap_HydroPump[] = INCBIN_U32("graphics/battle_anims/backgrounds/hydro_pump.bin.lz"); -const u32 gBattleAnimBgPalette_HyperBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hyper_beam.gbapal.lz"); +const u32 gBattleAnimBgPalette_HyperBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/hyper_beam.gbapal.lz"); -const u32 gBattleAnimBgPalette_HyperspaceFury[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/hyperspace_fury.gbapal.lz"); +const u32 gBattleAnimBgPalette_HyperspaceFury[] = INCBIN_U32("graphics/battle_anims/backgrounds/hyperspace_fury.gbapal.lz"); -const u32 gBattleAnimBgImage_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/inferno_overdrive.4bpp.lz"); -const u32 gBattleAnimBgPalette_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/inferno_overdrive.gbapal.lz"); -const u32 gBattleAnimBgTilemap_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/inferno_overdrive.bin.lz"); +const u32 gBattleAnimBgImage_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.4bpp.lz"); +const u32 gBattleAnimBgPalette_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.gbapal.lz"); +const u32 gBattleAnimBgTilemap_InfernoOverdrive[] = INCBIN_U32("graphics/battle_anims/backgrounds/inferno_overdrive.bin.lz"); -const u32 gBattleAnimBgImage_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/leaf_storm.4bpp.lz"); -const u32 gBattleAnimBgPalette_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/leaf_storm.gbapal.lz"); -const u32 gBattleAnimBgTilemap_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/leaf_storm.bin.lz"); +const u32 gBattleAnimBgImage_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.4bpp.lz"); +const u32 gBattleAnimBgPalette_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.gbapal.lz"); +const u32 gBattleAnimBgTilemap_LeafStorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/leaf_storm.bin.lz"); -const u32 gBattleAnimBgImage_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.4bpp.lz"); -const u32 gBattleAnimBgPalette_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.gbapal.lz"); -const u32 gBattleAnimBgTilemap_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/malicious_moonsault.bin.lz"); +const u32 gBattleAnimBgImage_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.4bpp.lz"); +const u32 gBattleAnimBgPalette_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.gbapal.lz"); +const u32 gBattleAnimBgTilemap_MaliciousMoonsault[] = INCBIN_U32("graphics/battle_anims/backgrounds/malicious_moonsault.bin.lz"); -const u32 gBattleAnimBgImage_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/max_lightning.4bpp.lz"); -const u32 gBattleAnimBgPalette_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/max_lightning.gbapal.lz"); -const u32 gBattleAnimBgTilemap_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/max_lightning.bin.lz"); +const u32 gBattleAnimBgImage_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.4bpp.lz"); +const u32 gBattleAnimBgPalette_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.gbapal.lz"); +const u32 gBattleAnimBgTilemap_MaxLightning[] = INCBIN_U32("graphics/battle_anims/backgrounds/max_lightning.bin.lz"); -const u32 gBattleAnimBgImage_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/misty_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/misty_terrain.gbapal.lz"); -const u32 gBattleAnimBgTilemap_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/misty_terrain.bin.lz"); +const u32 gBattleAnimBgImage_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.4bpp.lz"); +const u32 gBattleAnimBgPalette_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.gbapal.lz"); +const u32 gBattleAnimBgTilemap_MistyTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/misty_terrain.bin.lz"); -const u32 gBattleAnimBgImage_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/neverending_nightmare.4bpp.lz"); -const u32 gBattleAnimBgPalette_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/neverending_nightmare.gbapal.lz"); -const u32 gBattleAnimBgTilemap_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/neverending_nightmare.bin.lz"); +const u32 gBattleAnimBgImage_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.4bpp.lz"); +const u32 gBattleAnimBgPalette_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.gbapal.lz"); +const u32 gBattleAnimBgTilemap_NeverendingNightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/neverending_nightmare.bin.lz"); -const u32 gBattleAnimBgImage_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/nightmare.4bpp.lz"); -const u32 gBattleAnimBgPalette_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/nightmare.gbapal.lz"); -const u32 gBattleAnimBgTilemap_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/nightmare.bin.lz"); +const u32 gBattleAnimBgImage_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.4bpp.lz"); +const u32 gBattleAnimBgPalette_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Nightmare[] = INCBIN_U32("graphics/battle_anims/backgrounds/nightmare.bin.lz"); -const u32 gBattleAnimBgPalette_PoisonFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/poison_falls.gbapal.lz"); +const u32 gBattleAnimBgPalette_PoisonFalls[] = INCBIN_U32("graphics/battle_anims/backgrounds/poison_falls.gbapal.lz"); -const u32 gBattleAnimBgPalette_PsychicNew[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/psychic.gbapal.lz"); +const u32 gBattleAnimBgPalette_PsychicNew[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_new.gbapal.lz"); -const u32 gBattleAnimBgImage_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/psychic_terrain.4bpp.lz"); -const u32 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/psychic_terrain.gbapal.lz"); -const u32 gBattleAnimBgTilemap_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/psychic_terrain.bin.lz"); +const u32 gBattleAnimBgImage_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.4bpp.lz"); +const u32 gBattleAnimBgPalette_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.gbapal.lz"); +const u32 gBattleAnimBgTilemap_PsychicTerrain[] = INCBIN_U32("graphics/battle_anims/backgrounds/psychic_terrain.bin.lz"); -const u32 gBattleAnimBgImage_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/shattered_psyche.4bpp.lz"); -const u32 gBattleAnimBgPalette_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/shattered_psyche.gbapal.lz"); -const u32 gBattleAnimBgTilemap_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/shattered_psyche.bin.lz"); +const u32 gBattleAnimBgImage_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.4bpp.lz"); +const u32 gBattleAnimBgPalette_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.gbapal.lz"); +const u32 gBattleAnimBgTilemap_ShatteredPsyche[] = INCBIN_U32("graphics/battle_anims/backgrounds/shattered_psyche.bin.lz"); -const u32 gBattleAnimBgImage_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sky_day.4bpp.lz"); -const u32 gBattleAnimBgPalette_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sky_day.gbapal.lz"); -const u32 gBattleAnimBgTilemap_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sky_day.bin.lz"); +const u32 gBattleAnimBgImage_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.4bpp.lz"); +const u32 gBattleAnimBgPalette_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.gbapal.lz"); +const u32 gBattleAnimBgTilemap_SkyDay[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_day.bin.lz"); -const u32 gBattleAnimBgPalette_SkyAfternoon[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sky_afternoon.gbapal.lz"); +const u32 gBattleAnimBgPalette_SkyAfternoon[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_afternoon.gbapal.lz"); -const u32 gBattleAnimBgPalette_SkyNight[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/sky_night.gbapal.lz"); +const u32 gBattleAnimBgPalette_SkyNight[] = INCBIN_U32("graphics/battle_anims/backgrounds/sky_night.gbapal.lz"); -const u32 gBattleAnimBgImage_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/snuggle_forever.4bpp.lz"); -const u32 gBattleAnimBgPalette_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/snuggle_forever.gbapal.lz"); -const u32 gBattleAnimBgTilemap_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/snuggle_forever.bin.lz"); +const u32 gBattleAnimBgImage_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.4bpp.lz"); +const u32 gBattleAnimBgPalette_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.gbapal.lz"); +const u32 gBattleAnimBgTilemap_SnuggleForever[] = INCBIN_U32("graphics/battle_anims/backgrounds/snuggle_forever.bin.lz"); -const u32 gBattleAnimBgImage_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/soulstealing_7star_strike.4bpp.lz"); -const u32 gBattleAnimBgPalette_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/soulstealing_7star_strike.gbapal.lz"); -const u32 gBattleAnimBgTilemap_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/soulstealing_7star_strike.bin.lz"); +const u32 gBattleAnimBgImage_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.4bpp.lz"); +const u32 gBattleAnimBgPalette_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.gbapal.lz"); +const u32 gBattleAnimBgTilemap_SoulStealing7StarStrike[] = INCBIN_U32("graphics/battle_anims/backgrounds/soulstealing_7star_strike.bin.lz"); -const u32 gBattleAnimBgPalette_TectonicRage[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/tectonic_rage.gbapal.lz"); +const u32 gBattleAnimBgPalette_TectonicRage[] = INCBIN_U32("graphics/battle_anims/backgrounds/tectonic_rage.gbapal.lz"); -const u32 gBattleAnimBgImage_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/trick_room.4bpp.lz"); -const u32 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/trick_room.gbapal.lz"); -const u32 gBattleAnimBgTilemap_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/trick_room.bin.lz"); +const u32 gBattleAnimBgImage_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.4bpp.lz"); +const u32 gBattleAnimBgPalette_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.gbapal.lz"); +const u32 gBattleAnimBgTilemap_TrickRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/trick_room.bin.lz"); -const u32 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/magic_room.gbapal.lz"); +const u32 gBattleAnimBgPalette_MagicRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/magic_room.gbapal.lz"); -const u32 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/wonder_room.gbapal.lz"); +const u32 gBattleAnimBgPalette_WonderRoom[] = INCBIN_U32("graphics/battle_anims/backgrounds/wonder_room.gbapal.lz"); -const u32 gBattleAnimBgImage_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.4bpp.lz"); -const u32 gBattleAnimBgPalette_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.gbapal.lz"); -const u32 gBattleAnimBgTilemap_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/twinkle_tackle.bin.lz"); +const u32 gBattleAnimBgImage_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.4bpp.lz"); +const u32 gBattleAnimBgPalette_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.gbapal.lz"); +const u32 gBattleAnimBgTilemap_TwinkleTackle[] = INCBIN_U32("graphics/battle_anims/backgrounds/twinkle_tackle.bin.lz"); -const u32 gBattleAnimBgImage_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/water_pulse.4bpp.lz"); -const u32 gBattleAnimBgPalette_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/water_pulse.gbapal.lz"); -const u32 gBattleAnimBgTilemap_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/water_pulse.bin.lz"); +const u32 gBattleAnimBgImage_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.4bpp.lz"); +const u32 gBattleAnimBgPalette_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.gbapal.lz"); +const u32 gBattleAnimBgTilemap_WaterPulse[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_pulse.bin.lz"); -const u32 gBattleAnimBgImage_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/waterfall.4bpp.lz"); -const u32 gBattleAnimBgPalette_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/waterfall.gbapal.lz"); -const u32 gBattleAnimBgTilemap_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/waterfall.bin.lz"); +const u32 gBattleAnimBgImage_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.4bpp.lz"); +const u32 gBattleAnimBgPalette_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.gbapal.lz"); +const u32 gBattleAnimBgTilemap_Waterfall[] = INCBIN_U32("graphics/battle_anims/backgrounds/waterfall.bin.lz"); -const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.gbapal.lz"); -const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/dark_void.bin.lz"); +const u32 gBattleAnimBgPalette_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.gbapal.lz"); +const u32 gBattleAnimBgTilemap_DarkVoid[] = INCBIN_U32("graphics/battle_anims/backgrounds/dark_void.bin.lz"); -const u32 gBattleAnimBgImage_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_activate.4bpp.lz"); -const u32 gBattleAnimBgPalette_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_activate.gbapal.lz"); -const u32 gBattleAnimBgTilemap_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_activate.bin.lz"); +const u32 gBattleAnimBgImage_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.4bpp.lz"); +const u32 gBattleAnimBgPalette_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.gbapal.lz"); +const u32 gBattleAnimBgTilemap_ZMoveActivate[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_activate.bin.lz"); -const u32 gBattleAnimBgImage_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_mountain.4bpp.lz"); -const u32 gBattleAnimBgPalette_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_mountain.gbapal.lz"); -const u32 gBattleAnimBgTilemap_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/zmove_mountain.bin.lz"); +const u32 gBattleAnimBgImage_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.4bpp.lz"); +const u32 gBattleAnimBgPalette_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.gbapal.lz"); +const u32 gBattleAnimBgTilemap_ZMoveMountain[] = INCBIN_U32("graphics/battle_anims/backgrounds/zmove_mountain.bin.lz"); -const u32 gBattleAnimSpritePal_SteelBeam[] = INCBIN_U32("graphics/battle_anims/sprites/new/steel_beam.gbapal.lz"); -const u32 gBattleAnimBgPalette_SteelBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/new/steel_beam_bg.gbapal.lz"); +const u32 gBattleAnimBgPalette_SteelBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/steel_beam.gbapal.lz"); // misc const u32 gBerryBlenderCenter_Gfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz"); From 2a8d2df6e71bb9f8fd6cb74f3e79dc636d7e5354 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Sun, 4 Sep 2022 23:40:00 +0700 Subject: [PATCH 200/271] Fix minor oopsies of src/graphics.c - gBattleAnimSpritePal_PrimalParticles --- src/graphics.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graphics.c b/src/graphics.c index 4a795a8b3e..a59d3a1616 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -43,8 +43,8 @@ const u32 gBattleAnimSpriteGfx_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims const u32 gBattleAnimSpritePal_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.gbapal.lz"); const u32 gBattleAnimSpriteGfx_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.4bpp.lz"); - const u32 gBattleAnimSpritePal_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.gbapal.lz"); + const u32 gBattleAnimSpriteGfx_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.4bpp.lz"); const u32 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.gbapal.lz"); From ce3dec43a7c0855f03ff74226f8169bba4a637df Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 4 Sep 2022 17:21:23 -0300 Subject: [PATCH 201/271] Fixed ball multiplier fallthroughs --- src/battle_script_commands.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 18fa5bbdff..7eebbff1c0 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13721,10 +13721,12 @@ static void Cmd_handleballthrow(void) { case ITEM_ULTRA_BALL: ballMultiplier = 20; + break; case ITEM_GREAT_BALL: case ITEM_SAFARI_BALL: case ITEM_SPORT_BALL: ballMultiplier = 15; + break; case ITEM_NET_BALL: if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) #if B_NET_BALL_MODIFIER >= GEN_7 From 89550ed05d3377423f04285551f779ca7b0481c0 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 4 Sep 2022 18:54:23 -0300 Subject: [PATCH 202/271] Updated Sport Ball's modifier. --- include/constants/battle_config.h | 1 + src/battle_script_commands.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 89134daf91..d9e0abf104 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -130,6 +130,7 @@ #define B_LURE_BALL_MODIFIER GEN_7 // In Gen7+, Lure Ball's catch multiplier is x5 instead of x3. #define B_HEAVY_BALL_MODIFIER GEN_7 // In Gen7+, Heavy Ball's ranges change. See Cmd_handleballthrow. #define B_DREAM_BALL_MODIFIER GEN_8 // In Gen8, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose. +#define B_SPORT_BALL_MODIFIER GEN_8 // In Gen8, Sport Ball's catch multiplier was reduced from x1.5 to x1. #define B_SERENE_GRACE_BOOST GEN_7 // In Gen5+, Serene Grace boosts the added flinch chance of King's Rock and Razor Fang. // Flag settings diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 7eebbff1c0..944255cfc9 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13722,9 +13722,11 @@ static void Cmd_handleballthrow(void) case ITEM_ULTRA_BALL: ballMultiplier = 20; break; + #if B_SPORT_BALL_MODIFIER <= GEN_7 + case ITEM_SPORT_BALL: + #endif case ITEM_GREAT_BALL: case ITEM_SAFARI_BALL: - case ITEM_SPORT_BALL: ballMultiplier = 15; break; case ITEM_NET_BALL: From 7500435a8040c1ae3b62cf47eac6e1e9a5c60fbe Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 4 Sep 2022 21:24:12 -0300 Subject: [PATCH 203/271] Implemented review changes from https://github.com/pret/pokefirered/pull/548 --- src/battle_controller_link_opponent.c | 4 ---- src/battle_controller_opponent.c | 2 -- src/battle_controller_recorded_opponent.c | 4 ---- src/battle_controllers.c | 15 ++++----------- src/battle_main.c | 10 +++++----- src/battle_tower.c | 2 +- src/berry_crush.c | 2 +- src/dodrio_berry_picking.c | 4 ++-- src/link_rfu_2.c | 2 +- src/minigame_countdown.c | 2 +- src/mystery_event_menu.c | 2 +- src/mystery_gift_menu.c | 4 ++-- src/record_mixing.c | 2 +- src/reshow_battle_screen.c | 2 +- src/trade.c | 2 +- src/union_room.c | 4 ++-- 16 files changed, 23 insertions(+), 40 deletions(-) diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index a9629f6622..0f1ce1b17f 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -386,13 +386,9 @@ static void CompleteOnHealthbarDone(void) SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); if (hpValue != -1) - { UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); - } else - { LinkOpponentBufferExecCompleted(); - } } static void HideHealthboxAfterMonFaint(void) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 4c274f17e3..b3554dc5af 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -397,9 +397,7 @@ static void CompleteOnHealthbarDone(void) s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); if (hpValue != -1) - { UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); - } else OpponentBufferExecCompleted(); } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 0fb14f20d5..872a61c0e7 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -373,13 +373,9 @@ static void CompleteOnHealthbarDone(void) SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); if (hpValue != -1) - { UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); - } else - { RecordedOpponentBufferExecCompleted(); - } } static void HideHealthboxAfterMonFaint(void) diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 20681b27ce..e5cfb3be68 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -660,18 +660,12 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size) switch (bufferId) { case BUFFER_A: - for (i = 0; i < size; i++) - { + for (i = 0; i < size; data++, i++) gBattleBufferA[gActiveBattler][i] = *data; - data++; - } break; case BUFFER_B: - for (i = 0; i < size; i++) - { + for (i = 0; i < size; data++, i++) gBattleBufferB[gActiveBattler][i] = *data; - data++; - } break; } } @@ -808,8 +802,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId) } break; case 5: - gTasks[taskId].data[13]--; - if (gTasks[taskId].data[13] == 0) + if (--gTasks[taskId].data[13] == 0) { gTasks[taskId].data[13] = 1; gTasks[taskId].data[11] = 3; @@ -824,7 +817,7 @@ void TryReceiveLinkBattleData(void) s32 j; u8 *recvBuffer; - if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE)) + if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE)) { DestroyTask_RfuIdle(); for (i = 0; i < GetLinkPlayerCount(); i++) diff --git a/src/battle_main.c b/src/battle_main.c index ad4ea88b9e..52a1005989 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -967,7 +967,7 @@ static void CB2_HandleStartBattle(void) case 1: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (IsLinkTaskFinished()) { @@ -1175,7 +1175,7 @@ static void CB2_HandleStartMultiPartnerBattle(void) case 1: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { u8 language; @@ -1442,7 +1442,7 @@ static void CB2_PreInitMultiBattle(void) switch (gBattleCommunication[MULTIUSE_STATE]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) + if (gReceivedRemoteLinkPlayers && IsLinkTaskFinished()) { sMultiPartnerPartyBuffer = Alloc(sizeof(gMultiPartnerParty)); SetMultiPartnerMenuParty(0); @@ -1578,7 +1578,7 @@ static void CB2_HandleStartMultiBattle(void) case 1: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (IsLinkTaskFinished()) { @@ -5183,7 +5183,7 @@ static void ReturnFromBattleToOverworld(void) PartySpreadPokerus(gPlayerParty); } - if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0) + if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers) return; gSpecialVar_Result = gBattleOutcome; diff --git a/src/battle_tower.c b/src/battle_tower.c index bebbdee7da..62feb7f838 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -2635,7 +2635,7 @@ static void LoadLinkMultiOpponentsData(void) gTrainerBattleOpponent_B = gSaveBlock2Ptr->frontier.trainerIds[battleNum * 2 + 1]; SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_A, 0); SetBattleFacilityTrainerGfxId(gTrainerBattleOpponent_B, 1); - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType == 0) + if (gReceivedRemoteLinkPlayers && gWirelessCommType == 0) gSpecialVar_Result = 4; else gSpecialVar_Result = 6; diff --git a/src/berry_crush.c b/src/berry_crush.c index 19c03391d3..d93dbe80ad 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -3428,7 +3428,7 @@ static u32 Cmd_CloseLink(struct BerryCrushGame *game, u8 *args) SetCloseLinkCallback(); break; case 2: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) return 0; game->nextCmd = CMD_QUIT; RunOrScheduleCommand(CMD_HIDE_GAME, SCHEDULE_CMD, NULL); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 11bf12925b..a3710e04fb 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -665,7 +665,7 @@ void StartDodrioBerryPicking(u16 partyId, void (*exitCallback)(void)) { sExitingGame = FALSE; - if (gReceivedRemoteLinkPlayers != 0 && (sGame = AllocZeroed(sizeof(*sGame)))) + if (gReceivedRemoteLinkPlayers && (sGame = AllocZeroed(sizeof(*sGame)))) { ResetTasksAndSprites(); InitDodrioGame(sGame); @@ -775,7 +775,7 @@ static void Task_StartDodrioGame(u8 taskId) case 3: if (IsLinkTaskFinished()) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index c54d6c3d34..437cec2fdb 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -1115,7 +1115,7 @@ static void RfuHandleReceiveCommand(u8 unused) { gRfu.recvBlock[i].receiving = RECV_STATE_FINISHED; Rfu_SetBlockReceivedFlag(i); - if (GetHostRfuGameData()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && gRfu.parentChild == MODE_CHILD) + if (GetHostRfuGameData()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers && gRfu.parentChild == MODE_CHILD) ValidateAndReceivePokemonSioInfo(gBlockRecvBuffer); } } diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c index 5aaed0cb23..b4d3b6558b 100644 --- a/src/minigame_countdown.c +++ b/src/minigame_countdown.c @@ -315,7 +315,7 @@ static void Task_StaticCountdown_Run(u8 taskId) u16 packet[RFU_PACKET_SIZE]; s16 *data = gTasks[taskId].data; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { // Read link timer if (gRecvCmds[0][1] == LINKCMD_COUNTDOWN) diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index c35fe8ed80..b6610a6403 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -201,7 +201,7 @@ static void CB2_MysteryEventMenu(void) case 6: if (IsLinkConnectionEstablished()) { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (GetLinkPlayerDataExchangeStatusTimed(2, 2) == EXCHANGE_DIFF_SELECTIONS) { diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index b970711fd3..92e544a27b 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -1232,7 +1232,7 @@ static void Task_MysteryGift(u8 taskId) data->state = MG_STATE_CLIENT_LINK_WAIT; break; case MG_STATE_CLIENT_LINK_WAIT: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { ClearScreenInBg0(TRUE); data->state = MG_STATE_CLIENT_COMMUNICATING; @@ -1528,7 +1528,7 @@ static void Task_MysteryGift(u8 taskId) } break; case MG_STATE_SERVER_LINK_WAIT: - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { ClearScreenInBg0(TRUE); data->state = MG_STATE_SERVER_LINK_START; diff --git a/src/record_mixing.c b/src/record_mixing.c index 3a831c8ce1..b03d7be2f3 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -444,7 +444,7 @@ static void Task_MixingRecordsRecv(u8 taskId) } break; case 1: // wait for handshake - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), STR_CONV_MODE_LEADING_ZEROS, 2); task->tState = 5; diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 3a087b7d78..4217d78c73 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -149,7 +149,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) ActionSelectionCreateCursorAt(gActionSelectionCursor[gBattlerInMenuId], 0); - if (gWirelessCommType != 0 && gReceivedRemoteLinkPlayers != 0) + if (gWirelessCommType != 0 && gReceivedRemoteLinkPlayers) { LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); diff --git a/src/trade.c b/src/trade.c index 7c712b5803..e24051e041 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2391,7 +2391,7 @@ s32 GetGameProgressForLinkTrade(void) s32 isGameFrLg; u16 version; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { isGameFrLg = 0; version = (gLinkPlayers[GetMultiplayerId() ^ 1].version & 0xFF); diff --git a/src/union_room.c b/src/union_room.c index 67d1059ee0..7d14176717 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -702,7 +702,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } else { - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { if (IsActivityWithVariableGroupSize(gPlayerCurrActivity)) GetOtherPlayersInfoFlags(); @@ -2047,7 +2047,7 @@ static void Task_SendMysteryGift(u8 taskId) { data->state = 13; } - else if (gReceivedRemoteLinkPlayers != 0) + else if (gReceivedRemoteLinkPlayers) { UpdateGameData_GroupLockedIn(TRUE); data->state++; From 2deabc2f367e82a0096be296bca85d64bbb1b390 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 5 Sep 2022 04:27:21 -0300 Subject: [PATCH 204/271] Quick update for GetBattleMonMoveSlot --- src/battle_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_util.c b/src/battle_util.c index c92d3690fc..12eeec4663 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -7913,7 +7913,7 @@ u8 GetBattleMonMoveSlot(struct BattlePokemon *battleMon, u16 move) { u8 i; - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_MON_MOVES; i++) { if (battleMon->moves[i] == move) break; From 6cab795c5c8f6e35992bee8689379461c50b8db1 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:02:44 +0200 Subject: [PATCH 205/271] Update include/constants/overworld_config.h Co-authored-by: Eduardo Quezada D'Ottone --- include/constants/overworld_config.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/constants/overworld_config.h b/include/constants/overworld_config.h index 6d094d60f5..50f45933df 100644 --- a/include/constants/overworld_config.h +++ b/include/constants/overworld_config.h @@ -1,14 +1,18 @@ #ifndef GUARD_CONSTANTS_OVERWORLD_CONFIG_H #define GUARD_CONSTANTS_OVERWORLD_CONFIG_H +// Overworld flags +#define OW_FLAG_NO_ENCOUNTER 0 // If this flag is set, wild encounters will be disabled. +#define OW_FLAG_NO_TRAINER_SEE 0 // If this flag is set, trainers will not battle the player unless they're talked to. + // Debug options -#define DEBUG_SYSTEM_ENABLE TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by pressing R plus START. -#define DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (replaces the exit entry). +#define DEBUG_SYSTEM_ENABLE TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default. +#define DEBUG_SYSTEM_HELD_KEYS (R_BUTTON) // The keys required to be held to open the debug menu. +#define DEBUG_SYSTEM_TRIGGER_EVENT pressedStartButton // The event that opens the menu when holding the key(s) defined in DEBUG_SYSTEM_HELD_KEYS. +#define DEBUG_SYSTEM_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex). // Replace the used flags with others or disable with a 0 #define DEBUG_FLAG_NO_COLLISION 0 // If this flag is set, the debug function in the Utility submenu to disable player collision can be used. -#define DEBUG_FLAG_NO_ENCOUNTER 0 // If this flag is set, the debug function in the Utility submenu to disable wild encounters can be used. -#define DEBUG_FLAG_NO_TRAINER_SEE 0 // If this flag is set, the debug function in the Utility submenu to disable battles with trainer can be used. #define DEBUG_FLAG_PC_FROM_DEBUG_MENU 0 // If this flag is set, the debug function in debug menu to access the player PC works. #endif // GUARD_CONSTANTS_OVERWORLD_CONFIG_H From 0b3eddc9a4529d34debd2521b8d11dcdc2a38a96 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:03:01 +0200 Subject: [PATCH 206/271] Update src/field_control_avatar.c Co-authored-by: Eduardo Quezada D'Ottone --- src/field_control_avatar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 76503a85a2..0494c52d81 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -132,10 +132,10 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) input->dpadDirection = DIR_EAST; #if DEBUG_SYSTEM_ENABLE == TRUE && DEBUG_SYSTEM_IN_MENU == FALSE - if ((heldKeys & R_BUTTON) && input->pressedStartButton) + if ((heldKeys & DEBUG_SYSTEM_HELD_KEYS) && input->DEBUG_SYSTEM_TRIGGER_EVENT) { input->input_field_1_2 = TRUE; - input->pressedStartButton = FALSE; + input->DEBUG_SYSTEM_TRIGGER_EVENT = FALSE; } #endif } From 57296dde71950e350b5354685c4c074043505cfc Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:03:23 +0200 Subject: [PATCH 207/271] Update src/field_control_avatar.c Co-authored-by: Eduardo Quezada D'Ottone --- src/field_control_avatar.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 0494c52d81..d407cc0279 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -686,10 +686,8 @@ void RestartWildEncounterImmunitySteps(void) static bool8 CheckStandardWildEncounter(u16 metatileBehavior) { -#if DEBUG_SYSTEM_ENABLE == TRUE - if (FlagGet(DEBUG_FLAG_NO_ENCOUNTER)) + if (FlagGet(OW_FLAG_NO_ENCOUNTER)) return FALSE; -#endif if (sWildEncounterImmunitySteps < 4) { From 7696a78760016db2cd13a101cf5ca79576747583 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:04:21 +0200 Subject: [PATCH 208/271] Update src/trainer_see.c Co-authored-by: Eduardo Quezada D'Ottone --- src/trainer_see.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/trainer_see.c b/src/trainer_see.c index b720a59d90..41534a55d8 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -192,10 +192,8 @@ bool8 CheckForTrainersWantingBattle(void) { u8 i; -#if DEBUG_SYSTEM_ENABLE == TRUE - if (FlagGet(DEBUG_FLAG_NO_TRAINER_SEE)) + if (FlagGet(OW_FLAG_NO_TRAINER_SEE)) return FALSE; -#endif gNoOfApproachingTrainers = 0; gApproachingTrainerId = 0; From 40e33799211c65e8b88fa97244733f728146e760 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:15:18 +0200 Subject: [PATCH 209/271] removed music expansion songs, added newline, removed all weekday remains --- src/debug.c | 203 +--------------------------------------------------- 1 file changed, 2 insertions(+), 201 deletions(-) diff --git a/src/debug.c b/src/debug.c index f889ed5d29..9e8a9b5b89 100644 --- a/src/debug.c +++ b/src/debug.c @@ -78,7 +78,6 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, - DEBUG_UTIL_MENU_ITEM_CHECKWEEKDAY, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER, @@ -214,7 +213,6 @@ static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8); static void DebugAction_Util_CheckWallClock(u8); static void DebugAction_Util_SetWallClock(u8); -static void DebugAction_Util_CheckWeekDay(u8); static void DebugAction_Util_WatchCredits(u8); static void DebugAction_Util_Trainer_Name(u8); static void DebugAction_Util_Trainer_Gender(u8); @@ -321,7 +319,6 @@ static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons" static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); -static const u8 gDebugText_Util_CheckWeekDay[] = _("Check Week Day"); static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); @@ -1161,14 +1158,6 @@ static void DebugAction_Util_SetWallClock(u8 taskId) LockPlayerFieldControls(); ScriptContext_SetupScript(PlayersHouse_2F_EventScript_SetWallClock); } -static void DebugAction_Util_CheckWeekDay(u8 taskId) -{ - //StringCopy(gStringVar4, GetDayOfWeekString(gLocalTime.dayOfWeek)); - Debug_DestroyMenu(taskId); - //LockPlayerFieldControls(); - //ScriptContext_SetupScript(Debug_ShowFieldMessageStringVar4); - ScriptContext_Enable(); -} static void DebugAction_Util_WatchCredits(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2212,7 +2201,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) gTasks[taskId].data[3] = 0; } - while (GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i) == ABILITY_NONE) + while (GetAbilityBySpecies(sDebugMonData->mon_speciesId, gTasks[taskId].data[3] - i) == ABILITY_NONE && gTasks[taskId].data[3] - i < NUM_ABILITY_SLOTS) { i++; } @@ -3060,194 +3049,6 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) X(MUS_RG_TRAINER_TOWER, "MUS-RG-TRAINER-TOWER") \ X(MUS_RG_SLOW_PALLET, "MUS-RG-SLOW-PALLET") \ X(MUS_RG_TEACHY_TV_MENU, "MUS-RG-TEACHY-TV-MENU") \ - X(DP_SEQ_TITLE00 , "DP-SEQ-TITLE00") \ - X(DP_SEQ_TITLE01 , "DP-SEQ-TITLE01") \ - X(DP_SEQ_OPENING , "DP-SEQ-OPENING") \ - X(DP_SEQ_TV_HOUSOU , "DP-SEQ-TV-HOUSOU") \ - X(DP_SEQ_TV_END , "DP-SEQ-TV-END") \ - X(DP_SEQ_TOWN01_D , "DP-SEQ-TOWN01-D") \ - X(DP_SEQ_TOWN01_N , "DP-SEQ-TOWN01-N") \ - X(DP_SEQ_THE_RIV , "DP-SEQ-THE-RIV") \ - X(DP_SEQ_ROAD_A_D , "DP-SEQ-ROAD-A-D") \ - X(DP_SEQ_ROAD_A_N , "DP-SEQ-ROAD-A-N") \ - X(DP_SEQ_D_LAKE , "DP-SEQ-D-LAKE") \ - X(DP_SEQ_THE_EVENT01, "DP-SEQ-THE-EVENT01") \ - X(DP_SEQ_BA_POKE , "DP-SEQ-BA-POKE") \ - X(DP_SEQ_WINPOKE , "DP-SEQ-WINPOKE") \ - X(DP_SEQ_THE_GIRL , "DP-SEQ-THE-GIRL") \ - X(DP_SEQ_THE_BOY , "DP-SEQ-THE-BOY") \ - X(DP_SEQ_FANFA4 , "DP-SEQ-FANFA4") \ - X(DP_SEQ_TOWN02_D , "DP-SEQ-TOWN02-D") \ - X(DP_SEQ_TOWN02_N , "DP-SEQ-TOWN02-N") \ - X(DP_SEQ_KENKYUJO , "DP-SEQ-KENKYUJO") \ - X(DP_SEQ_TSURETEKE , "DP-SEQ-TSURETEKE") \ - X(DP_SEQ_PC_01 , "DP-SEQ-PC-01") \ - X(DP_SEQ_PC_02 , "DP-SEQ-PC-02") \ - X(DP_SEQ_ASA , "DP-SEQ-ASA") \ - X(DP_SEQ_EYE_BOY , "DP-SEQ-EYE-BOY") \ - X(DP_SEQ_EYE_GIRL , "DP-SEQ-EYE-GIRL") \ - X(DP_SEQ_BA_TRAIN , "DP-SEQ-BA-TRAIN") \ - X(DP_SEQ_WINTRAIN , "DP-SEQ-WINTRAIN") \ - X(DP_SEQ_CITY01_D , "DP-SEQ-CITY01-D") \ - X(DP_SEQ_CITY01_N , "DP-SEQ-CITY01-N") \ - X(DP_SEQ_FANFA3 , "DP-SEQ-FANFA3") \ - X(DP_SEQ_FS , "DP-SEQ-FS") \ - X(DP_SEQ_ROAD_B_D , "DP-SEQ-ROAD-B-D") \ - X(DP_SEQ_ROAD_B_N , "DP-SEQ-ROAD-B-N") \ - X(DP_SEQ_BA_RIVAL , "DP-SEQ-BA-RIVAL") \ - X(DP_SEQ_D_05 , "DP-SEQ-D-05") \ - X(DP_SEQ_WAZA , "DP-SEQ-WAZA") \ - X(DP_SEQ_CITY03_D , "DP-SEQ-CITY03-D") \ - X(DP_SEQ_CITY03_N , "DP-SEQ-CITY03-N") \ - X(DP_SEQ_D_04 , "DP-SEQ-D-04") \ - X(DP_SEQ_GYM , "DP-SEQ-GYM") \ - X(DP_SEQ_BA_GYM , "DP-SEQ-BA-GYM") \ - X(DP_SEQ_WINTGYM , "DP-SEQ-WINTGYM") \ - X(DP_SEQ_BADGE , "DP-SEQ-BADGE") \ - X(DP_SEQ_EYE_KID , "DP-SEQ-EYE-KID") \ - X(DP_SEQ_FANFA1 , "DP-SEQ-FANFA1") \ - X(DP_SEQ_TOWN03_D , "DP-SEQ-TOWN03-D") \ - X(DP_SEQ_TOWN03_N , "DP-SEQ-TOWN03-N") \ - X(DP_SEQ_KINOMI , "DP-SEQ-KINOMI") \ - X(DP_SEQ_ROAD_C_D , "DP-SEQ-ROAD-C-D") \ - X(DP_SEQ_ROAD_C_N , "DP-SEQ-ROAD-C-N") \ - X(DP_SEQ_EYE_GINGA , "DP-SEQ-EYE-GINGA") \ - X(DP_SEQ_BA_GINGA , "DP-SEQ-BA-GINGA") \ - X(DP_SEQ_D_02 , "DP-SEQ-D-02") \ - X(DP_SEQ_GONIN , "DP-SEQ-GONIN") \ - X(DP_SEQ_CITY04_D , "DP-SEQ-CITY04-D") \ - X(DP_SEQ_CITY04_N , "DP-SEQ-CITY04-N") \ - X(DP_SEQ_D_GINLOBBY , "DP-SEQ-D-GINLOBBY") \ - X(DP_SEQ_BA_GINGA3 , "DP-SEQ-BA-GINGA3") \ - X(DP_SEQ_WINGINGA , "DP-SEQ-WINGINGA") \ - X(DP_SEQ_SHINKA , "DP-SEQ-SHINKA") \ - X(DP_SEQ_FANFA5 , "DP-SEQ-FANFA5") \ - X(DP_SEQ_BICYCLE , "DP-SEQ-BICYCLE") \ - X(DP_SEQ_EYE_SPORT , "DP-SEQ-EYE-SPORT") \ - X(DP_SEQ_ROAD_D_D , "DP-SEQ-ROAD-D-D") \ - X(DP_SEQ_ROAD_D_N , "DP-SEQ-ROAD-D-N") \ - X(DP_SEQ_CITY05_D , "DP-SEQ-CITY05-D") \ - X(DP_SEQ_CITY05_N , "DP-SEQ-CITY05-N") \ - X(DP_SEQ_ROAD_E_D , "DP-SEQ-ROAD-E-D") \ - X(DP_SEQ_ROAD_E_N , "DP-SEQ-ROAD-E-N") \ - X(DP_SEQ_EYE_MOUNT , "DP-SEQ-EYE-MOUNT") \ - X(DP_SEQ_TOWN04_D , "DP-SEQ-TOWN04-D") \ - X(DP_SEQ_TOWN04_N , "DP-SEQ-TOWN04-N") \ - X(DP_SEQ_POCKETCH , "DP-SEQ-POCKETCH") \ - X(DP_SEQ_ROAD_F_D , "DP-SEQ-ROAD-F-D") \ - X(DP_SEQ_ROAD_F_N , "DP-SEQ-ROAD-F-N") \ - X(DP_SEQ_CITY07_D , "DP-SEQ-CITY07-D") \ - X(DP_SEQ_CITY07_N , "DP-SEQ-CITY07-N") \ - X(DP_SEQ_TOWN07_D , "DP-SEQ-TOWN07-D") \ - X(DP_SEQ_TOWN07_N , "DP-SEQ-TOWN07-N") \ - X(DP_SEQ_CITY02_D , "DP-SEQ-CITY02-D") \ - X(DP_SEQ_CITY02_N , "DP-SEQ-CITY02-N") \ - X(DP_SEQ_ROAD_SNOW_D , "DP-SEQ-ROAD-SNOW-D") \ - X(DP_SEQ_ROAD_SNOW_N , "DP-SEQ-ROAD-SNOW-N") \ - X(DP_SEQ_CITY09_D , "DP-SEQ-CITY09-D") \ - X(DP_SEQ_CITY09_N , "DP-SEQ-CITY09-N") \ - X(DP_SEQ_D_AGITO , "DP-SEQ-D-AGITO") \ - X(DP_SEQ_BA_AGAKI , "DP-SEQ-BA-AGAKI") \ - X(DP_SEQ_THE_EVENT04 , "DP-SEQ-THE-EVENT04") \ - X(DP_SEQ_D_MOUNT1 , "DP-SEQ-D-MOUNT1") \ - X(DP_SEQ_D_MOUNT2 , "DP-SEQ-D-MOUNT2") \ - X(DP_SEQ_THE_EVENT02 , "DP-SEQ-THE-EVENT02") \ - X(DP_SEQ_THE_EVENT03 , "DP-SEQ-THE-EVENT03") \ - X(DP_SEQ_BA_DPOKE2 , "DP-SEQ-BA-DPOKE2") \ - X(DP_SEQ_CITY08_D , "DP-SEQ-CITY08-D") \ - X(DP_SEQ_CITY08_N , "DP-SEQ-CITY08-N") \ - X(DP_SEQ_D_01 , "DP-SEQ-D-01") \ - X(DP_SEQ_EYE_ELITE , "DP-SEQ-EYE-ELITE") \ - X(DP_SEQ_CITY10_D , "DP-SEQ-CITY10-D") \ - X(DP_SEQ_CITY10_N , "DP-SEQ-CITY10-N") \ - X(DP_SEQ_CITY11_D , "DP-SEQ-CITY11-D") \ - X(DP_SEQ_CITY11_N , "DP-SEQ-CITY11-N") \ - X(DP_SEQ_TOWN06_D , "DP-SEQ-TOWN06-D") \ - X(DP_SEQ_TOWN06_N , "DP-SEQ-TOWN06-N") \ - X(DP_SEQ_ROAD_BZA_D , "DP-SEQ-ROAD-BZA-D") \ - X(DP_SEQ_ROAD_BZA_N , "DP-SEQ-ROAD-BZA-N") \ - X(DP_SEQ_WIFILOBBY , "DP-SEQ-WIFILOBBY") \ - X(DP_SEQ_BLD_TV , "DP-SEQ-BLD-TV") \ - X(DP_SEQ_BLD_BLD_GTC , "DP-SEQ-BLD-BLD-GTC") \ - X(DP_SEQ_NAMINORI , "DP-SEQ-NAMINORI") \ - X(DP_SEQ_WASURE , "DP-SEQ-WASURE") \ - X(DP_SEQ_EYE_FIGHT , "DP-SEQ-EYE-FIGHT") \ - X(DP_SEQ_EYE_ENKA , "DP-SEQ-EYE-ENKA") \ - X(DP_SEQ_TANKOU , "DP-SEQ-TANKOU") \ - X(DP_SEQ_HATANIGE , "DP-SEQ-HATANIGE") \ - X(DP_SEQ_EYE_LADY , "DP-SEQ-EYE-LADY") \ - X(DP_SEQ_D_03 , "DP-SEQ-D-03") \ - X(DP_SEQ_D_SAFARI , "DP-SEQ-D-SAFARI") \ - X(DP_SEQ_EYE_MYS , "DP-SEQ-EYE-MYS") \ - X(DP_SEQ_BLD_GAME , "DP-SEQ-BLD-GAME") \ - X(DP_SEQ_SLOT_ATARI , "DP-SEQ-SLOT-ATARI") \ - X(DP_SEQ_SLOT_OOATARI , "DP-SEQ-SLOT-OOATARI") \ - X(DP_SEQ_EYE_RICH , "DP-SEQ-EYE-RICH") \ - X(DP_SEQ_D_RYAYHY , "DP-SEQ-D-RYAYHY") \ - X(DP_SEQ_BA_DPOKE1 , "DP-SEQ-BA-DPOKE1") \ - X(DP_SEQ_KUSAGASA , "DP-SEQ-KUSAGASA") \ - X(DP_SEQ_EYE_FUN , "DP-SEQ-EYE-FUN") \ - X(DP_SEQ_D_KOUEN , "DP-SEQ-D-KOUEN") \ - X(DP_SEQ_ACCE , "DP-SEQ-ACCE") \ - X(DP_SEQ_BLD_CON , "DP-SEQ-BLD-CON") \ - X(DP_SEQ_KINOMI1 , "DP-SEQ-KINOMI1") \ - X(DP_SEQ_CON_TEST , "DP-SEQ-CON-TEST") \ - X(DP_SEQ_CO_DRESS , "DP-SEQ-CO-DRESS") \ - X(DP_SEQ_CO_KASHI , "DP-SEQ-CO-KASHI") \ - X(DP_SEQ_CO_TAKUMA , "DP-SEQ-CO-TAKUMA") \ - X(DP_SEQ_CO_KEKKA , "DP-SEQ-CO-KEKKA") \ - X(DP_SEQ_CO_FANFA , "DP-SEQ-CO-FANFA") \ - X(DP_SEQ_BF_TOWWER , "DP-SEQ-BF-TOWWER") \ - X(DP_SEQ_D_06 , "DP-SEQ-D-06") \ - X(DP_SEQ_BA_SECRET2 , "DP-SEQ-BA-SECRET2") \ - X(DP_SEQ_PRESENT , "DP-SEQ-PRESENT") \ - X(DP_SEQ_D_LEAGUE , "DP-SEQ-D-LEAGUE") \ - X(DP_SEQ_EYE_TENNO , "DP-SEQ-EYE-TENNO") \ - X(DP_SEQ_BA_TENNO , "DP-SEQ-BA-TENNO") \ - X(DP_SEQ_WINTENNO , "DP-SEQ-WINTENNO") \ - X(DP_SEQ_EYE_CHAMP , "DP-SEQ-EYE-CHAMP") \ - X(DP_SEQ_BA_CHANP , "DP-SEQ-BA-CHANP") \ - X(DP_SEQ_WINCHAMP , "DP-SEQ-WINCHAMP") \ - X(DP_SEQ_BLD_DENDO , "DP-SEQ-BLD-DENDO") \ - X(DP_SEQ_BLD_EV_DENDO2 , "DP-SEQ-BLD-EV-DENDO2") \ - X(DP_SEQ_BLD_ENDING , "DP-SEQ-BLD-ENDING") \ - X(DP_SEQ_FUE , "DP-SEQ-FUE") \ - X(DP_SEQ_AUS , "DP-SEQ-AUS") \ - X(DP_SEQ_BA_SECRET1 , "DP-SEQ-BA-SECRET1") \ - X(PL_SEQ_TITLE00 , "PL-SEQ-TITLE00") \ - X(PL_SEQ_TITLE01 , "PL-SEQ-TITLE01") \ - X(PL_SEQ_TV_HOUSOU , "PL-SEQ-TV-HOUSOU") \ - X(PL_SEQ_TV_END , "PL-SEQ-TV-END") \ - X(PL_SEQ_PL_HANDSOME , "PL-SEQ-PL-HANDSOME") \ - X(PL_SEQ_PL_WIFITOWER , "PL-SEQ-PL-WIFITOWER") \ - X(PL_SEQ_PL_WIFIUNION , "PL-SEQ-PL-WIFIUNION") \ - X(PL_SEQ_PL_WIFIGAME , "PL-SEQ-PL-WIFIGAME") \ - X(PL_SEQ_PL_WINMINI2 , "PL-SEQ-PL-WINMINI2") \ - X(PL_SEQ_PL_WIFIPARADE , "PL-SEQ-PL-WIFIPARADE") \ - X(PL_SEQ_PL_EV_GIRA , "PL-SEQ-PL-EV-GIRA") \ - X(PL_SEQ_PL_EV_GIRA2 , "PL-SEQ-PL-EV-GIRA2") \ - X(PL_SEQ_PL_D_GIRATINA , "PL-SEQ-PL-D-GIRATINA") \ - X(PL_SEQ_PL_BA_GIRA , "PL-SEQ-PL-BA-GIRA") \ - X(PL_SEQ_PL_GURUGURU , "PL-SEQ-PL-GURUGURU") \ - X(PL_SEQ_PL_PTHAIFU , "PL-SEQ-PL-PTHAIFU") \ - X(PL_SEQ_PL_MTKAWA , "PL-SEQ-PL-MTKAWA") \ - X(PL_SEQ_PL_MTKAKKO , "PL-SEQ-PL-MTKAKKO") \ - X(PL_SEQ_PL_MTTAKMA , "PL-SEQ-PL-MTTAKMA") \ - X(PL_SEQ_PL_MTUTSUK , "PL-SEQ-PL-MTUTSUK") \ - X(PL_SEQ_PL_MTKASHI , "PL-SEQ-PL-MTKASHI") \ - X(PL_SEQ_PL_TOWN02 , "PL-SEQ-PL-TOWN02") \ - X(PL_SEQ_PL_AUDIO , "PL-SEQ-PL-AUDIO") \ - X(PL_SEQ_CITY11_D , "PL-SEQ-CITY11-D") \ - X(PL_SEQ_PL_BF_ROULETTE , "PL-SEQ-PL-BF-ROULETTE") \ - X(PL_SEQ_PL_DON2 , "PL-SEQ-PL-DON2") \ - X(PL_SEQ_PL_BF_STAGE , "PL-SEQ-PL-BF-STAGE") \ - X(PL_SEQ_PL_BF_FACTORY , "PL-SEQ-PL-BF-FACTORY") \ - X(PL_SEQ_PL_BF_CASTLE , "PL-SEQ-PL-BF-CASTLE") \ - X(PL_SEQ_PL_FRO , "PL-SEQ-PL-FRO") \ - X(PL_SEQ_PL_POINTGET3 , "PL-SEQ-PL-POINTGET3") \ - X(PL_SEQ_PL_BA_BRAIN , "PL-SEQ-PL-BA-BRAIN") \ - X(PL_SEQ_PL_WINBRAIN , "PL-SEQ-PL-WINBRAIN") \ - X(PL_SEQ_PL_BA_REGI , "PL-SEQ-PL-BA-REGI") \ X(PH_TRAP_BLEND, "PH-TRAP-BLEND") \ X(PH_TRAP_HELD, "PH-TRAP-HELD") \ X(PH_TRAP_SOLO, "PH-TRAP-SOLO") \ @@ -3595,4 +3396,4 @@ SOUND_LIST_SE }; #undef X -#endif \ No newline at end of file +#endif From f6d111d0c7f994597f3a5243f16da7d6ef3ddab7 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:17:21 +0200 Subject: [PATCH 210/271] Update src/debug.c Co-authored-by: Eduardo Quezada D'Ottone --- src/debug.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/debug.c b/src/debug.c index 9e8a9b5b89..4cc1ac6168 100644 --- a/src/debug.c +++ b/src/debug.c @@ -128,7 +128,6 @@ enum { //Sound DEBUG_SOUND_MENU_ITEM_MUS, }; - // ******************************* // Constants #define DEBUG_MAIN_MENU_WIDTH 15 From 33f10d2139b4e47d9f6705c8b9b30ef5533d48e0 Mon Sep 17 00:00:00 2001 From: tustin2121 Date: Mon, 5 Sep 2022 09:49:20 -0400 Subject: [PATCH 211/271] Adding missing externs If there are not externs on these forward declarations, it's entirely possible for the program to link and missing data to be assigned to someplace presumed in IWRAM or something. --- .../field_effect_object_template_pointers.h | 74 +-- .../object_event_graphics_info_pointers.h | 492 +++++++++--------- 2 files changed, 283 insertions(+), 283 deletions(-) diff --git a/src/data/field_effects/field_effect_object_template_pointers.h b/src/data/field_effects/field_effect_object_template_pointers.h index 41d6271bf2..64a3c3283b 100755 --- a/src/data/field_effects/field_effect_object_template_pointers.h +++ b/src/data/field_effects/field_effect_object_template_pointers.h @@ -1,40 +1,40 @@ -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge; -const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple; -const struct SpriteTemplate gFieldEffectObjectTemplate_Ash; -const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob; -const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow; -const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust; -const struct SpriteTemplate gFieldEffectObjectTemplate_JumpTallGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints; -const struct SpriteTemplate gFieldEffectObjectTemplate_JumpBigSplash; -const struct SpriteTemplate gFieldEffectObjectTemplate_Splash; -const struct SpriteTemplate gFieldEffectObjectTemplate_JumpSmallSplash; -const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_JumpLongGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass2; -const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedSand; -const struct SpriteTemplate gFieldEffectObjectTemplate_WaterSurfacing; -const struct SpriteTemplate gFieldEffectObjectTemplate_ReflectionDistortion; -const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle; -const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints; -const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise; -const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise; -const struct SpriteTemplate gFieldEffectObjectTemplate_Bird; -const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks; -const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder; -const struct SpriteTemplate gFieldEffectObjectTemplate_SandPile; -const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass; -const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater; -const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff; -const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; -const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; -const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; -const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Ash; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_JumpTallGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_JumpBigSplash; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Splash; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_JumpSmallSplash; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_JumpLongGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass2; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedSand; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_WaterSurfacing; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ReflectionDistortion; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Bird; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SandPile; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle; +extern const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza; const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = { [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall, diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h index 1c94919a75..ae1117164a 100755 --- a/src/data/object_events/object_event_graphics_info_pointers.h +++ b/src/data/object_events/object_event_graphics_info_pointers.h @@ -1,249 +1,249 @@ -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1; -const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1; +extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2; const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM_OBJ_EVENT_GFX] = { From 7dabd903cef19c03056a38d9571e26b600f93e5b Mon Sep 17 00:00:00 2001 From: "U-DESKTOP-K1J86FD\\Owner" Date: Mon, 5 Sep 2022 12:07:38 -0400 Subject: [PATCH 212/271] v -> STATUS4_WATER_SPORT (applicable to Gens 3-5) --- src/battle_script_commands.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 18fa5bbdff..ddc502c00d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -13476,7 +13476,7 @@ static void Cmd_settypebasedhalvers(void) #else if (!(gStatuses4[gBattlerAttacker] & STATUS4_WATER_SPORT)) { - gStatuses4[gBattlerAttacker] |= v; + gStatuses4[gBattlerAttacker] |= STATUS4_WATER_SPORT; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_FIRE; worked = TRUE; } From e253a87bc5c8a235b579383fac25f9f08f56da33 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 5 Sep 2022 14:49:14 -0400 Subject: [PATCH 213/271] Consolidated Gen constants into config.h, with a new const called GEN_LATEST, to help edit all at once. --- data/battle_anim_scripts.s | 1 + data/battle_scripts_1.s | 1 + include/config.h | 9 ++ include/constants/battle_config.h | 241 ++++++++++++++--------------- include/constants/item_config.h | 21 +-- include/constants/pokemon_config.h | 29 ++-- 6 files changed, 143 insertions(+), 159 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 47e9216422..9ca1c96655 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/battle.h" #include "constants/battle_anim.h" #include "constants/rgb.h" diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index e3d4c89430..f1e72e8aa2 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,3 +1,4 @@ +#include "config.h" #include "constants/global.h" #include "constants/battle.h" #include "constants/pokemon.h" diff --git a/include/config.h b/include/config.h index d4a71c0766..d6c60a2fa8 100644 --- a/include/config.h +++ b/include/config.h @@ -44,4 +44,13 @@ #define POKEMON_EXPANSION #define ITEM_EXPANSION +// Generation constants used in configs to define behavior +#define GEN_3 0 +#define GEN_4 1 +#define GEN_5 2 +#define GEN_6 3 +#define GEN_7 4 +#define GEN_8 5 +#define GEN_LATEST GEN_8 + #endif // GUARD_CONFIG_H diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index d85f5e4373..c2715fbaeb 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -1,135 +1,126 @@ #ifndef GUARD_CONSTANTS_BATTLE_CONFIG_H #define GUARD_CONSTANTS_BATTLE_CONFIG_H -#ifndef GEN_3 - #define GEN_3 0 - #define GEN_4 1 - #define GEN_5 2 - #define GEN_6 3 - #define GEN_7 4 - #define GEN_8 5 -#endif - // Calculation settings -#define B_CRIT_CHANCE GEN_7 // Chances of a critical hit landing. See CalcCritChanceStage. Gen6+ chances guarantee that Farfetch'd and Sirfetch'd always get critical hits while holding a Leek and using high-crit ratio moves. -#define B_CRIT_MULTIPLIER GEN_7 // In Gen6+, critical hits multiply damage by 1.5 instead of 2. -#define B_PARALYSIS_SPEED GEN_7 // In Gen7+, Speed is decreased by 50% instead of 75%. -#define B_CONFUSION_SELF_DMG_CHANCE GEN_7 // In Gen7+, confusion has a 33.3% of self-damage, instead of 50%. -#define B_MULTI_HIT_CHANCE GEN_7 // In Gen5+, multi-hit moves have different %. See Cmd_setmultihitcounter for values. -#define B_WHITEOUT_MONEY GEN_7 // In Gen4+, the amount of money lost by losing a battle is determined by the amount of badges earned. Previously, it would cut the current money by half. (While this change was also in FRLG, for the sake of simplicity, setting this to GEN_3 will result in RSE behavior.) +#define B_CRIT_CHANCE GEN_LATEST // Chances of a critical hit landing. See CalcCritChanceStage. Gen6+ chances guarantee that Farfetch'd and Sirfetch'd always get critical hits while holding a Leek and using high-crit ratio moves. +#define B_CRIT_MULTIPLIER GEN_LATEST // In Gen6+, critical hits multiply damage by 1.5 instead of 2. +#define B_PARALYSIS_SPEED GEN_LATEST // In Gen7+, Speed is decreased by 50% instead of 75%. +#define B_CONFUSION_SELF_DMG_CHANCE GEN_LATEST // In Gen7+, confusion has a 33.3% of self-damage, instead of 50%. +#define B_MULTI_HIT_CHANCE GEN_LATEST // In Gen5+, multi-hit moves have different %. See Cmd_setmultihitcounter for values. +#define B_WHITEOUT_MONEY GEN_LATEST // In Gen4+, the amount of money lost by losing a battle is determined by the amount of badges earned. Previously, it would cut the current money by half. (While this change was also in FRLG, for the sake of simplicity, setting this to GEN_3 will result in RSE behavior.) // Exp and stat settings -#define B_EXP_CATCH GEN_7 // In Gen6+, Pokémon get experience from catching. -#define B_TRAINER_EXP_MULTIPLIER GEN_7 // In Gen7+, trainer battles no longer give a 1.5 multiplier to EXP gain. -#define B_SPLIT_EXP GEN_7 // In Gen6+, all participating mon get full experience. -#define B_SCALED_EXP GEN_7 // In Gen5 and Gen7+, experience is weighted by level difference. -#define B_BADGE_BOOST GEN_7 // In Gen4+, Gym Badges no longer boost a Pokémon's stats. -#define B_MAX_LEVEL_EV_GAINS GEN_7 // In Gen5+, Lv100 Pokémon can obtain Effort Values normally. -#define B_RECALCULATE_STATS GEN_7 // In Gen5+, the stats of the Pokémon who participate in battle are recalculated at the end of each battle. +#define B_EXP_CATCH GEN_LATEST // In Gen6+, Pokémon get experience from catching. +#define B_TRAINER_EXP_MULTIPLIER GEN_LATEST // In Gen7+, trainer battles no longer give a 1.5 multiplier to EXP gain. +#define B_SPLIT_EXP GEN_LATEST // In Gen6+, all participating mon get full experience. +#define B_SCALED_EXP GEN_LATEST // In Gen5 and Gen7+, experience is weighted by level difference. +#define B_BADGE_BOOST GEN_LATEST // In Gen4+, Gym Badges no longer boost a Pokémon's stats. +#define B_MAX_LEVEL_EV_GAINS GEN_LATEST // In Gen5+, Lv100 Pokémon can obtain Effort Values normally. +#define B_RECALCULATE_STATS GEN_LATEST // In Gen5+, the stats of the Pokémon who participate in battle are recalculated at the end of each battle. // Damage settings -#define B_BURN_DAMAGE GEN_7 // In Gen7+, burn damage is 1/16th of max HP instead of 1/8th. -#define B_BURN_FACADE_DMG GEN_7 // In Gen6+, burn's effect of lowering the Attack stat no longer applies to Facade. -#define B_BINDING_DAMAGE GEN_7 // In Gen6+, binding damage is 1/8 of max HP instead of 1/16. (With Binding Band, 1/6 and 1/8 respectively.) -#define B_PSYWAVE_DMG GEN_7 // Psywave's damage formula. See Cmd_psywavedamageeffect. -#define B_PAYBACK_SWITCH_BOOST GEN_7 // In Gen5+, if the opponent switches out, Payback's damage will no longer be doubled. -#define B_HIDDEN_POWER_DMG GEN_7 // In Gen6+, Hidden Power's base power was set to always be 60. Before, it was determined by the mon's IVs. -#define B_ROUGH_SKIN_DMG GEN_7 // In Gen4+, Rough Skin contact damage is 1/8th of max HP instead of 1/16th. This will also affect Iron Barbs. -#define B_KNOCK_OFF_DMG GEN_8 // In Gen6+, Knock Off deals 50% more damage when knocking off an item. -#define B_SPORT_DMG_REDUCTION GEN_7 // In Gen5+, Water/Mud Sport reduce Fire/Electric Damage by 67% instead of 50%. -#define B_EXPLOSION_DEFENSE GEN_7 // In Gen5+, Self-Destruct and Explosion don't halve the targets' defense. +#define B_BURN_DAMAGE GEN_LATEST // In Gen7+, burn damage is 1/16th of max HP instead of 1/8th. +#define B_BURN_FACADE_DMG GEN_LATEST // In Gen6+, burn's effect of lowering the Attack stat no longer applies to Facade. +#define B_BINDING_DAMAGE GEN_LATEST // In Gen6+, binding damage is 1/8 of max HP instead of 1/16. (With Binding Band, 1/6 and 1/8 respectively.) +#define B_PSYWAVE_DMG GEN_LATEST // Psywave's damage formula. See Cmd_psywavedamageeffect. +#define B_PAYBACK_SWITCH_BOOST GEN_LATEST // In Gen5+, if the opponent switches out, Payback's damage will no longer be doubled. +#define B_HIDDEN_POWER_DMG GEN_LATEST // In Gen6+, Hidden Power's base power was set to always be 60. Before, it was determined by the mon's IVs. +#define B_ROUGH_SKIN_DMG GEN_LATEST // In Gen4+, Rough Skin contact damage is 1/8th of max HP instead of 1/16th. This will also affect Iron Barbs. +#define B_KNOCK_OFF_DMG GEN_LATEST // In Gen6+, Knock Off deals 50% more damage when knocking off an item. +#define B_SPORT_DMG_REDUCTION GEN_LATEST // In Gen5+, Water/Mud Sport reduce Fire/Electric Damage by 67% instead of 50%. +#define B_EXPLOSION_DEFENSE GEN_LATEST // In Gen5+, Self-Destruct and Explosion don't halve the targets' defense. // Type settings -#define B_GHOSTS_ESCAPE GEN_7 // In Gen6+, abilities like Shadow Tag or moves like Mean Look fail on Ghost-type Pokémon. They can also escape any Wild Battle. -#define B_PARALYZE_ELECTRIC GEN_7 // In Gen6+, Electric-type Pokémon can't be paralyzed. -#define B_POWDER_GRASS GEN_7 // In Gen6+, Grass-type Pokémon are immune to powder and spore moves. -#define B_STEEL_RESISTANCES GEN_7 // In Gen6+, Steel-type Pokémon are no longer resistant to Dark-type and Ghost-type moves. -#define B_PRANKSTER_DARK_TYPES GEN_7 // In Gen7+, Prankster-elevated status moves do not affect Dark type Pokémon. -#define B_SHEER_COLD_IMMUNITY GEN_7 // In Gen7+, Ice-types are immune to Sheer Cold +#define B_GHOSTS_ESCAPE GEN_LATEST // In Gen6+, abilities like Shadow Tag or moves like Mean Look fail on Ghost-type Pokémon. They can also escape any Wild Battle. +#define B_PARALYZE_ELECTRIC GEN_LATEST // In Gen6+, Electric-type Pokémon can't be paralyzed. +#define B_POWDER_GRASS GEN_LATEST // In Gen6+, Grass-type Pokémon are immune to powder and spore moves. +#define B_STEEL_RESISTANCES GEN_LATEST // In Gen6+, Steel-type Pokémon are no longer resistant to Dark-type and Ghost-type moves. +#define B_PRANKSTER_DARK_TYPES GEN_LATEST // In Gen7+, Prankster-elevated status moves do not affect Dark type Pokémon. +#define B_SHEER_COLD_IMMUNITY GEN_LATEST // In Gen7+, Ice-types are immune to Sheer Cold // Turn settings -#define B_BINDING_TURNS GEN_7 // In Gen5+, binding moves last for 4-5 turns instead of 2-5 turns. (With Grip Claw, 7 and 5 turns respectively.) -#define B_UPROAR_TURNS GEN_7 // In Gen5+, Uproar lasts for 3 turns instead of 2-5 turns. -#define B_DISABLE_TURNS GEN_7 // Disable's turns. See Cmd_disablelastusedattack. -#define B_TAILWIND_TURNS GEN_7 // In Gen5+, Tailwind lasts 4 turns instead of 3. -#define B_SLEEP_TURNS GEN_7 // In Gen5+, sleep lasts for 1-3 turns instead of 2-5 turns. -#define B_TAUNT_TURNS GEN_7 // In Gen5+, Taunt lasts 3 turns if the user acts before the target, or 4 turns if the target acted before the user. In Gen3, taunt lasts 2 turns and in Gen 4, 3-5 turns. -#define B_SPORT_TURNS GEN_7 // In Gen6+, Water/Mud Sport last 5 turns, even if the user switches out. -#define B_MEGA_EVO_TURN_ORDER GEN_7 // In Gen7, a Pokémon's Speed after Mega Evolution is used to determine turn order, not its Speed before. -#define B_RECALC_TURN_AFTER_ACTIONS GEN_8 // In Gen8, switching/using a move affects the current turn's order of actions. -#define B_FAINT_SWITCH_IN GEN_7 // In Gen4+, sending out a new Pokémon after the previous one fainted happens at the end of the turn. Before, it would happen after each action. +#define B_BINDING_TURNS GEN_LATEST // In Gen5+, binding moves last for 4-5 turns instead of 2-5 turns. (With Grip Claw, 7 and 5 turns respectively.) +#define B_UPROAR_TURNS GEN_LATEST // In Gen5+, Uproar lasts for 3 turns instead of 2-5 turns. +#define B_DISABLE_TURNS GEN_LATEST // Disable's turns. See Cmd_disablelastusedattack. +#define B_TAILWIND_TURNS GEN_LATEST // In Gen5+, Tailwind lasts 4 turns instead of 3. +#define B_SLEEP_TURNS GEN_LATEST // In Gen5+, sleep lasts for 1-3 turns instead of 2-5 turns. +#define B_TAUNT_TURNS GEN_LATEST // In Gen5+, Taunt lasts 3 turns if the user acts before the target, or 4 turns if the target acted before the user. In Gen3, taunt lasts 2 turns and in Gen 4, 3-5 turns. +#define B_SPORT_TURNS GEN_LATEST // In Gen6+, Water/Mud Sport last 5 turns, even if the user switches out. +#define B_MEGA_EVO_TURN_ORDER GEN_LATEST // In Gen7, a Pokémon's Speed after Mega Evolution is used to determine turn order, not its Speed before. +#define B_RECALC_TURN_AFTER_ACTIONS GEN_LATEST // In Gen8, switching/using a move affects the current turn's order of actions. +#define B_FAINT_SWITCH_IN GEN_LATEST // In Gen4+, sending out a new Pokémon after the previous one fainted happens at the end of the turn. Before, it would happen after each action. // Move data settings -#define B_UPDATED_MOVE_DATA GEN_8 // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets, chances of secondary effects, etc. -#define B_PHYSICAL_SPECIAL_SPLIT GEN_7 // In Gen3, the move's type determines if it will do physical or special damage. The split icon in the summary will reflect this. -#define B_RECOIL_IF_MISS_DMG GEN_7 // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing. -#define B_KLUTZ_FLING_INTERACTION GEN_7 // In Gen5+, Pokémon with the Klutz ability can't use Fling. -#define B_UPDATED_CONVERSION GEN_7 // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. -#define B_PP_REDUCED_BY_SPITE GEN_7 // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. +#define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets, chances of secondary effects, etc. +#define B_PHYSICAL_SPECIAL_SPLIT GEN_LATEST // In Gen3, the move's type determines if it will do physical or special damage. The split icon in the summary will reflect this. +#define B_RECOIL_IF_MISS_DMG GEN_LATEST // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing. +#define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. +#define B_UPDATED_CONVERSION GEN_LATEST // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random. +#define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. // Move accuracy settings -#define B_TOXIC_NEVER_MISS GEN_7 // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. -#define B_MINIMIZE_DMG_ACC GEN_7 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. -#define B_BLIZZARD_HAIL GEN_7 // In Gen4+, Blizzard bypasses accuracy checks if it's hailing. -#define B_SHEER_COLD_ACC GEN_7 // In Gen7+, Sheer Cold's base chance of hitting is reduced to 20% if the user isn't Ice-typed. +#define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. +#define B_MINIMIZE_DMG_ACC GEN_LATEST // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. +#define B_BLIZZARD_HAIL GEN_LATEST // In Gen4+, Blizzard bypasses accuracy checks if it's hailing. +#define B_SHEER_COLD_ACC GEN_LATEST // In Gen7+, Sheer Cold's base chance of hitting is reduced to 20% if the user isn't Ice-typed. // Move stat change settings -#define B_FELL_STINGER_STAT_RAISE GEN_7 // In Gen7+, it raises Atk by 3 stages instead of 2 if it causes the target to faint. -#define B_KINGS_SHIELD_LOWER_ATK GEN_7 // In Gen8+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. -#define B_SPEED_BUFFING_RAPID_SPIN GEN_8 // In Gen8, Rapid Spin raises the user's Speed by 1 stage. -#define B_CHARGE_SPDEF_RAISE GEN_7 // In Gen5+, Charge raises the user's Special Defense by 1 stage. -#define B_MINIMIZE_EVASION GEN_7 // In Gen5+, Minimize raises evasion by 2 stages instead of 1. -#define B_GROWTH_STAT_RAISE GEN_7 // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. +#define B_FELL_STINGER_STAT_RAISE GEN_LATEST // In Gen7+, it raises Atk by 3 stages instead of 2 if it causes the target to faint. +#define B_KINGS_SHIELD_LOWER_ATK GEN_LATEST // In Gen8+, it lowers Atk by 1 stage instead of 2 of oponents that hit it. +#define B_SPEED_BUFFING_RAPID_SPIN GEN_LATEST // In Gen8, Rapid Spin raises the user's Speed by 1 stage. +#define B_CHARGE_SPDEF_RAISE GEN_LATEST // In Gen5+, Charge raises the user's Special Defense by 1 stage. +#define B_MINIMIZE_EVASION GEN_LATEST // In Gen5+, Minimize raises evasion by 2 stages instead of 1. +#define B_GROWTH_STAT_RAISE GEN_LATEST // In Gen5+, Growth raises Attack in addition to Special Attack by 1 stage each. Under the effects of the sun, it raises them by 2 stages each instead. // Other move settings -#define B_SOUND_SUBSTITUTE GEN_7 // In Gen6+, sound moves bypass Substitute. -#define B_INCINERATE_GEMS GEN_7 // In Gen6+, Incinerate can destroy Gems. -#define B_CAN_SPITE_FAIL GEN_7 // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. -#define B_CRASH_IF_TARGET_IMMUNE GEN_7 // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. -#define B_MEMENTO_FAIL GEN_7 // In Gen4+, Memento fails if there is no target or if the target is protected or behind substitute. But not if Atk/Sp. Atk are at -6. -#define B_GLARE_GHOST GEN_7 // In Gen4+, Glare can hit Ghost-type Pokémon normally. -#define B_SKILL_SWAP GEN_7 // In Gen4+, Skill Swap triggers switch-in abilities after use. -#define B_BRICK_BREAK GEN_7 // In Gen4+, you can destroy your own side's screens. In Gen 5+, screens are not removed if the target is immune. -#define B_WISH_HP_SOURCE GEN_7 // In Gen5+, Wish heals half of the user's max HP instead of the target's. -#define B_RAMPAGE_CANCELLING GEN_7 // In Gen5+, a failed Thrash, etc, will cancel except on its last turn. -#define B_HEAL_BLOCKING GEN_7 // In Gen5+, Heal Block prevents healing by Black Sludge, Leftovers, Shell Bell. Affected Pokémon will not consume held HP-restoring Berries or Berry Juice. - // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. -#define B_ROOTED_GROUNDING GEN_7 // In Gen4+, Ingrain causes the affected Pokémon to become grounded. +#define B_SOUND_SUBSTITUTE GEN_LATEST // In Gen6+, sound moves bypass Substitute. +#define B_INCINERATE_GEMS GEN_LATEST // In Gen6+, Incinerate can destroy Gems. +#define B_CAN_SPITE_FAIL GEN_LATEST // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP. +#define B_CRASH_IF_TARGET_IMMUNE GEN_LATEST // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move. +#define B_MEMENTO_FAIL GEN_LATEST // In Gen4+, Memento fails if there is no target or if the target is protected or behind substitute. But not if Atk/Sp. Atk are at -6. +#define B_GLARE_GHOST GEN_LATEST // In Gen4+, Glare can hit Ghost-type Pokémon normally. +#define B_SKILL_SWAP GEN_LATEST // In Gen4+, Skill Swap triggers switch-in abilities after use. +#define B_BRICK_BREAK GEN_LATEST // In Gen4+, you can destroy your own side's screens. In Gen 5+, screens are not removed if the target is immune. +#define B_WISH_HP_SOURCE GEN_LATEST // In Gen5+, Wish heals half of the user's max HP instead of the target's. +#define B_RAMPAGE_CANCELLING GEN_LATEST // In Gen5+, a failed Thrash, etc, will cancel except on its last turn. +#define B_HEAL_BLOCKING GEN_LATEST // In Gen5+, Heal Block prevents healing by Black Sludge, Leftovers, Shell Bell. Affected Pokémon will not consume held HP-restoring Berries or Berry Juice. + // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. +#define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded. // Ability settings -#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. -#define B_ABILITY_WEATHER GEN_7 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability. -#define B_GALE_WINGS GEN_7 // In Gen7+ requires full HP to trigger. -#define B_STANCE_CHANGE_FAIL GEN_7 // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't. -#define B_SHADOW_TAG_ESCAPE GEN_7 // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. -#define B_MOODY_ACC_EVASION GEN_8 // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. -#define B_FLASH_FIRE_FROZEN GEN_7 // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. -#define B_SYNCHRONIZE_NATURE GEN_8 // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same ability, as opposed to 50% previously. -#define B_SYNCHRONIZE_TOXIC GEN_8 // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. -#define B_UPDATED_INTIMIDATE GEN_8 // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. -#define B_OBLIVIOUS_TAUNT GEN_7 // In Gen6+, Pokémon with Oblivious can't be taunted. -#define B_STURDY GEN_7 // In Gen5+, Sturdy causes the Pokémon to have 1 HP remaining if another Pokémon's attack or confusion damage would have brought it from full health to 0 HP. -#define B_PLUS_MINUS_INTERACTION GEN_7 // In Gen5+, Plus and Minus can be activated with themselves and the opposite ability. Before, only the opposing ability could activate it. +#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. +#define B_ABILITY_WEATHER GEN_LATEST // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability. +#define B_GALE_WINGS GEN_LATEST // In Gen7+ requires full HP to trigger. +#define B_STANCE_CHANGE_FAIL GEN_LATEST // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't. +#define B_SHADOW_TAG_ESCAPE GEN_LATEST // In Gen4+, if both sides have a Pokémon with Shadow Tag, all battlers can escape. Before, neither side could escape this situation. +#define B_MOODY_ACC_EVASION GEN_LATEST // In Gen8, Moody CANNOT raise Accuracy and Evasion anymore. +#define B_FLASH_FIRE_FROZEN GEN_LATEST // In Gen5+, Flash Fire can trigger even when frozen, when it couldn't before. +#define B_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same ability, as opposed to 50% previously. +#define B_SYNCHRONIZE_TOXIC GEN_LATEST // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned. +#define B_UPDATED_INTIMIDATE GEN_LATEST // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled. +#define B_OBLIVIOUS_TAUNT GEN_LATEST // In Gen6+, Pokémon with Oblivious can't be taunted. +#define B_STURDY GEN_LATEST // In Gen5+, Sturdy causes the Pokémon to have 1 HP remaining if another Pokémon's attack or confusion damage would have brought it from full health to 0 HP. +#define B_PLUS_MINUS_INTERACTION GEN_LATEST // In Gen5+, Plus and Minus can be activated with themselves and the opposite ability. Before, only the opposing ability could activate it. // Item settings -#define B_HP_BERRIES GEN_7 // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. -#define B_BERRIES_INSTANT GEN_7 // In Gen4+, most berries activate on battle start/switch-in if applicable. In Gen3, they only activate either at the move end or turn end. -#define B_CONFUSE_BERRIES_HEAL GEN_8 // Before Gen7, Figy and similar berries restore 1/8th of HP and trigger at half HP. In Gen7 they restore half HP, triggering at 25% HP. In Gen8 they heal 1/3rd of HP. -#define B_X_ITEMS_BUFF GEN_7 // In Gen7+, the X Items raise a stat by 2 stages instead of 1. -#define B_MENTAL_HERB GEN_5 // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. -#define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. -#define B_SOUL_DEW_BOOST GEN_7 // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. -#define B_NET_BALL_MODIFIER GEN_7 // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. -#define B_DIVE_BALL_MODIFIER GEN_7 // In Gen4+, Dive Ball's effectiveness increases by when Surfing or Fishing. -#define B_NEST_BALL_MODIFIER GEN_7 // Nest Ball's formula varies depending on the Gen. See Cmd_handleballthrow. -#define B_REPEAT_BALL_MODIFIER GEN_7 // In Gen7+, Repeat Ball's catch multiplier is x3.5 instead of x3. -#define B_TIMER_BALL_MODIFIER GEN_7 // In Gen5+, Timer Ball's effectiveness increases by x0.3 per turn instead of x0.1 -#define B_DUSK_BALL_MODIFIER GEN_7 // In Gen7+, Dusk Ball's catch multiplier is x3 instead of x3.5. -#define B_QUICK_BALL_MODIFIER GEN_7 // In Gen5+, Quick Ball's catch multiplier is x5 instead of x4. -#define B_LURE_BALL_MODIFIER GEN_7 // In Gen7+, Lure Ball's catch multiplier is x5 instead of x3. -#define B_HEAVY_BALL_MODIFIER GEN_7 // In Gen7+, Heavy Ball's ranges change. See Cmd_handleballthrow. -#define B_DREAM_BALL_MODIFIER GEN_8 // In Gen8, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose. -#define B_SERENE_GRACE_BOOST GEN_7 // In Gen5+, Serene Grace boosts the added flinch chance of King's Rock and Razor Fang. +#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. +#define B_BERRIES_INSTANT GEN_LATEST // In Gen4+, most berries activate on battle start/switch-in if applicable. In Gen3, they only activate either at the move end or turn end. +#define B_CONFUSE_BERRIES_HEAL GEN_LATEST // Before Gen7, Figy and similar berries restore 1/8th of HP and trigger at half HP. In Gen7 they restore half HP, triggering at 25% HP. In Gen8 they heal 1/3rd of HP. +#define B_X_ITEMS_BUFF GEN_LATEST // In Gen7+, the X Items raise a stat by 2 stages instead of 1. +#define B_MENTAL_HERB GEN_LATEST // In Gen5+, the Mental Herb cures Taunt, Encore, Torment, Heal Block, and Disable in addition to Infatuation from before. +#define B_TRAINERS_KNOCK_OFF_ITEMS TRUE // If TRUE, trainers can steal/swap your items (non-berries are restored after battle). In vanilla games trainers cannot steal items. +#define B_SOUL_DEW_BOOST GEN_LATEST // In Gens3-6, Soul Dew boosts Lati@s' Sp. Atk and Sp. Def. In Gen7+ it boosts the power of their Psychic and Dragon type moves instead. +#define B_NET_BALL_MODIFIER GEN_LATEST // In Gen7+, Net Ball's catch multiplier is x5 instead of x3. +#define B_DIVE_BALL_MODIFIER GEN_LATEST // In Gen4+, Dive Ball's effectiveness increases by when Surfing or Fishing. +#define B_NEST_BALL_MODIFIER GEN_LATEST // Nest Ball's formula varies depending on the Gen. See Cmd_handleballthrow. +#define B_REPEAT_BALL_MODIFIER GEN_LATEST // In Gen7+, Repeat Ball's catch multiplier is x3.5 instead of x3. +#define B_TIMER_BALL_MODIFIER GEN_LATEST // In Gen5+, Timer Ball's effectiveness increases by x0.3 per turn instead of x0.1 +#define B_DUSK_BALL_MODIFIER GEN_LATEST // In Gen7+, Dusk Ball's catch multiplier is x3 instead of x3.5. +#define B_QUICK_BALL_MODIFIER GEN_LATEST // In Gen5+, Quick Ball's catch multiplier is x5 instead of x4. +#define B_LURE_BALL_MODIFIER GEN_LATEST // In Gen7+, Lure Ball's catch multiplier is x5 instead of x3. +#define B_HEAVY_BALL_MODIFIER GEN_LATEST // In Gen7+, Heavy Ball's ranges change. See Cmd_handleballthrow. +#define B_DREAM_BALL_MODIFIER GEN_LATEST // In Gen8, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose. +#define B_SERENE_GRACE_BOOST GEN_LATEST // In Gen5+, Serene Grace boosts the added flinch chance of King's Rock and Razor Fang. // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. @@ -145,13 +136,13 @@ #define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. NOT usable with flags above (1 << 15) // Terrain settings -#define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. -#define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8. -#define B_TERRAIN_TYPE_BOOST GEN_8 // In Gen8, damage is boosted by 30% instead of 50%. -#define B_SECRET_POWER_EFFECT GEN_7 // Secret Power's effects change depending on terrain and generation. See GetSecretPowerMoveEffect. -#define B_SECRET_POWER_ANIMATION GEN_7 // Secret Power's animations change depending on terrain and generation. -#define B_NATURE_POWER_MOVES GEN_8 // Nature Power calls different moves depending on terrain and generation. See sNaturePowerMoves. -#define B_CAMOUFLAGE_TYPES GEN_7 // Camouflage changes the user to different types depending on terrain and generation. See sTerrainToType. +#define B_TERRAIN_BG_CHANGE TRUE // If set to TRUE, terrain moves permanently change the default battle background until the effect fades. +#define B_THUNDERSTORM_TERRAIN TRUE // If TRUE, overworld Thunderstorm generates Rain and Electric Terrain as in Gen 8. +#define B_TERRAIN_TYPE_BOOST GEN_LATEST // In Gen8, damage is boosted by 30% instead of 50%. +#define B_SECRET_POWER_EFFECT GEN_LATEST // Secret Power's effects change depending on terrain and generation. See GetSecretPowerMoveEffect. +#define B_SECRET_POWER_ANIMATION GEN_LATEST // Secret Power's animations change depending on terrain and generation. +#define B_NATURE_POWER_MOVES GEN_LATEST // Nature Power calls different moves depending on terrain and generation. See sNaturePowerMoves. +#define B_CAMOUFLAGE_TYPES GEN_LATEST // Camouflage changes the user to different types depending on terrain and generation. See sTerrainToType. // Interface settings #define B_ABILITY_POP_UP TRUE // In Gen5+, the Pokémon abilities are displayed in a pop-up, when they activate in battle. @@ -163,18 +154,18 @@ #define B_EXPANDED_MOVE_NAMES FALSE // If set to TRUE, move names are increased from 12 characters to 16 characters. // Catching settings -#define B_SEMI_INVULNERABLE_CATCH GEN_7 // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc) -#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm. -#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. -#define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented -#define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. +#define B_SEMI_INVULNERABLE_CATCH GEN_LATEST // In Gen4+, you cannot throw a ball against a Pokemon that is in a semi-invulnerable state (dig/fly/etc) +#define B_CATCHING_CHARM_BOOST 20 // % boost in Critical Capture odds if player has the Catching Charm. +#define B_CRITICAL_CAPTURE TRUE // If set to TRUE, Critical Capture will be enabled. +#define B_LAST_USED_BALL TRUE // If TRUE, the "last used ball" feature from Gen 7 will be implemented +#define B_LAST_USED_BALL_BUTTON R_BUTTON // If last used ball is implemented, this button (or button combo) will trigger throwing the last used ball. // Other settings -#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. -#define B_MULTI_BATTLE_WHITEOUT GEN_8 // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. -#define B_EVOLUTION_AFTER_WHITEOUT GEN_6 // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. -#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) -#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. +#define B_DOUBLE_WILD_CHANCE 0 // % chance of encountering two Pokémon in a Wild Encounter. +#define B_MULTI_BATTLE_WHITEOUT GEN_LATEST // In Gen4+, multi battles end when the Player and also their Partner don't have any more Pokémon to fight. +#define B_EVOLUTION_AFTER_WHITEOUT GEN_LATEST // In Gen6+, Pokemon that qualify for evolution after battle will evolve even if the player loses. +#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper) +#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead. // Animation Settings #define B_NEW_SWORD_PARTICLE FALSE // If set to TRUE, it updates Swords Dance's particle. diff --git a/include/constants/item_config.h b/include/constants/item_config.h index 70b4440c84..9261241a5f 100644 --- a/include/constants/item_config.h +++ b/include/constants/item_config.h @@ -1,21 +1,12 @@ #ifndef GUARD_CONSTANTS_ITEM_CONFIG_H #define GUARD_CONSTANTS_ITEM_CONFIG_H -#ifndef GEN_3 -#define GEN_3 0 -#define GEN_4 1 -#define GEN_5 2 -#define GEN_6 3 -#define GEN_7 4 -#define GEN_8 5 -#endif - // Item config -#define I_SHINY_CHARM_REROLLS 3 // Amount of re-rolls if the player has the Shiny Charm. Set to 0 to disable Shiny Charm's effects. -#define I_KEY_FOSSILS GEN_7 // In Gen4+, all Gen 3 fossils became regular items. -#define I_KEY_ESCAPE_ROPE GEN_7 // In Gen8, Escape Rope became a Key Item. Keep in mind, this will make it free to buy in marts. -#define I_HEALTH_RECOVERY GEN_7 // In Gen7+, certain healing items recover a different amount of HP than they used to. -#define I_SITRUS_BERRY_HEAL GEN_7 // In Gen4+, Sitrus Berry was changed from healing 30 HP to healing 25% of Max HP. -#define I_VITAMIN_EV_CAP GEN_8 // In Gen8, the Vitamins no longer have a cap of 100 EV per stat. +#define I_SHINY_CHARM_REROLLS 3 // Amount of re-rolls if the player has the Shiny Charm. Set to 0 to disable Shiny Charm's effects. +#define I_KEY_FOSSILS GEN_LATEST // In Gen4+, all Gen 3 fossils became regular items. +#define I_KEY_ESCAPE_ROPE GEN_LATEST // In Gen8, Escape Rope became a Key Item. Keep in mind, this will make it free to buy in marts. +#define I_HEALTH_RECOVERY GEN_LATEST // In Gen7+, certain healing items recover a different amount of HP than they used to. +#define I_SITRUS_BERRY_HEAL GEN_LATEST // In Gen4+, Sitrus Berry was changed from healing 30 HP to healing 25% of Max HP. +#define I_VITAMIN_EV_CAP GEN_LATEST // In Gen8, the Vitamins no longer have a cap of 100 EV per stat. #endif // GUARD_CONSTANTS_ITEM_CONFIG_H diff --git a/include/constants/pokemon_config.h b/include/constants/pokemon_config.h index 879b755641..40acd8c808 100644 --- a/include/constants/pokemon_config.h +++ b/include/constants/pokemon_config.h @@ -1,26 +1,17 @@ #ifndef GUARD_CONSTANTS_POKEMON_CONFIG_H #define GUARD_CONSTANTS_POKEMON_CONFIG_H -#ifndef GEN_3 -#define GEN_3 0 -#define GEN_4 1 -#define GEN_5 2 -#define GEN_6 3 -#define GEN_7 4 -#define GEN_8 5 -#endif +#define P_UPDATED_TYPES GEN_LATEST // Since Gen 6, several Pokémon were changed to be partially or fully Fairy type. +#define P_UPDATED_STATS GEN_LATEST // Since Gen 6, Pokémon stats are updated with each passing generation. +#define P_UPDATED_ABILITIES GEN_LATEST // Since Gen 6, certain Pokémon have their abilities changed. +#define P_UPDATED_EGG_GROUPS GEN_LATEST // Since Gen 8, certain Pokémon have gained new egg groups. +#define P_SHEDINJA_BALL GEN_LATEST // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. +#define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. +#define P_KADABRA_EVERSTONE GEN_LATEST // Since Gen 4, Kadabra can evolve even when holding an Everstone. +#define P_NIDORAN_M_DITTO_BREED GEN_LATEST // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. -#define P_UPDATED_TYPES GEN_8 // Since Gen 6, several Pokémon were changed to be partially or fully Fairy type. -#define P_UPDATED_STATS GEN_8 // Since Gen 6, Pokémon stats are updated with each passing generation. -#define P_UPDATED_ABILITIES GEN_8 // Since Gen 6, certain Pokémon have their abilities changed. -#define P_UPDATED_EGG_GROUPS GEN_8 // Since Gen 8, certain Pokémon have gained new egg groups. -#define P_SHEDINJA_BALL GEN_8 // Since Gen 4, Shedinja requires a Poké Ball for its evolution. In Gen 3, Shedinja inherits Nincada's Ball. -#define P_LEGENDARY_PERFECT_IVS GEN_8 // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. -#define P_KADABRA_EVERSTONE GEN_8 // Since Gen 4, Kadabra can evolve even when holding an Everstone. -#define P_NIDORAN_M_DITTO_BREED GEN_8 // Since Gen 5, when Nidoran♂ breeds with Ditto it can produce Nidoran♀ offspring. Before, it would only yield male offspring. This change also applies to Volbeat. +#define P_NEW_POKEMON TRUE // Turning this to FALSE will remove all newly added Pokémon and Forms. Only Unown, Castform and Deoxys forms will remain. -#define P_NEW_POKEMON TRUE // Turning this to FALSE will remove all newly added Pokémon and Forms. Only Unown, Castform and Deoxys forms will remain. - -#define P_ENABLE_DEBUG TRUE // Enables a debug menu for pokemon sprites and icons, accessed by pressing SELECT in the summary screen. +#define P_ENABLE_DEBUG TRUE // Enables a debug menu for pokemon sprites and icons, accessed by pressing SELECT in the summary screen. #endif // GUARD_CONSTANTS_POKEMON_CONFIG_H From cb97f93ef607d8398c81ef6a3f3f3654a1565f10 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 5 Sep 2022 14:49:40 -0400 Subject: [PATCH 214/271] Fixed B_SHADOW_TAG_ESCAPE use for Gen 3 config --- src/battle_util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_util.c b/src/battle_util.c index 1472c50bf0..4ea11d93f5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -6055,7 +6055,7 @@ u32 IsAbilityPreventingEscape(u32 battlerId) #if B_SHADOW_TAG_ESCAPE >= GEN_4 if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) && GetBattlerAbility(battlerId) != ABILITY_SHADOW_TAG) #else - if (id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG)) + if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_SHADOW_TAG))) #endif return id; if ((id = IsAbilityOnOpposingSide(battlerId, ABILITY_ARENA_TRAP)) && IsBattlerGrounded(battlerId)) From bb290d5ab0f0e27466a71078a4f8b75f135863c4 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 1 Sep 2022 14:57:58 -0300 Subject: [PATCH 215/271] Updates -Removed the pointless param1 setting in sXerneasFormChangeTable -Updated the descriptions of Behemoth Blade and Behemoth Bash -Added a new parameter to the struct FormChange -Allowed FORM_BATTLE_BEGIN and FORM_BATTLE_END to replace a move through a new function called "TryToSetBattleFormChangeMoves". -Added missing calls to "CalculateMonStats". -Renamed BoxPokemon pointer in GetFormChangeTargetSpeciesBoxMon for consistency's sake -Optimized check inside UndoFormChange (even though the plan is to get rid of that func entirely.) Special thanks to Blecoutre who fixed my TryToSetBattleFormChangeMoves function. It just wasn't working correctly at all. --- include/pokemon.h | 5 ++- src/battle_main.c | 8 ++++ src/battle_util.c | 15 +++---- src/data/pokemon/form_change_tables.h | 16 ++++--- src/data/text/move_descriptions.h | 8 ++-- src/pokemon.c | 62 ++++++++++++++++++++++----- 6 files changed, 83 insertions(+), 31 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index c05628a598..9ebaa52a0d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -366,11 +366,13 @@ struct Evolution u16 targetSpecies; }; -struct FormChange { +struct FormChange +{ u16 method; u16 targetSpecies; u16 param1; u16 param2; + u16 param3; }; #define NUM_UNOWN_FORMS 28 @@ -559,5 +561,6 @@ u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg); u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg); u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove); bool32 ShouldShowFemaleDifferences(u16 species, u32 personality); +void TryToSetBattleFormChangeMoves(struct Pokemon *mon); #endif // GUARD_POKEMON_H diff --git a/src/battle_main.c b/src/battle_main.c index f75a7ae80b..84af5ae748 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -578,11 +578,19 @@ static void CB2_InitBattleInternal(void) // Player's side targetSpecies = GetFormChangeTargetSpecies(&gPlayerParty[i], FORM_BATTLE_BEGIN, 0); if (targetSpecies != SPECIES_NONE) + { SetMonData(&gPlayerParty[i], MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(&gPlayerParty[i]); + TryToSetBattleFormChangeMoves(&gPlayerParty[i]); + } // Opponent's side targetSpecies = GetFormChangeTargetSpecies(&gEnemyParty[i], FORM_BATTLE_BEGIN, 0); if (targetSpecies != SPECIES_NONE) + { SetMonData(&gEnemyParty[i], MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(&gEnemyParty[i]); + TryToSetBattleFormChangeMoves(&gEnemyParty[i]); + } } gBattleCommunication[MULTIUSE_STATE] = 0; diff --git a/src/battle_util.c b/src/battle_util.c index dff9d71da5..c9b4435f4c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9624,17 +9624,12 @@ void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) } if (!isSwitchingOut) { - // Apply party-wide end-of-battle form changes - for (i = 0; i < PARTY_SIZE; i++) + targetSpecies = GetFormChangeTargetSpecies(&party[monId], FORM_BATTLE_END, 0); + if (targetSpecies != SPECIES_NONE) { - // Player's side - targetSpecies = GetFormChangeTargetSpecies(&gPlayerParty[i], FORM_BATTLE_END, 0); - if (targetSpecies != SPECIES_NONE) - SetMonData(&gPlayerParty[i], MON_DATA_SPECIES, &targetSpecies); - // Opponent's side - targetSpecies = GetFormChangeTargetSpecies(&gEnemyParty[i], FORM_BATTLE_END, 0); - if (targetSpecies != SPECIES_NONE) - SetMonData(&gEnemyParty[i], MON_DATA_SPECIES, &targetSpecies); + SetMonData(&party[monId], MON_DATA_SPECIES, &targetSpecies); + CalculateMonStats(&party[monId]); + TryToSetBattleFormChangeMoves(&party[monId]); } } } diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index be76cc9956..914ca6d994 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -37,10 +37,14 @@ FORM_ITEM_USE_TIME: FORM_BATTLE_BEGIN: Form change activates when the Pokémon is sent out at the beginning of a battle param1 = item to hold, optional + param2 = a move that will be replaced, optional + param3 = a new move to replace it with, optional FORM_BATTLE_END: Form change activates at the end of a battle param1 = item to hold, optional + param2 = a move that will be replaced, optional + param3 = a new move to replace it with, optional */ // FORM_MOVE param2 Arguments @@ -194,20 +198,20 @@ static const struct FormChange sSilvallyFormChangeTable[] = { #endif static const struct FormChange sXerneasFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_XERNEAS_ACTIVE, ITEM_NONE}, - {FORM_BATTLE_END, SPECIES_XERNEAS, ITEM_NONE}, + {FORM_BATTLE_BEGIN, SPECIES_XERNEAS_ACTIVE}, + {FORM_BATTLE_END, SPECIES_XERNEAS, }, {FORM_CHANGE_END}, }; static const struct FormChange sZacianFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD}, - {FORM_BATTLE_END, SPECIES_ZACIAN, ITEM_RUSTED_SWORD}, + {FORM_BATTLE_BEGIN, SPECIES_ZACIAN_CROWNED_SWORD, ITEM_RUSTED_SWORD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BLADE}, + {FORM_BATTLE_END, SPECIES_ZACIAN, ITEM_RUSTED_SWORD, MOVE_BEHEMOTH_BLADE, MOVE_IRON_HEAD}, {FORM_CHANGE_END}, }; static const struct FormChange sZamazentaFormChangeTable[] = { - {FORM_BATTLE_BEGIN, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD}, - {FORM_BATTLE_END, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD}, + {FORM_BATTLE_BEGIN, SPECIES_ZAMAZENTA_CROWNED_SHIELD, ITEM_RUSTED_SHIELD, MOVE_IRON_HEAD, MOVE_BEHEMOTH_BASH}, + {FORM_BATTLE_END, SPECIES_ZAMAZENTA, ITEM_RUSTED_SHIELD, MOVE_BEHEMOTH_BASH, MOVE_IRON_HEAD}, {FORM_CHANGE_END}, }; diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index 7d890b1d3d..0a1d385042 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2791,12 +2791,12 @@ static const u8 sPyroBallDescription[] = _( "target. It may cause a burn."); static const u8 sBehemothBladeDescription[] = _( - "Strikes as a sword. It deals\n" - "2x damage to Dynamaxed foes."); + "Strikes as a sword. Deals 2x\n" + "damage to Dynamaxed foes."); static const u8 sBehemothBashDescription[] = _( - "Attacks as a shield. Deals\n" - "2x damage to Dynamaxed foes."); + "Attacks as a shield. Deals 2x\n" + "damage to Dynamaxed foes."); static const u8 sAuraWheelDescription[] = _( "Raises Speed to attack. The\n" diff --git a/src/pokemon.c b/src/pokemon.c index 06e75dbc3b..d1aa0abb07 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8243,19 +8243,19 @@ u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg) } // Returns SPECIES_NONE if no form change is possible -u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg) +u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg) { - u32 i; + u32 i, j; u16 targetSpecies = SPECIES_NONE; - u16 species = GetBoxMonData(mon, MON_DATA_SPECIES, NULL); + u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); const struct FormChange *formChanges = gFormChangeTablePointers[species]; u16 heldItem; u32 ability; if (formChanges != NULL) { - heldItem = GetBoxMonData(mon, MON_DATA_HELD_ITEM, NULL); - ability = GetAbilityBySpecies(species, GetBoxMonData(mon, MON_DATA_ABILITY_NUM, NULL)); + heldItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM, NULL); + ability = GetAbilityBySpecies(species, GetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, NULL)); for (i = 0; formChanges[i].method != FORM_CHANGE_END; i++) { @@ -8264,8 +8264,6 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg switch (method) { case FORM_ITEM_HOLD: - case FORM_BATTLE_BEGIN: - case FORM_BATTLE_END: if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) targetSpecies = formChanges[i].targetSpecies; break; @@ -8274,7 +8272,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg targetSpecies = formChanges[i].targetSpecies; break; case FORM_MOVE: - if (BoxMonKnowsMove(mon, formChanges[i].param1) != formChanges[i].param2) + if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_HOLD_ABILITY: @@ -8299,6 +8297,10 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *mon, u16 method, u32 arg } } break; + case FORM_BATTLE_BEGIN: + case FORM_BATTLE_END: + if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) + targetSpecies = formChanges[i].targetSpecies; } } } @@ -8358,7 +8360,7 @@ void TrySpecialOverworldEvo(void) u8 i; u8 evoMethod = gSpecialVar_0x8000; u16 canStopEvo = gSpecialVar_0x8001; - u16 tryMultiple = gSpecialVar_0x8002; + u16 tryMultiple = gSpecialVar_0x8002; for (i = 0; i < PARTY_SIZE; i++) { @@ -8375,7 +8377,7 @@ void TrySpecialOverworldEvo(void) else gCB2_AfterEvolution = CB2_ReturnToField; return; - } + } } sTriedEvolving = 0; @@ -8386,3 +8388,43 @@ bool32 ShouldShowFemaleDifferences(u16 species, u32 personality) { return (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; } + +void TryToSetBattleFormChangeMoves(struct Pokemon *mon) +{ + int i, j; + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + const struct FormChange *formChanges = gFormChangeTablePointers[species]; + u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); + + if (formChanges == NULL) + return; + + for (i = 0; formChanges[i].method != FORM_CHANGE_END; i++) + { + if ((formChanges[i].method == FORM_BATTLE_BEGIN || formChanges[i].method == FORM_BATTLE_END) + && formChanges[i].param2 && formChanges[i].param3 && formChanges[i].targetSpecies == species) + { + u16 originalMove = formChanges[i].param2; + u16 newMove = formChanges[i].param3; + + for (j = 0; j < MAX_MON_MOVES; j++) + { + u16 currMove = GetMonData(mon, MON_DATA_MOVE1 + j, NULL); + u8 totalPp = gBattleMoves[currMove].pp; // Get current move's max PP + u8 currPp = GetMonData(mon, MON_DATA_PP1 + j, NULL); // Get current move's remaining PP + u8 diffPp = totalPp - currPp; // Current move's PP difference + u8 finalPp = gBattleMoves[newMove].pp - diffPp; // Apply the PP difference to the new move + + if (currMove == originalMove) + { + if (finalPp > gBattleMoves[newMove].pp) + finalPp = 0; + SetMonMoveSlot(mon, newMove, j); + SetMonData(mon, MON_DATA_PP1 + j, &finalPp); + } + } + SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); + break; + } + } +} From 7a0838a0f2c45cae4a418f9513266daa02237796 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 1 Sep 2022 14:03:37 -0400 Subject: [PATCH 216/271] Adjusted `GetFormChangeTargetSpeciesBoxMon` to allow having form changes of the same method in the same table --- src/data/pokemon/form_change_table_pointers.h | 12 ++--- src/data/pokemon/form_change_tables.h | 50 ++++--------------- src/pokemon.c | 4 +- 3 files changed, 19 insertions(+), 47 deletions(-) diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 7bf249fcbe..85685e50ef 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -24,15 +24,15 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_ARCEUS_DARK] = sArceusFormChangeTable, [SPECIES_ARCEUS_FAIRY] = sArceusFormChangeTable, [SPECIES_TORNADUS] = sTornadusFormChangeTable, - [SPECIES_TORNADUS_THERIAN] = sTornadusTherianFormChangeTable, + [SPECIES_TORNADUS_THERIAN] = sTornadusFormChangeTable, [SPECIES_THUNDURUS] = sThundurusFormChangeTable, - [SPECIES_THUNDURUS_THERIAN] = sThundurusTherianFormChangeTable, + [SPECIES_THUNDURUS_THERIAN] = sThundurusFormChangeTable, [SPECIES_LANDORUS] = sLandorusFormChangeTable, - [SPECIES_LANDORUS_THERIAN] = sLandorusTherianFormChangeTable, + [SPECIES_LANDORUS_THERIAN] = sLandorusFormChangeTable, [SPECIES_ENAMORUS] = sEnamorusFormChangeTable, - [SPECIES_ENAMORUS_THERIAN] = sEnamorusTherianFormChangeTable, + [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormChangeTable, [SPECIES_KELDEO] = sKeldeoFormChangeTable, - [SPECIES_KELDEO_RESOLUTE] = sKeldeoResoluteFormChangeTable, + [SPECIES_KELDEO_RESOLUTE] = sKeldeoFormChangeTable, [SPECIES_GENESECT] = sGenesectFormChangeTable, [SPECIES_GENESECT_DOUSE_DRIVE] = sGenesectFormChangeTable, [SPECIES_GENESECT_SHOCK_DRIVE] = sGenesectFormChangeTable, @@ -41,7 +41,7 @@ const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = [SPECIES_XERNEAS] = sXerneasFormChangeTable, [SPECIES_XERNEAS_ACTIVE] = sXerneasFormChangeTable, [SPECIES_HOOPA] = sHoopaFormChangeTable, - [SPECIES_HOOPA_UNBOUND] = sHoopaUnboundFormChangeTable, + [SPECIES_HOOPA_UNBOUND] = sHoopaFormChangeTable, [SPECIES_ORICORIO] = sOricorioFormChangeTable, [SPECIES_ORICORIO_POM_POM] = sOricorioFormChangeTable, [SPECIES_ORICORIO_PAU] = sOricorioFormChangeTable, diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index ba24b14371..3a97f4efe6 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,8 +1,4 @@ /* -For cycling between forms with the same method and parameters but different target species (eg. Tornadus using the -Reveal Glass to change between its two forms), a separate form change table is required for each form. -Otherwise, only the last form change on the table will trigger. - FORM_ITEM_HOLD: Form change activates when the item is given to or taken from the selected Pokémon. param1 = item to hold @@ -64,7 +60,7 @@ static const struct FormChange sGiratinaFormChangeTable[] = { static const struct FormChange sShayminFormChangeTable[] = { {FORM_ITEM_USE_TIME, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, - {FORM_WITHDRAW, SPECIES_SHAYMIN}, + // {FORM_WITHDRAW, SPECIES_SHAYMIN}, {FORM_CHANGE_END}, }; @@ -109,51 +105,25 @@ static const struct FormChange sArceusFormChangeTable[] = { static const struct FormChange sTornadusFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_TORNADUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sTornadusTherianFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_TORNADUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sThundurusFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_THUNDURUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sThundurusTherianFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_THUNDURUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; static const struct FormChange sLandorusFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_LANDORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sLandorusTherianFormChangeTable[] = { {FORM_ITEM_USE, SPECIES_LANDORUS, ITEM_REVEAL_GLASS}, {FORM_CHANGE_END}, }; -static const struct FormChange sEnamorusFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sEnamorusTherianFormChangeTable[] = { - {FORM_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, - {FORM_CHANGE_END}, -}; - static const struct FormChange sKeldeoFormChangeTable[] = { - {FORM_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sKeldeoResoluteFormChangeTable[] = { - {FORM_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, + // {FORM_MOVE, SPECIES_KELDEO_RESOLUTE, MOVE_SECRET_SWORD, WHEN_LEARNED}, + // {FORM_MOVE, SPECIES_KELDEO, MOVE_SECRET_SWORD, WHEN_FORGOTTEN}, {FORM_CHANGE_END}, }; @@ -167,12 +137,8 @@ static const struct FormChange sGenesectFormChangeTable[] = { }; static const struct FormChange sHoopaFormChangeTable[] = { - // {FORM_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, - {FORM_CHANGE_END}, -}; - -static const struct FormChange sHoopaUnboundFormChangeTable[] = { - {FORM_WITHDRAW, SPECIES_HOOPA}, + {FORM_ITEM_USE, SPECIES_HOOPA_UNBOUND, ITEM_PRISON_BOTTLE, SPECIES_HOOPA}, + // {FORM_WITHDRAW, SPECIES_HOOPA}, {FORM_CHANGE_END}, }; @@ -225,5 +191,11 @@ static const struct FormChange sZamazentaFormChangeTable[] = { {FORM_CHANGE_END}, }; +static const struct FormChange sEnamorusFormChangeTable[] = { + {FORM_ITEM_USE, SPECIES_ENAMORUS, ITEM_REVEAL_GLASS}, + {FORM_ITEM_USE, SPECIES_ENAMORUS_THERIAN, ITEM_REVEAL_GLASS}, + {FORM_CHANGE_END}, +}; + #undef WHEN_LEARNED #undef WHEN_FORGOTTEN diff --git a/src/pokemon.c b/src/pokemon.c index f88f7dab2d..99a82ec130 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8277,7 +8277,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 for (i = 0; formChanges[i].method != FORM_CHANGE_END; i++) { - if (method == formChanges[i].method) + if (method == formChanges[i].method && species != formChanges[i].targetSpecies) { switch (method) { @@ -8324,7 +8324,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 } } - return species != targetSpecies ? targetSpecies : SPECIES_NONE; + return targetSpecies; } u16 MonTryLearningNewMoveEvolution(struct Pokemon *mon, bool8 firstMove) From 9e4b18dfe2a7b878c71116a0c569a410c7d751e0 Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Tue, 6 Sep 2022 14:28:52 -0400 Subject: [PATCH 217/271] update readme with credits, wiki links --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index d22891fdf0..7b49d19926 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,16 @@ The Pokeemerald Expansion is a collection of feature branches that can be integr Certain mechanics, moves, abilities and species sprites are missing. For more information, see [the project's milestones](https://github.com/rh-hideout/pokeemerald-expansion/milestones). +### [Documentation on features can be found here](https://github.com/rh-hideout/pokeemerald-expansion/wiki) + ## Who maintains the project? The project was originally started by DizzyEgg alongside other contributors. The project has now gotten larger and DizzyEgg is now maintaining the project as part of the ROM Hacking Hideout community. Some members of this community are taking on larger roles to help maintain the project. +### Please consider crediting the entire [list of contributors](https://github.com/rh-hideout/pokeemerald-expansion/wiki/Credits) in your project, as they have all worked hard to develop this project :) + ## Can I contribute even if I'm not a member of ROM Hacking Hideout? Yes! Contributions are welcome via Pull Requests and they will be reviewed by maintainers. Don't feel discouraged if we take a bit to review your PR, we'll get to it. From b249399a530727dec08911cc769c86c844a25e37 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 6 Sep 2022 23:00:26 +0200 Subject: [PATCH 218/271] changed 'B_FLAG_NO_CATCHING' to be evaluated by 'GetBallThrowableState()' --- include/item_use.h | 1 + src/item_use.c | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/item_use.h b/include/item_use.h index 036a541012..d55f7cf0d7 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -43,6 +43,7 @@ enum { BALL_THROW_UNABLE_NO_ROOM, BALL_THROW_UNABLE_SEMI_INVULNERABLE, BALL_THROW_ABLE, + BALL_THROW_UNABLE_DISABLED_FLAG, }; bool32 CanThrowBall(void); diff --git a/src/item_use.c b/src/item_use.c index cb85ae3e35..645a5d1647 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -968,6 +968,8 @@ static u32 GetBallThrowableState(void) else if (gStatuses3[GetCatchingBattler()] & STATUS3_SEMI_INVULNERABLE) return BALL_THROW_UNABLE_SEMI_INVULNERABLE; #endif + else if (FlagGet(B_FLAG_NO_CATCHING)) + return BALL_THROW_UNABLE_DISABLED_FLAG; return BALL_THROW_ABLE; } @@ -979,15 +981,9 @@ bool32 CanThrowBall(void) static const u8 sText_CantThrowPokeBall_TwoMons[] = _("Cannot throw a ball!\nThere are two Pokémon out there!\p"); static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a ball!\nThere's no Pokémon in sight!\p"); +static const u8 sText_CantThrowPokeBall_Disabled[] = _("POKé BALLS cannot be used\nright now!\p"); void ItemUseInBattle_PokeBall(u8 taskId) -{ - if (FlagGet(B_FLAG_NO_CATCHING)) - { - static const u8 sText_BallsCannotBeUsed[] = _("Poké Balls cannot be used\nright now!\p"); - DisplayItemMessage(taskId, 1, sText_BallsCannotBeUsed, CloseItemMessage); - return; - } - +{ switch (GetBallThrowableState()) { case BALL_THROW_ABLE: @@ -1018,6 +1014,12 @@ void ItemUseInBattle_PokeBall(u8 taskId) DisplayItemMessageInBattlePyramid(taskId, sText_CantThrowPokeBall_SemiInvulnerable, Task_CloseBattlePyramidBagMessage); break; #endif + case BALL_THROW_UNABLE_DISABLED_FLAG: + if (!InBattlePyramid()) + DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_Disabled, CloseItemMessage); + else + DisplayItemMessageInBattlePyramid(taskId, sText_CantThrowPokeBall_Disabled, Task_CloseBattlePyramidBagMessage); + break; } } From 12bb32666b558c3b5b68c7652f03d87483d272a6 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 6 Sep 2022 17:05:56 -0400 Subject: [PATCH 219/271] Aligned FRONTIER_MONS trainer macros with the rest for consistency --- .../battle_frontier_trainer_mons.h | 198 +++++++++--------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/src/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h index efd9ef84dd..625a602658 100644 --- a/src/data/battle_frontier/battle_frontier_trainer_mons.h +++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h @@ -1,67 +1,67 @@ // Also used by early Pkmn Breeder, Collector, and Beauty trainers #define FRONTIER_MONS_YOUNGSTER_LASS_1 \ - FRONTIER_MON_SUNKERN, \ - FRONTIER_MON_AZURILL, \ - FRONTIER_MON_CATERPIE, \ - FRONTIER_MON_WEEDLE, \ - FRONTIER_MON_WURMPLE, \ - FRONTIER_MON_RALTS, \ - FRONTIER_MON_MAGIKARP, \ - FRONTIER_MON_FEEBAS, \ - FRONTIER_MON_PICHU, \ - FRONTIER_MON_IGGLYBUFF, \ - FRONTIER_MON_WOOPER, \ - FRONTIER_MON_TYROGUE, \ - FRONTIER_MON_SENTRET, \ - FRONTIER_MON_CLEFFA, \ - FRONTIER_MON_SEEDOT, \ - FRONTIER_MON_LOTAD, \ - FRONTIER_MON_POOCHYENA, \ - FRONTIER_MON_SHEDINJA, \ - FRONTIER_MON_MAKUHITA, \ - FRONTIER_MON_WHISMUR, \ - FRONTIER_MON_ZIGZAGOON, \ - FRONTIER_MON_ZUBAT, \ - FRONTIER_MON_TOGEPI, \ - FRONTIER_MON_SPINARAK, \ - FRONTIER_MON_MARILL, \ - FRONTIER_MON_HOPPIP, \ - FRONTIER_MON_SLUGMA, \ - FRONTIER_MON_SWINUB, \ - FRONTIER_MON_SMEARGLE, \ - FRONTIER_MON_PIDGEY, \ - FRONTIER_MON_RATTATA, \ - FRONTIER_MON_WYNAUT, \ - FRONTIER_MON_SKITTY, \ - FRONTIER_MON_SPEAROW, \ - FRONTIER_MON_HOOTHOOT, \ - FRONTIER_MON_DIGLETT, \ - FRONTIER_MON_LEDYBA, \ - FRONTIER_MON_NINCADA, \ - FRONTIER_MON_SURSKIT, \ - FRONTIER_MON_JIGGLYPUFF, \ - FRONTIER_MON_TAILLOW, \ - FRONTIER_MON_WINGULL, \ - FRONTIER_MON_NIDORAN_M, \ - FRONTIER_MON_NIDORAN_F, \ - FRONTIER_MON_KIRLIA, \ - FRONTIER_MON_MAREEP, \ - FRONTIER_MON_MEDITITE, \ - FRONTIER_MON_SLAKOTH, \ - FRONTIER_MON_PARAS, \ - FRONTIER_MON_EKANS, \ - FRONTIER_MON_DITTO, \ - FRONTIER_MON_BARBOACH, \ - FRONTIER_MON_MEOWTH, \ - FRONTIER_MON_PINECO, \ - FRONTIER_MON_TRAPINCH, \ - FRONTIER_MON_SPHEAL, \ - FRONTIER_MON_HORSEA, \ - FRONTIER_MON_SHROOMISH, \ - FRONTIER_MON_SHUPPET, \ - FRONTIER_MON_DUSKULL, \ - FRONTIER_MON_ELECTRIKE, \ - FRONTIER_MON_VULPIX, \ + FRONTIER_MON_SUNKERN, \ + FRONTIER_MON_AZURILL, \ + FRONTIER_MON_CATERPIE, \ + FRONTIER_MON_WEEDLE, \ + FRONTIER_MON_WURMPLE, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_MAGIKARP, \ + FRONTIER_MON_FEEBAS, \ + FRONTIER_MON_PICHU, \ + FRONTIER_MON_IGGLYBUFF, \ + FRONTIER_MON_WOOPER, \ + FRONTIER_MON_TYROGUE, \ + FRONTIER_MON_SENTRET, \ + FRONTIER_MON_CLEFFA, \ + FRONTIER_MON_SEEDOT, \ + FRONTIER_MON_LOTAD, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_MAKUHITA, \ + FRONTIER_MON_WHISMUR, \ + FRONTIER_MON_ZIGZAGOON, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_TOGEPI, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_MARILL, \ + FRONTIER_MON_HOPPIP, \ + FRONTIER_MON_SLUGMA, \ + FRONTIER_MON_SWINUB, \ + FRONTIER_MON_SMEARGLE, \ + FRONTIER_MON_PIDGEY, \ + FRONTIER_MON_RATTATA, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_SKITTY, \ + FRONTIER_MON_SPEAROW, \ + FRONTIER_MON_HOOTHOOT, \ + FRONTIER_MON_DIGLETT, \ + FRONTIER_MON_LEDYBA, \ + FRONTIER_MON_NINCADA, \ + FRONTIER_MON_SURSKIT, \ + FRONTIER_MON_JIGGLYPUFF, \ + FRONTIER_MON_TAILLOW, \ + FRONTIER_MON_WINGULL, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MAREEP, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_SLAKOTH, \ + FRONTIER_MON_PARAS, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_DITTO, \ + FRONTIER_MON_BARBOACH, \ + FRONTIER_MON_MEOWTH, \ + FRONTIER_MON_PINECO, \ + FRONTIER_MON_TRAPINCH, \ + FRONTIER_MON_SPHEAL, \ + FRONTIER_MON_HORSEA, \ + FRONTIER_MON_SHROOMISH, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_ELECTRIKE, \ + FRONTIER_MON_VULPIX, \ -1 // Also used by early Pkmn Breeder, Collector, and Beauty trainers @@ -113,43 +113,43 @@ -1 #define FRONTIER_MONS_RICH_BOY_LADY_1 \ - FRONTIER_MON_RALTS, \ - FRONTIER_MON_POOCHYENA, \ - FRONTIER_MON_SHEDINJA, \ - FRONTIER_MON_ZUBAT, \ - FRONTIER_MON_SPINARAK, \ - FRONTIER_MON_WYNAUT, \ - FRONTIER_MON_NIDORAN_M, \ - FRONTIER_MON_NIDORAN_F, \ - FRONTIER_MON_KIRLIA, \ - FRONTIER_MON_MEDITITE, \ - FRONTIER_MON_EKANS, \ - FRONTIER_MON_SHUPPET, \ - FRONTIER_MON_DUSKULL, \ - FRONTIER_MON_BELLSPROUT, \ - FRONTIER_MON_BALTOY, \ - FRONTIER_MON_BELDUM, \ - FRONTIER_MON_GULPIN, \ - FRONTIER_MON_VENONAT, \ - FRONTIER_MON_SMOOCHUM, \ - FRONTIER_MON_ABRA, \ - FRONTIER_MON_GASTLY, \ - FRONTIER_MON_SLOWPOKE, \ - FRONTIER_MON_BULBASAUR, \ - FRONTIER_MON_ODDISH, \ - FRONTIER_MON_NATU, \ - FRONTIER_MON_GRIMER, \ - FRONTIER_MON_EXEGGCUTE, \ - FRONTIER_MON_DROWZEE, \ - FRONTIER_MON_HOUNDOUR, \ - FRONTIER_MON_SPOINK, \ - FRONTIER_MON_TENTACOOL, \ - FRONTIER_MON_KOFFING, \ - FRONTIER_MON_NIDORINA, \ - FRONTIER_MON_NIDORINO, \ - FRONTIER_MON_BEEDRILL, \ - FRONTIER_MON_DUSTOX, \ - FRONTIER_MON_ARIADOS, \ + FRONTIER_MON_RALTS, \ + FRONTIER_MON_POOCHYENA, \ + FRONTIER_MON_SHEDINJA, \ + FRONTIER_MON_ZUBAT, \ + FRONTIER_MON_SPINARAK, \ + FRONTIER_MON_WYNAUT, \ + FRONTIER_MON_NIDORAN_M, \ + FRONTIER_MON_NIDORAN_F, \ + FRONTIER_MON_KIRLIA, \ + FRONTIER_MON_MEDITITE, \ + FRONTIER_MON_EKANS, \ + FRONTIER_MON_SHUPPET, \ + FRONTIER_MON_DUSKULL, \ + FRONTIER_MON_BELLSPROUT, \ + FRONTIER_MON_BALTOY, \ + FRONTIER_MON_BELDUM, \ + FRONTIER_MON_GULPIN, \ + FRONTIER_MON_VENONAT, \ + FRONTIER_MON_SMOOCHUM, \ + FRONTIER_MON_ABRA, \ + FRONTIER_MON_GASTLY, \ + FRONTIER_MON_SLOWPOKE, \ + FRONTIER_MON_BULBASAUR, \ + FRONTIER_MON_ODDISH, \ + FRONTIER_MON_NATU, \ + FRONTIER_MON_GRIMER, \ + FRONTIER_MON_EXEGGCUTE, \ + FRONTIER_MON_DROWZEE, \ + FRONTIER_MON_HOUNDOUR, \ + FRONTIER_MON_SPOINK, \ + FRONTIER_MON_TENTACOOL, \ + FRONTIER_MON_KOFFING, \ + FRONTIER_MON_NIDORINA, \ + FRONTIER_MON_NIDORINO, \ + FRONTIER_MON_BEEDRILL, \ + FRONTIER_MON_DUSTOX, \ + FRONTIER_MON_ARIADOS, \ -1 // Also used by early Pkmn Breeder, Collector, and Beauty trainers From 94995c54fb98a5891bffb5612ada93de7a46dfdc Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Tue, 6 Sep 2022 23:35:05 +0200 Subject: [PATCH 220/271] fix? --- src/item_use.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/item_use.c b/src/item_use.c index 645a5d1647..0bab2fe376 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -1006,14 +1006,14 @@ void ItemUseInBattle_PokeBall(u8 taskId) else DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage); break; - #if B_SEMI_INVULNERABLE_CATCH >= GEN_4 +#if B_SEMI_INVULNERABLE_CATCH >= GEN_4 case BALL_THROW_UNABLE_SEMI_INVULNERABLE: if (!InBattlePyramid()) DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_SemiInvulnerable, CloseItemMessage); else DisplayItemMessageInBattlePyramid(taskId, sText_CantThrowPokeBall_SemiInvulnerable, Task_CloseBattlePyramidBagMessage); break; - #endif +#endif case BALL_THROW_UNABLE_DISABLED_FLAG: if (!InBattlePyramid()) DisplayItemMessage(taskId, FONT_NORMAL, sText_CantThrowPokeBall_Disabled, CloseItemMessage); From f1c153e469be4040eb4fb7882c5893f571713fe2 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 6 Sep 2022 18:37:16 -0300 Subject: [PATCH 221/271] Merged FORM_ITEM_HOLD_ABILITY into FORM_ITEM_HOLD There was never a reason not to. --- include/constants/pokemon.h | 7 +- src/data/pokemon/form_change_tables.h | 115 +++++++++++++------------- src/party_menu.c | 5 +- src/pokemon.c | 8 +- src/pokemon_storage_system.c | 4 +- src/script_pokemon_util.c | 4 +- 6 files changed, 64 insertions(+), 79 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index c7101cfaca..6912cfe6bb 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -322,10 +322,9 @@ #define FORM_ITEM_USE 2 #define FORM_MOVE 3 #define FORM_WITHDRAW 4 -#define FORM_ITEM_HOLD_ABILITY 5 -#define FORM_ITEM_USE_TIME 6 -#define FORM_BATTLE_BEGIN 7 -#define FORM_BATTLE_END 8 +#define FORM_ITEM_USE_TIME 5 +#define FORM_BATTLE_BEGIN 6 +#define FORM_BATTLE_END 7 #define NUM_MALE_LINK_FACILITY_CLASSES 8 #define NUM_FEMALE_LINK_FACILITY_CLASSES 8 diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 3a97f4efe6..f24fe4d850 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,7 +1,10 @@ /* FORM_ITEM_HOLD: Form change activates when the item is given to or taken from the selected Pokémon. + Alternatively, form change activates when the item is used on the selected Pokémon + that has a particular ability. param1 = item to hold + param2 = ability to check for, optional FORM_ITEM_USE: Form change activates when the item is used on the selected Pokémon. @@ -17,12 +20,6 @@ FORM_WITHDRAW: Form change activates when the Pokémon is withdrawn from the PC or Daycare. no parameters -FORM_ITEM_HOLD_ABILITY: - Form change activates when the item is used on the selected Pokémon that has - a particular ability. - param1 = item to use - param2 = ability to check for - FORM_ITEM_USE_TIME: Form change activates when the item is used on the selected Pokémon at the appropriate time of day. @@ -65,41 +62,41 @@ static const struct FormChange sShayminFormChangeTable[] = { }; static const struct FormChange sArceusFormChangeTable[] = { - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FLYING, ITEM_FLYINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_POISON, ITEM_TOXIC_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_POISON, ITEM_POISONIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ROCK, ITEM_STONE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ROCK, ITEM_ROCKIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GROUND, ITEM_EARTH_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GROUND, ITEM_GROUNDIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_BUG, ITEM_INSECT_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_BUG, ITEM_BUGINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GHOST, ITEM_SPOOKY_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GHOST, ITEM_GHOSTIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_STEEL, ITEM_IRON_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_STEEL, ITEM_STEELIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FIRE, ITEM_FLAME_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FIRE, ITEM_FIRIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_WATER, ITEM_SPLASH_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_WATER, ITEM_WATERIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GRASS, ITEM_MEADOW_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_GRASS, ITEM_GRASSIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ELECTRIC, ITEM_ZAP_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ELECTRIC, ITEM_ELECTRIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_PSYCHIC, ITEM_MIND_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_PSYCHIC, ITEM_PSYCHIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ICE, ITEM_ICICLE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_ICE, ITEM_ICIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_DRAGON, ITEM_DRACO_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_DRAGON, ITEM_DRAGONIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_DARK, ITEM_DREAD_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_DARK, ITEM_DARKINIUM_Z, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FAIRY, ITEM_PIXIE_PLATE, ABILITY_MULTITYPE}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS, ITEM_NONE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIST_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIGHTING, ITEM_FIGHTINIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_SKY_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FLYING, ITEM_FLYINIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_TOXIC_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_POISON, ITEM_POISONIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_STONE_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ROCK, ITEM_ROCKIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_EARTH_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GROUND, ITEM_GROUNDIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_INSECT_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_BUG, ITEM_BUGINIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_SPOOKY_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GHOST, ITEM_GHOSTIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_IRON_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_STEEL, ITEM_STEELIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FLAME_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FIRE, ITEM_FIRIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_SPLASH_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_WATER, ITEM_WATERIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_MEADOW_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_GRASS, ITEM_GRASSIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ZAP_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ELECTRIC, ITEM_ELECTRIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_MIND_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_PSYCHIC, ITEM_PSYCHIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICICLE_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_ICE, ITEM_ICIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRACO_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_DRAGON, ITEM_DRAGONIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DREAD_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_DARK, ITEM_DARKINIUM_Z, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_PIXIE_PLATE, ABILITY_MULTITYPE}, + {FORM_ITEM_HOLD, SPECIES_ARCEUS_FAIRY, ITEM_FAIRIUM_Z, ABILITY_MULTITYPE}, {FORM_CHANGE_END}, }; @@ -151,24 +148,24 @@ static const struct FormChange sOricorioFormChangeTable[] = { }; static const struct FormChange sSilvallyFormChangeTable[] = { - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_GROUND, ITEM_GROUND_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_ROCK, ITEM_ROCK_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_BUG, ITEM_BUG_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_GHOST, ITEM_GHOST_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_STEEL, ITEM_STEEL_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_FIRE, ITEM_FIRE_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_WATER, ITEM_WATER_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_GRASS, ITEM_GRASS_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_ELECTRIC, ITEM_ELECTRIC_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_PSYCHIC, ITEM_PSYCHIC_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_ICE, ITEM_ICE_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_DRAGON, ITEM_DRAGON_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_DARK, ITEM_DARK_MEMORY, ABILITY_RKS_SYSTEM}, - {FORM_ITEM_HOLD_ABILITY, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY, ITEM_NONE, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_FIGHTING, ITEM_FIGHTING_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_FLYING, ITEM_FLYING_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_POISON, ITEM_POISON_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_GROUND, ITEM_GROUND_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_ROCK, ITEM_ROCK_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_BUG, ITEM_BUG_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_GHOST, ITEM_GHOST_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_STEEL, ITEM_STEEL_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_FIRE, ITEM_FIRE_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_WATER, ITEM_WATER_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_GRASS, ITEM_GRASS_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_ELECTRIC, ITEM_ELECTRIC_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_PSYCHIC, ITEM_PSYCHIC_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_ICE, ITEM_ICE_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_DRAGON, ITEM_DRAGON_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_DARK, ITEM_DARK_MEMORY, ABILITY_RKS_SYSTEM}, + {FORM_ITEM_HOLD, SPECIES_SILVALLY_FAIRY, ITEM_FAIRY_MEMORY, ABILITY_RKS_SYSTEM}, {FORM_CHANGE_END}, }; #endif diff --git a/src/party_menu.c b/src/party_menu.c index 00224f6bd6..03e4a5826d 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5596,10 +5596,7 @@ void ItemUseCB_FormChange_ConsumedOnUse(u8 taskId, TaskFunc task) } void TryItemHoldFormChange(struct Pokemon *mon) { - u16 species = GetMonData(mon, MON_DATA_SPECIES); - u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_ITEM_HOLD_ABILITY, 0); - if (targetSpecies == SPECIES_NONE) - targetSpecies = GetFormChangeTargetSpecies(mon, FORM_ITEM_HOLD, 0); + u16 targetSpecies = GetFormChangeTargetSpecies(mon, FORM_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { PlayCry_NormalNoDucking(targetSpecies, 0, CRY_VOLUME_RS, CRY_VOLUME_RS); diff --git a/src/pokemon.c b/src/pokemon.c index 99a82ec130..4fbce67d1e 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8282,7 +8282,8 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 switch (method) { case FORM_ITEM_HOLD: - if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) + if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) + || ability == formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_USE: @@ -8293,11 +8294,6 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; break; - case FORM_ITEM_HOLD_ABILITY: - if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) - && ability == formChanges[i].param2) - targetSpecies = formChanges[i].targetSpecies; - break; case FORM_ITEM_USE_TIME: RtcCalcLocalTime(); if (arg == formChanges[i].param1) diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index d3f5d433f4..fba5bbcda9 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -6893,9 +6893,7 @@ static void ReshowDisplayMon(void) void SetMonFormPSS(struct BoxPokemon *boxMon) { - u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD_ABILITY, 0); - if (targetSpecies == SPECIES_NONE) - targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD, 0); + u16 targetSpecies = GetFormChangeTargetSpeciesBoxMon(boxMon, FORM_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { SetBoxMonData(boxMon, MON_DATA_SPECIES, &targetSpecies); diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index 8a9e65ff8f..e33c8ffcad 100755 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -72,9 +72,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem); // In case a mon with a form changing item is given. Eg: SPECIES_ARCEUS with ITEM_SPLASH_PLATE will transform into SPECIES_ARCEUS_WATER upon gifted. - targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_ITEM_HOLD_ABILITY, 0); - if (targetSpecies == SPECIES_NONE) - targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_ITEM_HOLD, 0); + targetSpecies = GetFormChangeTargetSpecies(&mon, FORM_ITEM_HOLD, 0); if (targetSpecies != SPECIES_NONE) { SetMonData(&mon, MON_DATA_SPECIES, &targetSpecies); From a7a1ab9aeb5b965c31046601a874a2e3cebab286 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 6 Sep 2022 18:37:16 -0300 Subject: [PATCH 222/271] Merged FORM_ITEM_HOLD_ABILITY into FORM_ITEM_HOLD There was never a reason not to. --- src/data/pokemon/form_change_tables.h | 6 +++--- src/pokemon.c | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index f24fe4d850..ddcb4d9cbd 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1,8 +1,8 @@ /* FORM_ITEM_HOLD: - Form change activates when the item is given to or taken from the selected Pokémon. - Alternatively, form change activates when the item is used on the selected Pokémon - that has a particular ability. + Form change activates when the specified item is given to or taken from the selected Pokémon. + Alternatively, form change activates when the specified item is is given to or taken from + the selected Pokémon that has a particular ability. param1 = item to hold param2 = ability to check for, optional diff --git a/src/pokemon.c b/src/pokemon.c index 4fbce67d1e..63b3dae9dc 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8285,6 +8285,8 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) || ability == formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; + if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) && ability == formChanges[i].param2) + targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_USE: if (arg == formChanges[i].param1) From 3a0759d458a711196739a7397248cdf1d34069e9 Mon Sep 17 00:00:00 2001 From: sbird Date: Wed, 7 Sep 2022 14:37:03 +0200 Subject: [PATCH 223/271] [doc] fix misnamed dma <--> aslr --- include/load_save.h | 18 +++++++++--------- src/load_save.c | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/load_save.h b/include/load_save.h index 309e62e2b4..389bd5a2b9 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -10,24 +10,24 @@ * toolchains. If this is not done, the ClearSav functions will end up erasing * the wrong memory leading to various glitches. */ -struct SaveBlock2DMA { +struct SaveBlock2ASLR { struct SaveBlock2 block; - u8 dma[SAVEBLOCK_MOVE_RANGE]; + u8 aslr[SAVEBLOCK_MOVE_RANGE]; }; -struct SaveBlock1DMA { +struct SaveBlock1ASLR { struct SaveBlock1 block; - u8 dma[SAVEBLOCK_MOVE_RANGE]; + u8 aslr[SAVEBLOCK_MOVE_RANGE]; }; -struct PokemonStorageDMA { +struct PokemonStorageASLR { struct PokemonStorage block; - u8 dma[SAVEBLOCK_MOVE_RANGE]; + u8 aslr[SAVEBLOCK_MOVE_RANGE]; }; -extern struct SaveBlock1DMA gSaveblock1; -extern struct SaveBlock2DMA gSaveblock2; -extern struct PokemonStorageDMA gPokemonStorage; +extern struct SaveBlock1ASLR gSaveblock1; +extern struct SaveBlock2ASLR gSaveblock2; +extern struct PokemonStorageASLR gPokemonStorage; extern bool32 gFlashMemoryPresent; extern struct SaveBlock1 *gSaveBlock1Ptr; diff --git a/src/load_save.c b/src/load_save.c index 494a61bcf2..44e08b5e9c 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -29,9 +29,9 @@ struct LoadedSaveData }; // EWRAM DATA -EWRAM_DATA struct SaveBlock2DMA gSaveblock2 = {0}; -EWRAM_DATA struct SaveBlock1DMA gSaveblock1 = {0}; -EWRAM_DATA struct PokemonStorageDMA gPokemonStorage = {0}; +EWRAM_DATA struct SaveBlock2ASLR gSaveblock2 = {0}; +EWRAM_DATA struct SaveBlock1ASLR gSaveblock1 = {0}; +EWRAM_DATA struct PokemonStorageASLR gPokemonStorage = {0}; EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; EWRAM_DATA u32 gLastEncryptionKey = 0; @@ -58,12 +58,12 @@ void CheckForFlashMemory(void) void ClearSav2(void) { - CpuFill16(0, &gSaveblock2, sizeof(struct SaveBlock2DMA)); + CpuFill16(0, &gSaveblock2, sizeof(struct SaveBlock2ASLR)); } void ClearSav1(void) { - CpuFill16(0, &gSaveblock1, sizeof(struct SaveBlock1DMA)); + CpuFill16(0, &gSaveblock1, sizeof(struct SaveBlock1ASLR)); } // Offset is the sum of the trainer id bytes From 05c13614c64ecc79b4aabf455e0c073a9f9424ae Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Wed, 7 Sep 2022 13:41:48 -0300 Subject: [PATCH 224/271] Undefined temporary preproc macro HIBYTE --- src/pokeball.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pokeball.c b/src/pokeball.c index b9f63e5806..2633fd5740 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -977,6 +977,8 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite) } } +#undef HIBYTE + static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite) { if (sprite->data[0]++ > 24) From 4a6d3d1debab52c5e9fd5284062d924d583295b4 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Thu, 8 Sep 2022 00:19:13 -0400 Subject: [PATCH 225/271] Whitespace --- src/item_use.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item_use.c b/src/item_use.c index 0bab2fe376..5cd162519f 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -983,7 +983,7 @@ static const u8 sText_CantThrowPokeBall_TwoMons[] = _("Cannot throw a ball!\nThe static const u8 sText_CantThrowPokeBall_SemiInvulnerable[] = _("Cannot throw a ball!\nThere's no Pokémon in sight!\p"); static const u8 sText_CantThrowPokeBall_Disabled[] = _("POKé BALLS cannot be used\nright now!\p"); void ItemUseInBattle_PokeBall(u8 taskId) -{ +{ switch (GetBallThrowableState()) { case BALL_THROW_ABLE: From d58af1ba9217963706cefbae06a0eb0999ccd441 Mon Sep 17 00:00:00 2001 From: Jaizu Date: Thu, 8 Sep 2022 10:38:52 +0200 Subject: [PATCH 226/271] Fix 'y' actually being 'x' in CreatePCMultichoice --- src/script_menu.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/script_menu.c b/src/script_menu.c index d25f28cb29..6633332f3f 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -328,7 +328,7 @@ bool16 ScriptMenu_CreatePCMultichoice(void) static void CreatePCMultichoice(void) { - u8 y = 8; + u8 x = 8; u32 pixelWidth = 0; u8 width; u8 numChoices; @@ -353,25 +353,25 @@ static void CreatePCMultichoice(void) numChoices = 4; windowId = CreateWindowFromRect(0, 0, width, 8); SetStandardWindowBorderStyle(windowId, FALSE); - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_HallOfFame, y, 33, TEXT_SKIP_DRAW, NULL); - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, y, 49, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_HallOfFame, x, 33, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, x, 49, TEXT_SKIP_DRAW, NULL); } else { numChoices = 3; windowId = CreateWindowFromRect(0, 0, width, 6); SetStandardWindowBorderStyle(windowId, FALSE); - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, y, 33, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LogOff, x, 33, TEXT_SKIP_DRAW, NULL); } // Change PC name if player has met Lanette if (FlagGet(FLAG_SYS_PC_LANETTE)) - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LanettesPC, y, 1, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_LanettesPC, x, 1, TEXT_SKIP_DRAW, NULL); else - AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_SomeonesPC, y, 1, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(windowId, FONT_NORMAL, gText_SomeonesPC, x, 1, TEXT_SKIP_DRAW, NULL); StringExpandPlaceholders(gStringVar4, gText_PlayersPC); - PrintPlayerNameOnWindow(windowId, gStringVar4, y, 17); + PrintPlayerNameOnWindow(windowId, gStringVar4, x, 17); InitMenuInUpperLeftCornerNormal(windowId, numChoices, 0); CopyWindowToVram(windowId, COPYWIN_FULL); InitMultichoiceCheckWrap(FALSE, numChoices, windowId, MULTI_PC); From 3acb32acb826ddb693c346da517a9a1b203b3582 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 9 Sep 2022 00:25:43 +0700 Subject: [PATCH 227/271] Tyding graphics - Acupressure --- data/battle_anim_scripts.s | 6 +- .../battle_anims/sprites/accupressure.png | Bin 358 -> 0 bytes graphics/battle_anims/sprites/acupressure.png | Bin 0 -> 310 bytes .../sprites/acupressure_finger.png | Bin 298 -> 0 bytes include/constants/battle_anim.h | 125 +++++++++--------- include/constants/map_groups.h | 2 + include/graphics.h | 6 +- src/battle_anim_effects_1.c | 6 +- src/battle_anim_rock.c | 2 +- src/data/battle_anim.h | 6 +- src/graphics.c | 7 +- 11 files changed, 77 insertions(+), 83 deletions(-) delete mode 100644 graphics/battle_anims/sprites/accupressure.png create mode 100644 graphics/battle_anims/sprites/acupressure.png delete mode 100644 graphics/battle_anims/sprites/acupressure_finger.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 6a46a2d55e..f83d437a5d 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1185,9 +1185,9 @@ Move_TAILWIND: end Move_ACUPRESSURE: - loadspritegfx ANIM_TAG_ACCUPRESSURE + loadspritegfx ANIM_TAG_ACUPRESSURE loadspritegfx ANIM_TAG_SPARK_2 - createsprite gAccupressureSpriteTemplate, ANIM_ATTACKER, 40, 0, -40, 40 + createsprite gAcupressureSpriteTemplate, ANIM_ATTACKER, 40, 0, -40, 40 waitforvisualfinish call ElectricityEffect end @@ -4337,7 +4337,7 @@ Move_LUNAR_DANCE: Move_CRUSH_GRIP: loadspritegfx ANIM_TAG_EXPLOSION - loadspritegfx ANIM_TAG_ACCUPRESSURE + loadspritegfx ANIM_TAG_ACUPRESSURE loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE setalpha 15, 0 createsprite gCrushGripHandTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 0x101 diff --git a/graphics/battle_anims/sprites/accupressure.png b/graphics/battle_anims/sprites/accupressure.png deleted file mode 100644 index 0da836ff3fec4d52d5a2d30f4ae9cffb83aac295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvxd5LKS0D`p5gri<0SP-+95}Gy z#Elydz~IG)4t8*0pd71sZz_izopr07S5TX#fBK diff --git a/graphics/battle_anims/sprites/acupressure.png b/graphics/battle_anims/sprites/acupressure.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8ae62bc9ca1592ea13573666e6b9eccd5b3efc GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*NOux1Ox;kJR%YT5_YUO zaA3oU8#f++!HW+cJ^)prf!W#bgn>c_JzX3_G$yuA^cHF|5ODDOE pQ2T!%k^7adzzVa5`kV{9p7WJ!31o~*OvfAw|crbhE&X%I>DRoumX?E&7Ulm&io7=%mzW%0=sv( z**os5D^%$84F8%p@7Uplj!6HeWJXI%Shm$RvT(O3n*>^DZq)>O8t(PQvA^ z)N1Fn?E%-@TXWg}#ujaySe<9h+Ho=btuwPc!_}1BE!GdNIxmtmZz(q%Q~loCIEZJaCiU! diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 28bcb283d4..db2efd8d05 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -308,7 +308,7 @@ #define ANIM_TAG_MEGA_PARTICLES (ANIM_SPRITES_START + 297) #define ANIM_TAG_TRUMP_CARD (ANIM_SPRITES_START + 298) #define ANIM_TAG_TRUMP_CARD_PARTICLES (ANIM_SPRITES_START + 299) -#define ANIM_TAG_ACCUPRESSURE (ANIM_SPRITES_START + 300) +#define ANIM_TAG_ACUPRESSURE (ANIM_SPRITES_START + 300) #define ANIM_TAG_WRING_OUT (ANIM_SPRITES_START + 301) #define ANIM_TAG_COLORED_ORBS (ANIM_SPRITES_START + 302) #define ANIM_TAG_WORRY_SEED (ANIM_SPRITES_START + 303) @@ -334,68 +334,67 @@ #define ANIM_TAG_BRINE (ANIM_SPRITES_START + 322) #define ANIM_TAG_GEAR (ANIM_SPRITES_START + 323) #define ANIM_TAG_ASSURANCE_HAND (ANIM_SPRITES_START + 324) -#define ANIM_TAG_ACUPRESSURE_FINGER (ANIM_SPRITES_START + 325) -#define ANIM_TAG_WISHIWASHI_FISH (ANIM_SPRITES_START + 326) -#define ANIM_TAG_ZYGARDE_HEXES (ANIM_SPRITES_START + 327) -#define ANIM_TAG_AURA_SPHERE (ANIM_SPRITES_START + 328) -#define ANIM_TAG_OMEGA_STONE (ANIM_SPRITES_START + 329) -#define ANIM_TAG_ALPHA_STONE (ANIM_SPRITES_START + 330) -#define ANIM_TAG_BERRY_NORMAL (ANIM_SPRITES_START + 331) -#define ANIM_TAG_BERRY_EATEN (ANIM_SPRITES_START + 332) -#define ANIM_TAG_DRAGON_ASCENT (ANIM_SPRITES_START + 333) -#define ANIM_TAG_PINK_DIAMOND (ANIM_SPRITES_START + 334) -#define ANIM_TAG_STEAM_ERUPTION (ANIM_SPRITES_START + 335) -#define ANIM_TAG_CONFIDE (ANIM_SPRITES_START + 336) -#define ANIM_TAG_VERTICAL_HEX (ANIM_SPRITES_START + 337) -#define ANIM_TAG_UNAVAILABLE_1 (ANIM_SPRITES_START + 338) //0x2862.. supposedly used elsewhere? -#define ANIM_TAG_UNAVAILABLE_2 (ANIM_SPRITES_START + 339) -#define ANIM_TAG_POWER_TRICK (ANIM_SPRITES_START + 340) -#define ANIM_TAG_CHAIN_LINK (ANIM_SPRITES_START + 341) -#define ANIM_TAG_ANCHOR (ANIM_SPRITES_START + 342) -#define ANIM_TAG_HORSESHOE_SIDE_FIST (ANIM_SPRITES_START + 343) -#define ANIM_TAG_DRAGON_ASCENT_FOE (ANIM_SPRITES_START + 344) -#define ANIM_TAG_CRAFTY_SHIELD (ANIM_SPRITES_START + 345) -#define ANIM_TAG_BLACEPHALON_HEAD (ANIM_SPRITES_START + 346) -#define ANIM_TAG_FAIRY_LOCK_CHAINS (ANIM_SPRITES_START + 347) -#define ANIM_TAG_IONS (ANIM_SPRITES_START + 348) -#define ANIM_TAG_CHOP (ANIM_SPRITES_START + 349) -#define ANIM_TAG_HEART_STAMP (ANIM_SPRITES_START + 350) -#define ANIM_TAG_HORN_LEECH (ANIM_SPRITES_START + 351) -#define ANIM_TAG_STEAMROLLER (ANIM_SPRITES_START + 352) -#define ANIM_TAG_HOOPA_HAND (ANIM_SPRITES_START + 353) -#define ANIM_TAG_HOOPA_RING (ANIM_SPRITES_START + 354) -#define ANIM_TAG_METAL_BITS (ANIM_SPRITES_START + 355) -#define ANIM_TAG_SMALL_ROCK (ANIM_SPRITES_START + 356) -#define ANIM_TAG_SPIRIT_ARROW (ANIM_SPRITES_START + 357) -#define ANIM_TAG_ULTRA_BURST_SYMBOL (ANIM_SPRITES_START + 358) -#define ANIM_TAG_Z_MOVE_SYMBOL (ANIM_SPRITES_START + 359) -#define ANIM_TAG_REALLY_BIG_ROCK (ANIM_SPRITES_START + 360) -#define ANIM_TAG_COCOON (ANIM_SPRITES_START + 361) -#define ANIM_TAG_CORKSCREW (ANIM_SPRITES_START + 362) -#define ANIM_TAG_HAVOC_SPEAR (ANIM_SPRITES_START + 363) -#define ANIM_TAG_PURPLE_DRAKE (ANIM_SPRITES_START + 364) -#define ANIM_TAG_MUD_BOMB (ANIM_SPRITES_START + 365) -#define ANIM_TAG_BRANCH (ANIM_SPRITES_START + 366) -#define ANIM_TAG_APPLE (ANIM_SPRITES_START + 367) -#define ANIM_TAG_OBSTRUCT_CROSS (ANIM_SPRITES_START + 368) -#define ANIM_TAG_POISON_COLUMN (ANIM_SPRITES_START + 369) -#define ANIM_TAG_GARBAGE_COLUMN (ANIM_SPRITES_START + 370) -#define ANIM_TAG_LARGE_SPIKE (ANIM_SPRITES_START + 371) -#define ANIM_TAG_DRAGON_PULSE_RING (ANIM_SPRITES_START + 372) -#define ANIM_TAG_STONE_PILLAR (ANIM_SPRITES_START + 373) -#define ANIM_TAG_MUSHROOM (ANIM_SPRITES_START + 374) -#define ANIM_TAG_GOLDEN_APPLE (ANIM_SPRITES_START + 375) -#define ANIM_TAG_ICE_ROCK (ANIM_SPRITES_START + 376) -#define ANIM_TAG_TORNADO (ANIM_SPRITES_START + 377) -#define ANIM_TAG_STRAIGHT_BEAM (ANIM_SPRITES_START + 378) -#define ANIM_TAG_DREEPY (ANIM_SPRITES_START + 379) -#define ANIM_TAG_ICE_ROCK_SINGLE (ANIM_SPRITES_START + 380) -#define ANIM_TAG_STONE_PILLAR_MULTI (ANIM_SPRITES_START + 381) -#define ANIM_TAG_ALPHA_SYMBOL (ANIM_SPRITES_START + 382) -#define ANIM_TAG_OMEGA_SYMBOL (ANIM_SPRITES_START + 383) -#define ANIM_TAG_PRIMAL_PARTICLES (ANIM_SPRITES_START + 384) -#define ANIM_TAG_STEEL_BEAM (ANIM_SPRITES_START + 385) -#define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 386) +#define ANIM_TAG_WISHIWASHI_FISH (ANIM_SPRITES_START + 325) +#define ANIM_TAG_ZYGARDE_HEXES (ANIM_SPRITES_START + 326) +#define ANIM_TAG_AURA_SPHERE (ANIM_SPRITES_START + 327) +#define ANIM_TAG_OMEGA_STONE (ANIM_SPRITES_START + 328) +#define ANIM_TAG_ALPHA_STONE (ANIM_SPRITES_START + 329) +#define ANIM_TAG_BERRY_NORMAL (ANIM_SPRITES_START + 330) +#define ANIM_TAG_BERRY_EATEN (ANIM_SPRITES_START + 331) +#define ANIM_TAG_DRAGON_ASCENT (ANIM_SPRITES_START + 332) +#define ANIM_TAG_PINK_DIAMOND (ANIM_SPRITES_START + 333) +#define ANIM_TAG_STEAM_ERUPTION (ANIM_SPRITES_START + 334) +#define ANIM_TAG_CONFIDE (ANIM_SPRITES_START + 335) +#define ANIM_TAG_VERTICAL_HEX (ANIM_SPRITES_START + 336) +#define ANIM_TAG_UNAVAILABLE_1 (ANIM_SPRITES_START + 337) //0x2862.. supposedly used elsewhere? +#define ANIM_TAG_UNAVAILABLE_2 (ANIM_SPRITES_START + 338) +#define ANIM_TAG_POWER_TRICK (ANIM_SPRITES_START + 339) +#define ANIM_TAG_CHAIN_LINK (ANIM_SPRITES_START + 340) +#define ANIM_TAG_ANCHOR (ANIM_SPRITES_START + 341) +#define ANIM_TAG_HORSESHOE_SIDE_FIST (ANIM_SPRITES_START + 342) +#define ANIM_TAG_DRAGON_ASCENT_FOE (ANIM_SPRITES_START + 343) +#define ANIM_TAG_CRAFTY_SHIELD (ANIM_SPRITES_START + 344) +#define ANIM_TAG_BLACEPHALON_HEAD (ANIM_SPRITES_START + 345) +#define ANIM_TAG_FAIRY_LOCK_CHAINS (ANIM_SPRITES_START + 346) +#define ANIM_TAG_IONS (ANIM_SPRITES_START + 347) +#define ANIM_TAG_CHOP (ANIM_SPRITES_START + 348) +#define ANIM_TAG_HEART_STAMP (ANIM_SPRITES_START + 349) +#define ANIM_TAG_HORN_LEECH (ANIM_SPRITES_START + 350) +#define ANIM_TAG_STEAMROLLER (ANIM_SPRITES_START + 351) +#define ANIM_TAG_HOOPA_HAND (ANIM_SPRITES_START + 352) +#define ANIM_TAG_HOOPA_RING (ANIM_SPRITES_START + 353) +#define ANIM_TAG_METAL_BITS (ANIM_SPRITES_START + 354) +#define ANIM_TAG_SMALL_ROCK (ANIM_SPRITES_START + 355) +#define ANIM_TAG_SPIRIT_ARROW (ANIM_SPRITES_START + 356) +#define ANIM_TAG_ULTRA_BURST_SYMBOL (ANIM_SPRITES_START + 357) +#define ANIM_TAG_Z_MOVE_SYMBOL (ANIM_SPRITES_START + 358) +#define ANIM_TAG_REALLY_BIG_ROCK (ANIM_SPRITES_START + 359) +#define ANIM_TAG_COCOON (ANIM_SPRITES_START + 360) +#define ANIM_TAG_CORKSCREW (ANIM_SPRITES_START + 361) +#define ANIM_TAG_HAVOC_SPEAR (ANIM_SPRITES_START + 362) +#define ANIM_TAG_PURPLE_DRAKE (ANIM_SPRITES_START + 363) +#define ANIM_TAG_MUD_BOMB (ANIM_SPRITES_START + 364) +#define ANIM_TAG_BRANCH (ANIM_SPRITES_START + 365) +#define ANIM_TAG_APPLE (ANIM_SPRITES_START + 366) +#define ANIM_TAG_OBSTRUCT_CROSS (ANIM_SPRITES_START + 367) +#define ANIM_TAG_POISON_COLUMN (ANIM_SPRITES_START + 368) +#define ANIM_TAG_GARBAGE_COLUMN (ANIM_SPRITES_START + 369) +#define ANIM_TAG_LARGE_SPIKE (ANIM_SPRITES_START + 370) +#define ANIM_TAG_DRAGON_PULSE_RING (ANIM_SPRITES_START + 371) +#define ANIM_TAG_STONE_PILLAR (ANIM_SPRITES_START + 372) +#define ANIM_TAG_MUSHROOM (ANIM_SPRITES_START + 373) +#define ANIM_TAG_GOLDEN_APPLE (ANIM_SPRITES_START + 374) +#define ANIM_TAG_ICE_ROCK (ANIM_SPRITES_START + 375) +#define ANIM_TAG_TORNADO (ANIM_SPRITES_START + 376) +#define ANIM_TAG_STRAIGHT_BEAM (ANIM_SPRITES_START + 377) +#define ANIM_TAG_DREEPY (ANIM_SPRITES_START + 378) +#define ANIM_TAG_ICE_ROCK_SINGLE (ANIM_SPRITES_START + 379) +#define ANIM_TAG_STONE_PILLAR_MULTI (ANIM_SPRITES_START + 380) +#define ANIM_TAG_ALPHA_SYMBOL (ANIM_SPRITES_START + 381) +#define ANIM_TAG_OMEGA_SYMBOL (ANIM_SPRITES_START + 382) +#define ANIM_TAG_PRIMAL_PARTICLES (ANIM_SPRITES_START + 383) +#define ANIM_TAG_STEEL_BEAM (ANIM_SPRITES_START + 384) +#define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 385) // battlers #define ANIM_ATTACKER 0 diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index eaf40a525d..2e6c781943 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -593,4 +593,6 @@ #define MAP_GROUPS_COUNT 34 +// static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; + #endif // GUARD_CONSTANTS_MAP_GROUPS_H diff --git a/include/graphics.h b/include/graphics.h index 80532ad933..197cb4bb41 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -9304,7 +9304,7 @@ extern const u32 gBattleAnimSpriteGfx_Bird[]; extern const u32 gBattleAnimSpriteGfx_CrossImpact[]; extern const u32 gBattleAnimSpriteGfx_TrumpCard[]; extern const u32 gBattleAnimSpriteGfx_TrumpCardParticles[]; -extern const u32 gBattleAnimSpriteGfx_Accupressure[]; +extern const u32 gBattleAnimSpriteGfx_Acupressure[]; extern const u32 gBattleAnimSpriteGfx_WringOut[]; extern const u32 gBattleAnimSpriteGfx_ColoredOrbs[]; extern const u32 gBattleAnimSpriteGfx_WorrySeed[]; @@ -9606,7 +9606,7 @@ extern const u32 gBattleAnimSpritePal_WhipHit[]; extern const u32 gBattleAnimSpritePal_BlueRing2[]; extern const u32 gBattleAnimSpritePal_TrumpCard[]; extern const u32 gBattleAnimSpritePal_TrumpCardParticles[]; -extern const u32 gBattleAnimSpritePal_Accupressure[]; +extern const u32 gBattleAnimSpritePal_Acupressure[]; extern const u32 gBattleAnimSpritePal_WringOut[]; extern const u32 gBattleAnimSpritePal_ColoredOrbs[]; extern const u32 gBattleAnimSpritePal_WorrySeed[]; @@ -9645,8 +9645,6 @@ extern const u32 gBattleAnimSpriteGfx_QuickGuard[]; extern const u32 gBattleAnimSpritePal_QuickGuard[]; // New Battle Anim Particles -extern const u32 gBattleAnimSpriteGfx_AcupressureFinger[]; -extern const u32 gBattleAnimSpritePal_AcupressureFinger[]; extern const u32 gBattleAnimSpriteGfx_AlphaStone[]; extern const u32 gBattleAnimSpritePal_AlphaStone[]; extern const u32 gBattleAnimSpriteGfx_AlphaSymbol[]; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index ff9495d0e0..048b37c660 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -354,10 +354,10 @@ const struct SpriteTemplate gSmallCloudTemplate = .callback = AnimMoveSmallCloud }; -const struct SpriteTemplate gAccupressureSpriteTemplate = +const struct SpriteTemplate gAcupressureSpriteTemplate = { - .tileTag = ANIM_TAG_ACCUPRESSURE, - .paletteTag = ANIM_TAG_ACCUPRESSURE, + .tileTag = ANIM_TAG_ACUPRESSURE, + .paletteTag = ANIM_TAG_ACUPRESSURE, .oam = &gOamData_AffineDouble_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index e1a90b1948..b1ccc9a582 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -331,7 +331,7 @@ static const union AffineAnimCmd* const sSpriteAffineAnimTable_CrushGripHand[] = const struct SpriteTemplate gCrushGripHandTemplate = { .tileTag = ANIM_TAG_PURPLE_HAND_OUTLINE, - .paletteTag = ANIM_TAG_ACCUPRESSURE, + .paletteTag = ANIM_TAG_ACUPRESSURE, .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = sAnims_BasicRock, .images = NULL, diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index b8fb8c0378..6a67e0cd60 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1365,7 +1365,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_MegaParticles, 0x0180, ANIM_TAG_MEGA_PARTICLES}, {gBattleAnimSpriteGfx_TrumpCard, 0x0180, ANIM_TAG_TRUMP_CARD}, {gBattleAnimSpriteGfx_TrumpCardParticles, 0x0060, ANIM_TAG_TRUMP_CARD_PARTICLES}, - {gBattleAnimSpriteGfx_Accupressure, 0x0200, ANIM_TAG_ACCUPRESSURE}, + {gBattleAnimSpriteGfx_Acupressure, 0x0200, ANIM_TAG_ACUPRESSURE}, {gBattleAnimSpriteGfx_WringOut, 0x0200, ANIM_TAG_WRING_OUT}, {gBattleAnimSpriteGfx_ColoredOrbs, 0x0300, ANIM_TAG_COLORED_ORBS}, {gBattleAnimSpriteGfx_WorrySeed, 0x0080, ANIM_TAG_WORRY_SEED}, @@ -1390,7 +1390,6 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Brine, 0xc00, ANIM_TAG_BRINE}, {gBattleAnimSpriteGfx_Gear, 0x200, ANIM_TAG_GEAR}, {gBattleAnimSpriteGfx_AssuranceHand, 0x200, ANIM_TAG_ASSURANCE_HAND}, - {gBattleAnimSpriteGfx_AcupressureFinger, 0x200, ANIM_TAG_ACUPRESSURE_FINGER}, {gBattleAnimSpriteGfx_Fishies, 0x480, ANIM_TAG_WISHIWASHI_FISH}, {gBattleAnimSpriteGfx_ZygardeHexes, 0x480, ANIM_TAG_ZYGARDE_HEXES}, {gBattleAnimSpriteGfx_AuraSphere, 0x200, ANIM_TAG_AURA_SPHERE}, @@ -1817,7 +1816,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_MegaParticles, ANIM_TAG_MEGA_PARTICLES}, {gBattleAnimSpritePal_TrumpCard, ANIM_TAG_TRUMP_CARD}, {gBattleAnimSpritePal_TrumpCardParticles, ANIM_TAG_TRUMP_CARD_PARTICLES}, - {gBattleAnimSpritePal_Accupressure, ANIM_TAG_ACCUPRESSURE}, + {gBattleAnimSpritePal_Acupressure, ANIM_TAG_ACUPRESSURE}, {gBattleAnimSpritePal_WringOut, ANIM_TAG_WRING_OUT}, {gBattleAnimSpritePal_ColoredOrbs, ANIM_TAG_COLORED_ORBS}, {gBattleAnimSpritePal_WorrySeed, ANIM_TAG_WORRY_SEED}, @@ -1842,7 +1841,6 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Brine, ANIM_TAG_BRINE}, {gBattleAnimSpritePal_Gear, ANIM_TAG_GEAR}, {gBattleAnimSpritePal_AssuranceHand, ANIM_TAG_ASSURANCE_HAND}, - {gBattleAnimSpritePal_AcupressureFinger, ANIM_TAG_ACUPRESSURE_FINGER}, {gBattleAnimSpritePal_Fishies, ANIM_TAG_WISHIWASHI_FISH}, {gBattleAnimSpritePal_ZygardeHexes, ANIM_TAG_ZYGARDE_HEXES}, {gBattleAnimSpritePal_AuraSphere, ANIM_TAG_AURA_SPHERE}, diff --git a/src/graphics.c b/src/graphics.c index a59d919527..6a12dda1cc 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -57,9 +57,6 @@ const u32 gBattleAnimSpritePal_Punishment[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpriteGfx_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.4bpp.lz"); const u32 gBattleAnimSpritePal_QuickGuard[] = INCBIN_U32("graphics/battle_anims/sprites/quick_guard.gbapal.lz"); -const u32 gBattleAnimSpritePal_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure_finger.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_AcupressureFinger[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure_finger.4bpp.lz"); - const u32 gBattleAnimSpriteGfx_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.4bpp.lz"); const u32 gBattleAnimSpritePal_AlphaStone[] = INCBIN_U32("graphics/battle_anims/sprites/alpha_stone.gbapal.lz"); @@ -375,8 +372,8 @@ const u32 gBattleAnimSpritePal_TrumpCard[] = INCBIN_U32("graphics/battle_anims/s const u32 gBattleAnimSpriteGfx_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.4bpp.lz"); const u32 gBattleAnimSpritePal_TrumpCardParticles[] = INCBIN_U32("graphics/battle_anims/sprites/trump_card_particles.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_Accupressure[] = INCBIN_U32("graphics/battle_anims/sprites/accupressure.4bpp.lz"); -const u32 gBattleAnimSpritePal_Accupressure[] = INCBIN_U32("graphics/battle_anims/sprites/accupressure.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_Acupressure[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure.4bpp.lz"); +const u32 gBattleAnimSpritePal_Acupressure[] = INCBIN_U32("graphics/battle_anims/sprites/acupressure.gbapal.lz"); const u32 gBattleAnimSpriteGfx_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.4bpp.lz"); const u32 gBattleAnimSpritePal_WringOut[] = INCBIN_U32("graphics/battle_anims/sprites/wring_out.gbapal.lz"); From caf323a653907cfa4158cc86ef9be124afce48a5 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 9 Sep 2022 00:40:30 +0700 Subject: [PATCH 228/271] Erase ghost data in include/constants/map_groups.h --- include/constants/map_groups.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 2e6c781943..eaf40a525d 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -593,6 +593,4 @@ #define MAP_GROUPS_COUNT 34 -// static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; - #endif // GUARD_CONSTANTS_MAP_GROUPS_H From db6d285f00ad5ce09b06ef282d29727d34bd6d07 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Thu, 8 Sep 2022 17:53:15 -0300 Subject: [PATCH 229/271] Small syntax fix for CanLearnTeachableMove --- src/pokemon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index d3b401e8c3..fc80330306 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -7297,9 +7297,8 @@ u8 CanLearnTeachableMove(u16 species, u16 move) u8 i; for (i = 0; gTeachableLearnsets[species][i] != MOVE_UNAVAILABLE; i++) { - if (gTeachableLearnsets[species][i] == move) { + if (gTeachableLearnsets[species][i] == move) return TRUE; - } } return FALSE; } From 1fa9bc1b5c5a2eed1f88462757968c3f8d1cb26b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Thu, 8 Sep 2022 18:32:01 -0400 Subject: [PATCH 230/271] Adjusted style of coords tables --- .../pokemon_graphics/back_pic_coordinates.h | 2640 +++-------------- .../pokemon_graphics/front_pic_coordinates.h | 2640 +++-------------- 2 files changed, 880 insertions(+), 4400 deletions(-) diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h index addb482851..43986dd9b0 100644 --- a/src/data/pokemon_graphics/back_pic_coordinates.h +++ b/src/data/pokemon_graphics/back_pic_coordinates.h @@ -4,2205 +4,445 @@ // .y_offset is the number of pixels between the drawn pixel area and the bottom edge. const struct MonCoords gMonBackPicCoords[] = { - [SPECIES_NONE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_BULBASAUR] = - { - .size = MON_COORDS_SIZE(48, 32), - .y_offset = 16, - }, - [SPECIES_IVYSAUR] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_VENUSAUR] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_CHARMANDER] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_CHARMELEON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_CHARIZARD] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_SQUIRTLE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_WARTORTLE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_BLASTOISE] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_CATERPIE] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_METAPOD] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_BUTTERFREE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_WEEDLE] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_KAKUNA] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_BEEDRILL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_PIDGEY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_PIDGEOTTO] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 12, - }, - [SPECIES_PIDGEOT] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 2, - }, - [SPECIES_RATTATA] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_RATICATE] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_SPEAROW] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_FEAROW] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_EKANS] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_ARBOK] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_PIKACHU] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_RAICHU] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_SANDSHREW] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_SANDSLASH] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_NIDORAN_F] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_NIDORINA] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_NIDOQUEEN] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_NIDORAN_M] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_NIDORINO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_NIDOKING] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_CLEFAIRY] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_CLEFABLE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_VULPIX] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_NINETALES] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_JIGGLYPUFF] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_WIGGLYTUFF] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_ZUBAT] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_GOLBAT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_ODDISH] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_GLOOM] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_VILEPLUME] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_PARAS] = - { - .size = MON_COORDS_SIZE(48, 24), - .y_offset = 20, - }, - [SPECIES_PARASECT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_VENONAT] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_VENOMOTH] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_DIGLETT] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_DUGTRIO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_MEOWTH] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_PERSIAN] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_PSYDUCK] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_GOLDUCK] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_MANKEY] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_PRIMEAPE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_GROWLITHE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_ARCANINE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_POLIWAG] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 16, - }, - [SPECIES_POLIWHIRL] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_POLIWRATH] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_ABRA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_KADABRA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_ALAKAZAM] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_MACHOP] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_MACHOKE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_MACHAMP] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 4, - }, - [SPECIES_BELLSPROUT] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_WEEPINBELL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_VICTREEBEL] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_TENTACOOL] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_TENTACRUEL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_GEODUDE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_GRAVELER] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 12, - }, - [SPECIES_GOLEM] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 16, - }, - [SPECIES_PONYTA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_RAPIDASH] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_SLOWPOKE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_SLOWBRO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_MAGNEMITE] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 20, - }, - [SPECIES_MAGNETON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_FARFETCHD] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_DODUO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_DODRIO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SEEL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_DEWGONG] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_GRIMER] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 12, - }, - [SPECIES_MUK] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_SHELLDER] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_CLOYSTER] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_GASTLY] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_HAUNTER] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_GENGAR] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_ONIX] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_DROWZEE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_HYPNO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_KRABBY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_KINGLER] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_VOLTORB] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_ELECTRODE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_EXEGGCUTE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_EXEGGUTOR] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_CUBONE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_MAROWAK] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_HITMONLEE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_HITMONCHAN] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_LICKITUNG] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_KOFFING] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_WEEZING] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_RHYHORN] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 12, - }, - [SPECIES_RHYDON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_CHANSEY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_TANGELA] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_KANGASKHAN] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_HORSEA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_SEADRA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_GOLDEEN] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_SEAKING] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_STARYU] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_STARMIE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_MR_MIME] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_SCYTHER] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_JYNX] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_ELECTABUZZ] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_MAGMAR] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_PINSIR] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_TAUROS] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_MAGIKARP] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_GYARADOS] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_LAPRAS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_DITTO] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 17, - }, - [SPECIES_EEVEE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_VAPOREON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_JOLTEON] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_FLAREON] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_PORYGON] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_OMANYTE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_OMASTAR] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_KABUTO] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_KABUTOPS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_AERODACTYL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SNORLAX] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_ARTICUNO] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_ZAPDOS] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_MOLTRES] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_DRATINI] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_DRAGONAIR] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_DRAGONITE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_MEWTWO] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 1, - }, - [SPECIES_MEW] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_CHIKORITA] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_BAYLEEF] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_MEGANIUM] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_CYNDAQUIL] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_QUILAVA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_TYPHLOSION] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_TOTODILE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_CROCONAW] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_FERALIGATR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SENTRET] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_FURRET] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_HOOTHOOT] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_NOCTOWL] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 3, - }, - [SPECIES_LEDYBA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_LEDIAN] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_SPINARAK] = - { - .size = MON_COORDS_SIZE(56, 24), - .y_offset = 21, - }, - [SPECIES_ARIADOS] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_CROBAT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_CHINCHOU] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_LANTURN] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_PICHU] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_CLEFFA] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 15, - }, - [SPECIES_IGGLYBUFF] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_TOGEPI] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_TOGETIC] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_NATU] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 17, - }, - [SPECIES_XATU] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_MAREEP] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_FLAAFFY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_AMPHAROS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_BELLOSSOM] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_MARILL] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 12, - }, - [SPECIES_AZUMARILL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SUDOWOODO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_POLITOED] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_HOPPIP] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_SKIPLOOM] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_JUMPLUFF] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_AIPOM] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_SUNKERN] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_SUNFLORA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_YANMA] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_WOOPER] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_QUAGSIRE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_ESPEON] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_UMBREON] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_MURKROW] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_SLOWKING] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_MISDREAVUS] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN] = - { - .size = MON_COORDS_SIZE(24, 48), - .y_offset = 8, - }, - [SPECIES_WOBBUFFET] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 12, - }, - [SPECIES_GIRAFARIG] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_PINECO] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 15, - }, - [SPECIES_FORRETRESS] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 16, - }, - [SPECIES_DUNSPARCE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_GLIGAR] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_STEELIX] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SNUBBULL] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_GRANBULL] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_QWILFISH] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_SCIZOR] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_SHUCKLE] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_HERACROSS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_SNEASEL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_TEDDIURSA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_URSARING] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_SLUGMA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_MAGCARGO] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_SWINUB] = - { - .size = MON_COORDS_SIZE(48, 24), - .y_offset = 21, - }, - [SPECIES_PILOSWINE] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_CORSOLA] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_REMORAID] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_OCTILLERY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_DELIBIRD] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_MANTINE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_SKARMORY] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_HOUNDOUR] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_HOUNDOOM] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_KINGDRA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_PHANPY] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_DONPHAN] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_PORYGON2] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_STANTLER] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_SMEARGLE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_TYROGUE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_HITMONTOP] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_SMOOCHUM] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 9, - }, - [SPECIES_ELEKID] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_MAGBY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_MILTANK] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_BLISSEY] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_RAIKOU] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_ENTEI] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_SUICUNE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_LARVITAR] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_PUPITAR] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_TYRANITAR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_LUGIA] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_HO_OH] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_CELEBI] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_OLD_UNOWN_B] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_C] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_D] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_E] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_F] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_G] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_H] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_I] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_J] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_K] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_L] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_M] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_N] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_O] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_P] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_Q] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_R] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_S] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_T] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_U] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_V] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_W] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_X] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_Y] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_OLD_UNOWN_Z] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_TREECKO] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_GROVYLE] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SCEPTILE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_TORCHIC] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_COMBUSKEN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_BLAZIKEN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_MUDKIP] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_MARSHTOMP] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_SWAMPERT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_POOCHYENA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_MIGHTYENA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_ZIGZAGOON] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_LINOONE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_WURMPLE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_SILCOON] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 21, - }, - [SPECIES_BEAUTIFLY] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CASCOON] = - { - .size = MON_COORDS_SIZE(56, 24), - .y_offset = 20, - }, - [SPECIES_DUSTOX] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 20, - }, - [SPECIES_LOTAD] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 15, - }, - [SPECIES_LOMBRE] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_LUDICOLO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_SEEDOT] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_NUZLEAF] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_SHIFTRY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_NINCADA] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 20, - }, - [SPECIES_NINJASK] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SHEDINJA] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_TAILLOW] = - { - .size = MON_COORDS_SIZE(48, 32), - .y_offset = 17, - }, - [SPECIES_SWELLOW] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SHROOMISH] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_BRELOOM] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_SPINDA] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_WINGULL] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_PELIPPER] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_SURSKIT] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_MASQUERAIN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_WAILMER] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 21, - }, - [SPECIES_WAILORD] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 22, - }, - [SPECIES_SKITTY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_DELCATTY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_KECLEON] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_BALTOY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_CLAYDOL] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_NOSEPASS] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 12, - }, - [SPECIES_TORKOAL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_SABLEYE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_BARBOACH] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_WHISCASH] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_LUVDISC] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_CORPHISH] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_CRAWDAUNT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_FEEBAS] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_MILOTIC] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 2, - }, - [SPECIES_CARVANHA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_SHARPEDO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_TRAPINCH] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 14, - }, - [SPECIES_VIBRAVA] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 17, - }, - [SPECIES_FLYGON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_MAKUHITA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_HARIYAMA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_ELECTRIKE] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 16, - }, - [SPECIES_MANECTRIC] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_NUMEL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_CAMERUPT] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 19, - }, - [SPECIES_SPHEAL] = - { - .size = MON_COORDS_SIZE(48, 32), - .y_offset = 18, - }, - [SPECIES_SEALEO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_WALREIN] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_CACNEA] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_CACTURNE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_SNORUNT] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_GLALIE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 12, - }, - [SPECIES_LUNATONE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_SOLROCK] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_AZURILL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_SPOINK] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_GRUMPIG] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_PLUSLE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_MINUN] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_MAWILE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_MEDITITE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_MEDICHAM] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 3, - }, - [SPECIES_SWABLU] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_ALTARIA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_WYNAUT] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_DUSKULL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_DUSCLOPS] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_ROSELIA] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_SLAKOTH] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_VIGOROTH] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_SLAKING] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_GULPIN] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_SWALOT] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_TROPIUS] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_WHISMUR] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_LOUDRED] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_EXPLOUD] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_CLAMPERL] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_HUNTAIL] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 2, - }, - [SPECIES_GOREBYSS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_ABSOL] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_SHUPPET] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_BANETTE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_SEVIPER] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_ZANGOOSE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_RELICANTH] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_ARON] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 17, - }, - [SPECIES_LAIRON] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 17, - }, - [SPECIES_AGGRON] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_CASTFORM] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_VOLBEAT] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_ILLUMISE] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_LILEEP] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_CRADILY] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_ANORITH] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 23, - }, - [SPECIES_ARMALDO] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_RALTS] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_KIRLIA] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 6, - }, - [SPECIES_GARDEVOIR] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_BAGON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_SHELGON] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_SALAMENCE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_BELDUM] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_METANG] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 16, - }, - [SPECIES_METAGROSS] = - { - .size = MON_COORDS_SIZE(64, 24), - .y_offset = 20, - }, - [SPECIES_REGIROCK] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_REGICE] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_REGISTEEL] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 14, - }, - [SPECIES_KYOGRE] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 19, - }, - [SPECIES_GROUDON] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_RAYQUAZA] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_LATIAS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_LATIOS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_JIRACHI] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_DEOXYS] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_CHIMECHO] = - { - .size = MON_COORDS_SIZE(32, 56), - .y_offset = 7, - }, - [SPECIES_EGG] = - { - .size = MON_COORDS_SIZE(24, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_B] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 9, - }, - [SPECIES_UNOWN_C] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_UNOWN_D] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_UNOWN_E] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_F] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_G] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 5, - }, - [SPECIES_UNOWN_H] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_UNOWN_I] = - { - .size = MON_COORDS_SIZE(24, 56), - .y_offset = 7, - }, - [SPECIES_UNOWN_J] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_UNOWN_K] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 7, - }, - [SPECIES_UNOWN_L] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_M] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_UNOWN_N] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_UNOWN_O] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_UNOWN_P] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_Q] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_UNOWN_R] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 12, - }, - [SPECIES_UNOWN_S] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 4, - }, - [SPECIES_UNOWN_T] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_UNOWN_U] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_UNOWN_V] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_UNOWN_W] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 13, - }, - [SPECIES_UNOWN_X] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_UNOWN_Y] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_Z] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 10, - }, - [SPECIES_UNOWN_EMARK] = - { - .size = MON_COORDS_SIZE(24, 56), - .y_offset = 6, - }, - [SPECIES_UNOWN_QMARK] = - { - .size = MON_COORDS_SIZE(32, 56), - .y_offset = 6, - }, + [SPECIES_NONE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BULBASAUR] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, + [SPECIES_IVYSAUR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_VENUSAUR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_CHARMANDER] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_CHARMELEON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_CHARIZARD] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_SQUIRTLE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_WARTORTLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_BLASTOISE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_CATERPIE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_METAPOD] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_BUTTERFREE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_WEEDLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_KAKUNA] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_BEEDRILL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_PIDGEY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_PIDGEOTTO] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_PIDGEOT] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_RATTATA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_RATICATE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_SPEAROW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_FEAROW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_EKANS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_ARBOK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_PIKACHU] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_RAICHU] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_SANDSHREW] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_SANDSLASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_NIDORAN_F] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_NIDORINA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_NIDOQUEEN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_NIDORAN_M] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_NIDORINO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_NIDOKING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_CLEFAIRY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_CLEFABLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_VULPIX] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_NINETALES] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_JIGGLYPUFF] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_WIGGLYTUFF] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_ZUBAT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_GOLBAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_ODDISH] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_GLOOM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_VILEPLUME] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_PARAS] = { .size = MON_COORDS_SIZE(48, 24), .y_offset = 20 }, + [SPECIES_PARASECT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_VENONAT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_VENOMOTH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_DIGLETT] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_DUGTRIO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_MEOWTH] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_PERSIAN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_PSYDUCK] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_GOLDUCK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_MANKEY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_PRIMEAPE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_GROWLITHE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_ARCANINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_POLIWAG] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 16 }, + [SPECIES_POLIWHIRL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_POLIWRATH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_ABRA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_KADABRA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_ALAKAZAM] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_MACHOP] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_MACHOKE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_MACHAMP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, + [SPECIES_BELLSPROUT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_WEEPINBELL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_VICTREEBEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_TENTACOOL] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_TENTACRUEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_GEODUDE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_GRAVELER] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, + [SPECIES_GOLEM] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, + [SPECIES_PONYTA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_RAPIDASH] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_SLOWPOKE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_SLOWBRO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_MAGNEMITE] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 20 }, + [SPECIES_MAGNETON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_FARFETCHD] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_DODUO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_DODRIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SEEL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_DEWGONG] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_GRIMER] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, + [SPECIES_MUK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_SHELLDER] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_CLOYSTER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_GASTLY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_HAUNTER] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_GENGAR] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_ONIX] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DROWZEE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_HYPNO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_KRABBY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_KINGLER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_VOLTORB] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_ELECTRODE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_EXEGGCUTE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_EXEGGUTOR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_CUBONE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_MAROWAK] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_HITMONLEE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_HITMONCHAN] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_LICKITUNG] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_KOFFING] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_WEEZING] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_RHYHORN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_RHYDON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_CHANSEY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_TANGELA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_KANGASKHAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_HORSEA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_SEADRA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_GOLDEEN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_SEAKING] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_STARYU] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_STARMIE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_MR_MIME] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_SCYTHER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_JYNX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_ELECTABUZZ] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_MAGMAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_PINSIR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_TAUROS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_MAGIKARP] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_GYARADOS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_LAPRAS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_DITTO] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_EEVEE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_VAPOREON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_JOLTEON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_FLAREON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_PORYGON] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_OMANYTE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_OMASTAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_KABUTO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_KABUTOPS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_AERODACTYL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SNORLAX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_ARTICUNO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_ZAPDOS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_MOLTRES] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_DRATINI] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_DRAGONAIR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_DRAGONITE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_MEWTWO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, + [SPECIES_MEW] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_CHIKORITA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_BAYLEEF] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_MEGANIUM] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_CYNDAQUIL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_QUILAVA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_TYPHLOSION] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_TOTODILE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_CROCONAW] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_FERALIGATR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SENTRET] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_FURRET] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_HOOTHOOT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_NOCTOWL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_LEDYBA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_LEDIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_SPINARAK] = { .size = MON_COORDS_SIZE(56, 24), .y_offset = 21 }, + [SPECIES_ARIADOS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_CROBAT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_CHINCHOU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_LANTURN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_PICHU] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_CLEFFA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, + [SPECIES_IGGLYBUFF] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_TOGEPI] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_TOGETIC] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_NATU] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_XATU] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_MAREEP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_FLAAFFY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_AMPHAROS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BELLOSSOM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_MARILL] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, + [SPECIES_AZUMARILL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SUDOWOODO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_POLITOED] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_HOPPIP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SKIPLOOM] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_JUMPLUFF] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_AIPOM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_SUNKERN] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_SUNFLORA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_YANMA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_WOOPER] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_QUAGSIRE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_ESPEON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_UMBREON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_MURKROW] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_SLOWKING] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_MISDREAVUS] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_UNOWN] = { .size = MON_COORDS_SIZE(24, 48), .y_offset = 8 }, + [SPECIES_WOBBUFFET] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 12 }, + [SPECIES_GIRAFARIG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_PINECO] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, + [SPECIES_FORRETRESS] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, + [SPECIES_DUNSPARCE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_GLIGAR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_STEELIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SNUBBULL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_GRANBULL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_QWILFISH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_SCIZOR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_SHUCKLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_HERACROSS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_SNEASEL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_TEDDIURSA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_URSARING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_SLUGMA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_MAGCARGO] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_SWINUB] = { .size = MON_COORDS_SIZE(48, 24), .y_offset = 21 }, + [SPECIES_PILOSWINE] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_CORSOLA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_REMORAID] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_OCTILLERY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_DELIBIRD] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_MANTINE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_SKARMORY] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_HOUNDOUR] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_HOUNDOOM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_KINGDRA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_PHANPY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_DONPHAN] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_PORYGON2] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_STANTLER] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_SMEARGLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_TYROGUE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_HITMONTOP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_SMOOCHUM] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, + [SPECIES_ELEKID] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_MAGBY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_MILTANK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_BLISSEY] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_RAIKOU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_ENTEI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_SUICUNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_LARVITAR] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_PUPITAR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_TYRANITAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LUGIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_HO_OH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_CELEBI] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_OLD_UNOWN_B] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_C] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_D] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_E] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_F] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_G] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_H] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_I] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_J] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_K] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_L] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_M] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_N] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_O] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_P] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_Q] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_R] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_S] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_T] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_U] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_V] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_W] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_X] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_Y] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_OLD_UNOWN_Z] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_TREECKO] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_GROVYLE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SCEPTILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_TORCHIC] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_COMBUSKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BLAZIKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MUDKIP] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_MARSHTOMP] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_SWAMPERT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_POOCHYENA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_MIGHTYENA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_ZIGZAGOON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_LINOONE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_WURMPLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_SILCOON] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 21 }, + [SPECIES_BEAUTIFLY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CASCOON] = { .size = MON_COORDS_SIZE(56, 24), .y_offset = 20 }, + [SPECIES_DUSTOX] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 20 }, + [SPECIES_LOTAD] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, + [SPECIES_LOMBRE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_LUDICOLO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_SEEDOT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_NUZLEAF] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_SHIFTRY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_NINCADA] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 20 }, + [SPECIES_NINJASK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SHEDINJA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_TAILLOW] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 17 }, + [SPECIES_SWELLOW] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SHROOMISH] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_BRELOOM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_SPINDA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_WINGULL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_PELIPPER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_SURSKIT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_MASQUERAIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_WAILMER] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 21 }, + [SPECIES_WAILORD] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 22 }, + [SPECIES_SKITTY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_DELCATTY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_KECLEON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_BALTOY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_CLAYDOL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_NOSEPASS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_TORKOAL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_SABLEYE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_BARBOACH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_WHISCASH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_LUVDISC] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_CORPHISH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_CRAWDAUNT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_FEEBAS] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_MILOTIC] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, + [SPECIES_CARVANHA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_SHARPEDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_TRAPINCH] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, + [SPECIES_VIBRAVA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, + [SPECIES_FLYGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_MAKUHITA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_HARIYAMA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_ELECTRIKE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, + [SPECIES_MANECTRIC] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_NUMEL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_CAMERUPT] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 19 }, + [SPECIES_SPHEAL] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, + [SPECIES_SEALEO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_WALREIN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_CACNEA] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_CACTURNE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_SNORUNT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_GLALIE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 12 }, + [SPECIES_LUNATONE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_SOLROCK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_AZURILL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_SPOINK] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_GRUMPIG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_PLUSLE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_MINUN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_MAWILE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_MEDITITE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_MEDICHAM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 3 }, + [SPECIES_SWABLU] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_ALTARIA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_WYNAUT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_DUSKULL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_DUSCLOPS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_ROSELIA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_SLAKOTH] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_VIGOROTH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_SLAKING] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_GULPIN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SWALOT] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_TROPIUS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_WHISMUR] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_LOUDRED] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_EXPLOUD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_CLAMPERL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_HUNTAIL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 2 }, + [SPECIES_GOREBYSS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_ABSOL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_SHUPPET] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_BANETTE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_SEVIPER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ZANGOOSE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_RELICANTH] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_ARON] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 17 }, + [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_CRADILY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_ANORITH] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 23 }, + [SPECIES_ARMALDO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_RALTS] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_KIRLIA] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, + [SPECIES_GARDEVOIR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_BAGON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_SHELGON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_SALAMENCE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_BELDUM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_METANG] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 16 }, + [SPECIES_METAGROSS] = { .size = MON_COORDS_SIZE(64, 24), .y_offset = 20 }, + [SPECIES_REGIROCK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_REGICE] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_REGISTEEL] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 14 }, + [SPECIES_KYOGRE] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 19 }, + [SPECIES_GROUDON] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_RAYQUAZA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, + [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 48), .y_offset = 10 }, + [SPECIES_UNOWN_B] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, + [SPECIES_UNOWN_C] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_UNOWN_D] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_UNOWN_E] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_UNOWN_F] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_UNOWN_G] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, + [SPECIES_UNOWN_H] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_UNOWN_I] = { .size = MON_COORDS_SIZE(24, 56), .y_offset = 7 }, + [SPECIES_UNOWN_J] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_UNOWN_K] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 7 }, + [SPECIES_UNOWN_L] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_UNOWN_M] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_UNOWN_N] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_UNOWN_O] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_UNOWN_P] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_UNOWN_Q] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_UNOWN_R] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, + [SPECIES_UNOWN_S] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 4 }, + [SPECIES_UNOWN_T] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_UNOWN_U] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_UNOWN_V] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_UNOWN_W] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_UNOWN_X] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_UNOWN_Y] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_UNOWN_Z] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 10 }, + [SPECIES_UNOWN_EMARK] = { .size = MON_COORDS_SIZE(24, 56), .y_offset = 6 }, + [SPECIES_UNOWN_QMARK] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 6 }, }; diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h index 6022f9cc18..34d5c67442 100644 --- a/src/data/pokemon_graphics/front_pic_coordinates.h +++ b/src/data/pokemon_graphics/front_pic_coordinates.h @@ -4,2204 +4,444 @@ // .y_offset is the number of pixels between the drawn pixel area and the bottom edge. const struct MonCoords gMonFrontPicCoords[] = { - [SPECIES_NONE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_BULBASAUR] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 14, - }, - [SPECIES_IVYSAUR] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_VENUSAUR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_CHARMANDER] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_CHARMELEON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_CHARIZARD] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SQUIRTLE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_WARTORTLE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_BLASTOISE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CATERPIE] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 16, - }, - [SPECIES_METAPOD] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 20, - }, - [SPECIES_BUTTERFREE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_WEEDLE] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 18, - }, - [SPECIES_KAKUNA] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 14, - }, - [SPECIES_BEEDRILL] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_PIDGEY] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_PIDGEOTTO] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 11, - }, - [SPECIES_PIDGEOT] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_RATTATA] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_RATICATE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_SPEAROW] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 15, - }, - [SPECIES_FEAROW] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_EKANS] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_ARBOK] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_PIKACHU] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 9, - }, - [SPECIES_RAICHU] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 4, - }, - [SPECIES_SANDSHREW] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_SANDSLASH] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_NIDORAN_F] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 15, - }, - [SPECIES_NIDORINA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_NIDOQUEEN] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_NIDORAN_M] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_NIDORINO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_NIDOKING] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 2, - }, - [SPECIES_CLEFAIRY] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 16, - }, - [SPECIES_CLEFABLE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_VULPIX] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_NINETALES] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_JIGGLYPUFF] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 16, - }, - [SPECIES_WIGGLYTUFF] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 8, - }, - [SPECIES_ZUBAT] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_GOLBAT] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_ODDISH] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 15, - }, - [SPECIES_GLOOM] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_VILEPLUME] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_PARAS] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_PARASECT] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_VENONAT] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_VENOMOTH] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_DIGLETT] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 18, - }, - [SPECIES_DUGTRIO] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_MEOWTH] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_PERSIAN] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_PSYDUCK] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 9, - }, - [SPECIES_GOLDUCK] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 2, - }, - [SPECIES_MANKEY] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_PRIMEAPE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_GROWLITHE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_ARCANINE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_POLIWAG] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 19, - }, - [SPECIES_POLIWHIRL] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_POLIWRATH] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_ABRA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_KADABRA] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_ALAKAZAM] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_MACHOP] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_MACHOKE] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_MACHAMP] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_BELLSPROUT] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 15, - }, - [SPECIES_WEEPINBELL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_VICTREEBEL] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_TENTACOOL] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_TENTACRUEL] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_GEODUDE] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 18, - }, - [SPECIES_GRAVELER] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_GOLEM] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_PONYTA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_RAPIDASH] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SLOWPOKE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_SLOWBRO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_MAGNEMITE] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 21, - }, - [SPECIES_MAGNETON] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_FARFETCHD] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_DODUO] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 5, - }, - [SPECIES_DODRIO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SEEL] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_DEWGONG] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_GRIMER] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_MUK] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_SHELLDER] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 16, - }, - [SPECIES_CLOYSTER] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_GASTLY] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_HAUNTER] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_GENGAR] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_ONIX] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 2, - }, - [SPECIES_DROWZEE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_HYPNO] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_KRABBY] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 13, - }, - [SPECIES_KINGLER] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_VOLTORB] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 19, - }, - [SPECIES_ELECTRODE] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_EXEGGCUTE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_EXEGGUTOR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CUBONE] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_MAROWAK] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 11, - }, - [SPECIES_HITMONLEE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_HITMONCHAN] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 4, - }, - [SPECIES_LICKITUNG] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_KOFFING] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_WEEZING] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_RHYHORN] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_RHYDON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_CHANSEY] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_TANGELA] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_KANGASKHAN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_HORSEA] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 15, - }, - [SPECIES_SEADRA] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_GOLDEEN] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_SEAKING] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_STARYU] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_STARMIE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_MR_MIME] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_SCYTHER] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_JYNX] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_ELECTABUZZ] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 2, - }, - [SPECIES_MAGMAR] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_PINSIR] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_TAUROS] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_MAGIKARP] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_GYARADOS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 8, - }, - [SPECIES_LAPRAS] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 13, - }, - [SPECIES_DITTO] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 17, - }, - [SPECIES_EEVEE] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 9, - }, - [SPECIES_VAPOREON] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_JOLTEON] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_FLAREON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_PORYGON] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 13, - }, - [SPECIES_OMANYTE] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 15, - }, - [SPECIES_OMASTAR] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_KABUTO] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 17, - }, - [SPECIES_KABUTOPS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_AERODACTYL] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SNORLAX] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_ARTICUNO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_ZAPDOS] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_MOLTRES] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_DRATINI] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 14, - }, - [SPECIES_DRAGONAIR] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_DRAGONITE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_MEWTWO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_MEW] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 13, - }, - [SPECIES_CHIKORITA] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_BAYLEEF] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_MEGANIUM] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CYNDAQUIL] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_QUILAVA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_TYPHLOSION] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_TOTODILE] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_CROCONAW] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_FERALIGATR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SENTRET] = - { - .size = MON_COORDS_SIZE(32, 56), - .y_offset = 4, - }, - [SPECIES_FURRET] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_HOOTHOOT] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 13, - }, - [SPECIES_NOCTOWL] = - { - .size = MON_COORDS_SIZE(40, 64), - .y_offset = 3, - }, - [SPECIES_LEDYBA] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 12, - }, - [SPECIES_LEDIAN] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 4, - }, - [SPECIES_SPINARAK] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 19, - }, - [SPECIES_ARIADOS] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_CROBAT] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CHINCHOU] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 16, - }, - [SPECIES_LANTURN] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 11, - }, - [SPECIES_PICHU] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 12, - }, - [SPECIES_CLEFFA] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 20, - }, - [SPECIES_IGGLYBUFF] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 18, - }, - [SPECIES_TOGEPI] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 20, - }, - [SPECIES_TOGETIC] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_NATU] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 20, - }, - [SPECIES_XATU] = - { - .size = MON_COORDS_SIZE(32, 56), - .y_offset = 7, - }, - [SPECIES_MAREEP] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 16, - }, - [SPECIES_FLAAFFY] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_AMPHAROS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_BELLOSSOM] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 14, - }, - [SPECIES_MARILL] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_AZUMARILL] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_SUDOWOODO] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_POLITOED] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_HOPPIP] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_SKIPLOOM] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_JUMPLUFF] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_AIPOM] = - { - .size = MON_COORDS_SIZE(40, 64), - .y_offset = 3, - }, - [SPECIES_SUNKERN] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_SUNFLORA] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_YANMA] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_WOOPER] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_QUAGSIRE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 7, - }, - [SPECIES_ESPEON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_UMBREON] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 8, - }, - [SPECIES_MURKROW] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_SLOWKING] = - { - .size = MON_COORDS_SIZE(40, 64), - .y_offset = 1, - }, - [SPECIES_MISDREAVUS] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_UNOWN] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 15, - }, - [SPECIES_WOBBUFFET] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_GIRAFARIG] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_PINECO] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_FORRETRESS] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_DUNSPARCE] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 17, - }, - [SPECIES_GLIGAR] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_STEELIX] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SNUBBULL] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 13, - }, - [SPECIES_GRANBULL] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 6, - }, - [SPECIES_QWILFISH] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 10, - }, - [SPECIES_SCIZOR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SHUCKLE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_HERACROSS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_SNEASEL] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_TEDDIURSA] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_URSARING] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 1, - }, - [SPECIES_SLUGMA] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_MAGCARGO] = - { - .size = MON_COORDS_SIZE(40, 56), - .y_offset = 13, - }, - [SPECIES_SWINUB] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 20, - }, - [SPECIES_PILOSWINE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_CORSOLA] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_REMORAID] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_OCTILLERY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_DELIBIRD] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_MANTINE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_SKARMORY] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_HOUNDOUR] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_HOUNDOOM] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_KINGDRA] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 4, - }, - [SPECIES_PHANPY] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_DONPHAN] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_PORYGON2] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_STANTLER] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SMEARGLE] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_TYROGUE] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_HITMONTOP] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 5, - }, - [SPECIES_SMOOCHUM] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 15, - }, - [SPECIES_ELEKID] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_MAGBY] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 13, - }, - [SPECIES_MILTANK] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_BLISSEY] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 6, - }, - [SPECIES_RAIKOU] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_ENTEI] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SUICUNE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_LARVITAR] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_PUPITAR] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 9, - }, - [SPECIES_TYRANITAR] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_LUGIA] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_HO_OH] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CELEBI] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_OLD_UNOWN_B] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_C] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_D] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_E] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_F] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_G] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_H] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_I] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_J] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_K] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_L] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_M] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_N] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_O] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_P] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_Q] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_R] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_S] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_T] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_U] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_V] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_W] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_X] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_Y] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_OLD_UNOWN_Z] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_TREECKO] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_GROVYLE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_SCEPTILE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_TORCHIC] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_COMBUSKEN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_BLAZIKEN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_MUDKIP] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 12, - }, - [SPECIES_MARSHTOMP] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_SWAMPERT] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_POOCHYENA] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_MIGHTYENA] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_ZIGZAGOON] = - { - .size = MON_COORDS_SIZE(64, 40), - .y_offset = 15, - }, - [SPECIES_LINOONE] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_WURMPLE] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 14, - }, - [SPECIES_SILCOON] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 17, - }, - [SPECIES_BEAUTIFLY] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 9, - }, - [SPECIES_CASCOON] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 16, - }, - [SPECIES_DUSTOX] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 15, - }, - [SPECIES_LOTAD] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 14, - }, - [SPECIES_LOMBRE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_LUDICOLO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SEEDOT] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 16, - }, - [SPECIES_NUZLEAF] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_SHIFTRY] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_NINCADA] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 18, - }, - [SPECIES_NINJASK] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_SHEDINJA] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_TAILLOW] = - { - .size = MON_COORDS_SIZE(48, 32), - .y_offset = 16, - }, - [SPECIES_SWELLOW] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_SHROOMISH] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_BRELOOM] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_SPINDA] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 8, - }, - [SPECIES_WINGULL] = - { - .size = MON_COORDS_SIZE(64, 32), - .y_offset = 24, - }, - [SPECIES_PELIPPER] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 4, - }, - [SPECIES_SURSKIT] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 15, - }, - [SPECIES_MASQUERAIN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_WAILMER] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 15, - }, - [SPECIES_WAILORD] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 10, - }, - [SPECIES_SKITTY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 11, - }, - [SPECIES_DELCATTY] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_KECLEON] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_BALTOY] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 16, - }, - [SPECIES_CLAYDOL] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 6, - }, - [SPECIES_NOSEPASS] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 12, - }, - [SPECIES_TORKOAL] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_SABLEYE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_BARBOACH] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 11, - }, - [SPECIES_WHISCASH] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 9, - }, - [SPECIES_LUVDISC] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 24, - }, - [SPECIES_CORPHISH] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 12, - }, - [SPECIES_CRAWDAUNT] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_FEEBAS] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 13, - }, - [SPECIES_MILOTIC] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CARVANHA] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 6, - }, - [SPECIES_SHARPEDO] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_TRAPINCH] = - { - .size = MON_COORDS_SIZE(40, 32), - .y_offset = 16, - }, - [SPECIES_VIBRAVA] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 12, - }, - [SPECIES_FLYGON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_MAKUHITA] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_HARIYAMA] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_ELECTRIKE] = - { - .size = MON_COORDS_SIZE(48, 32), - .y_offset = 18, - }, - [SPECIES_MANECTRIC] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 4, - }, - [SPECIES_NUMEL] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 15, - }, - [SPECIES_CAMERUPT] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 9, - }, - [SPECIES_SPHEAL] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 16, - }, - [SPECIES_SEALEO] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 10, - }, - [SPECIES_WALREIN] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_CACNEA] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 16, - }, - [SPECIES_CACTURNE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_SNORUNT] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_GLALIE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 10, - }, - [SPECIES_LUNATONE] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_SOLROCK] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_AZURILL] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_SPOINK] = - { - .size = MON_COORDS_SIZE(32, 48), - .y_offset = 9, - }, - [SPECIES_GRUMPIG] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_PLUSLE] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 14, - }, - [SPECIES_MINUN] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 12, - }, - [SPECIES_MAWILE] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_MEDITITE] = - { - .size = MON_COORDS_SIZE(48, 40), - .y_offset = 12, - }, - [SPECIES_MEDICHAM] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 1, - }, - [SPECIES_SWABLU] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 17, - }, - [SPECIES_ALTARIA] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_WYNAUT] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_DUSKULL] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 10, - }, - [SPECIES_DUSCLOPS] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 5, - }, - [SPECIES_ROSELIA] = - { - .size = MON_COORDS_SIZE(56, 48), - .y_offset = 8, - }, - [SPECIES_SLAKOTH] = - { - .size = MON_COORDS_SIZE(56, 32), - .y_offset = 18, - }, - [SPECIES_VIGOROTH] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_SLAKING] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 8, - }, - [SPECIES_GULPIN] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 18, - }, - [SPECIES_SWALOT] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_TROPIUS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_WHISMUR] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_LOUDRED] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_EXPLOUD] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_CLAMPERL] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 14, - }, - [SPECIES_HUNTAIL] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 3, - }, - [SPECIES_GOREBYSS] = - { - .size = MON_COORDS_SIZE(64, 48), - .y_offset = 11, - }, - [SPECIES_ABSOL] = - { - .size = MON_COORDS_SIZE(48, 64), - .y_offset = 0, - }, - [SPECIES_SHUPPET] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 14, - }, - [SPECIES_BANETTE] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 12, - }, - [SPECIES_SEVIPER] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 8, - }, - [SPECIES_ZANGOOSE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 5, - }, - [SPECIES_RELICANTH] = - { - .size = MON_COORDS_SIZE(56, 56), - .y_offset = 11, - }, - [SPECIES_ARON] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 20, - }, - [SPECIES_LAIRON] = - { - .size = MON_COORDS_SIZE(56, 40), - .y_offset = 13, - }, - [SPECIES_AGGRON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_CASTFORM] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 17, - }, - [SPECIES_VOLBEAT] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_ILLUMISE] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 8, - }, - [SPECIES_LILEEP] = - { - .size = MON_COORDS_SIZE(48, 56), - .y_offset = 7, - }, - [SPECIES_CRADILY] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 0, - }, - [SPECIES_ANORITH] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 8, - }, - [SPECIES_ARMALDO] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_RALTS] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 15, - }, - [SPECIES_KIRLIA] = - { - .size = MON_COORDS_SIZE(32, 56), - .y_offset = 6, - }, - [SPECIES_GARDEVOIR] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 1, - }, - [SPECIES_BAGON] = - { - .size = MON_COORDS_SIZE(40, 48), - .y_offset = 11, - }, - [SPECIES_SHELGON] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 9, - }, - [SPECIES_SALAMENCE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_BELDUM] = - { - .size = MON_COORDS_SIZE(40, 40), - .y_offset = 15, - }, - [SPECIES_METANG] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 7, - }, - [SPECIES_METAGROSS] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 6, - }, - [SPECIES_REGIROCK] = - { - .size = MON_COORDS_SIZE(56, 64), - .y_offset = 4, - }, - [SPECIES_REGICE] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_REGISTEEL] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 3, - }, - [SPECIES_KYOGRE] = - { - .size = MON_COORDS_SIZE(64, 56), - .y_offset = 4, - }, - [SPECIES_GROUDON] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_RAYQUAZA] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 0, - }, - [SPECIES_LATIAS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_LATIOS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 2, - }, - [SPECIES_JIRACHI] = - { - .size = MON_COORDS_SIZE(48, 48), - .y_offset = 13, - }, - [SPECIES_DEOXYS] = - { - .size = MON_COORDS_SIZE(64, 64), - .y_offset = 1, - }, - [SPECIES_CHIMECHO] = - { - .size = MON_COORDS_SIZE(24, 56), - .y_offset = 6, - }, - [SPECIES_EGG] = - { - .size = MON_COORDS_SIZE(24, 24), - .y_offset = 20, - }, - [SPECIES_UNOWN_B] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_C] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_D] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_E] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 17, - }, - [SPECIES_UNOWN_F] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 17, - }, - [SPECIES_UNOWN_G] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 14, - }, - [SPECIES_UNOWN_H] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_I] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_J] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 17, - }, - [SPECIES_UNOWN_K] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 17, - }, - [SPECIES_UNOWN_L] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 19, - }, - [SPECIES_UNOWN_M] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 19, - }, - [SPECIES_UNOWN_N] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 20, - }, - [SPECIES_UNOWN_O] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_P] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 19, - }, - [SPECIES_UNOWN_Q] = - { - .size = MON_COORDS_SIZE(32, 24), - .y_offset = 21, - }, - [SPECIES_UNOWN_R] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 19, - }, - [SPECIES_UNOWN_S] = - { - .size = MON_COORDS_SIZE(32, 40), - .y_offset = 12, - }, - [SPECIES_UNOWN_T] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 18, - }, - [SPECIES_UNOWN_U] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 18, - }, - [SPECIES_UNOWN_V] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 18, - }, - [SPECIES_UNOWN_W] = - { - .size = MON_COORDS_SIZE(32, 32), - .y_offset = 19, - }, - [SPECIES_UNOWN_X] = - { - .size = MON_COORDS_SIZE(24, 24), - .y_offset = 21, - }, - [SPECIES_UNOWN_Y] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 17, - }, - [SPECIES_UNOWN_Z] = - { - .size = MON_COORDS_SIZE(24, 32), - .y_offset = 16, - }, - [SPECIES_UNOWN_EMARK] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 15, - }, - [SPECIES_UNOWN_QMARK] = - { - .size = MON_COORDS_SIZE(24, 40), - .y_offset = 13, - }, + [SPECIES_NONE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_BULBASAUR] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_IVYSAUR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_VENUSAUR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_CHARMANDER] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_CHARMELEON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_CHARIZARD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SQUIRTLE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_WARTORTLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_BLASTOISE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CATERPIE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 16 }, + [SPECIES_METAPOD] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 20 }, + [SPECIES_BUTTERFREE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_WEEDLE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 18 }, + [SPECIES_KAKUNA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_BEEDRILL] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_PIDGEY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_PIDGEOTTO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 11 }, + [SPECIES_PIDGEOT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_RATTATA] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_RATICATE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SPEAROW] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 15 }, + [SPECIES_FEAROW] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_EKANS] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_ARBOK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_PIKACHU] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 9 }, + [SPECIES_RAICHU] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, + [SPECIES_SANDSHREW] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_SANDSLASH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_NIDORAN_F] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 15 }, + [SPECIES_NIDORINA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_NIDOQUEEN] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_NIDORAN_M] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_NIDORINO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_NIDOKING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_CLEFAIRY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, + [SPECIES_CLEFABLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_VULPIX] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_NINETALES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_JIGGLYPUFF] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 16 }, + [SPECIES_WIGGLYTUFF] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, + [SPECIES_ZUBAT] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_GOLBAT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ODDISH] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 15 }, + [SPECIES_GLOOM] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_VILEPLUME] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_PARAS] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_PARASECT] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_VENONAT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_VENOMOTH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_DIGLETT] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 18 }, + [SPECIES_DUGTRIO] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_MEOWTH] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_PERSIAN] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_PSYDUCK] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, + [SPECIES_GOLDUCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_MANKEY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_PRIMEAPE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_GROWLITHE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_ARCANINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_POLIWAG] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 19 }, + [SPECIES_POLIWHIRL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_POLIWRATH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_ABRA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_KADABRA] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_ALAKAZAM] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_MACHOP] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_MACHOKE] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_MACHAMP] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BELLSPROUT] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, + [SPECIES_WEEPINBELL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_VICTREEBEL] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_TENTACOOL] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_TENTACRUEL] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_GEODUDE] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 18 }, + [SPECIES_GRAVELER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_GOLEM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_PONYTA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_RAPIDASH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SLOWPOKE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SLOWBRO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_MAGNEMITE] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 21 }, + [SPECIES_MAGNETON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_FARFETCHD] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_DODUO] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 5 }, + [SPECIES_DODRIO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SEEL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_DEWGONG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_GRIMER] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_MUK] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_SHELLDER] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, + [SPECIES_CLOYSTER] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_GASTLY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_HAUNTER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_GENGAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_ONIX] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_DROWZEE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_HYPNO] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_KRABBY] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 13 }, + [SPECIES_KINGLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_VOLTORB] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 19 }, + [SPECIES_ELECTRODE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_EXEGGCUTE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_EXEGGUTOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CUBONE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_MAROWAK] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 11 }, + [SPECIES_HITMONLEE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_HITMONCHAN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, + [SPECIES_LICKITUNG] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_KOFFING] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_WEEZING] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_RHYHORN] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_RHYDON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_CHANSEY] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_TANGELA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_KANGASKHAN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_HORSEA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 15 }, + [SPECIES_SEADRA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_GOLDEEN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_SEAKING] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_STARYU] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_STARMIE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_MR_MIME] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_SCYTHER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_JYNX] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_ELECTABUZZ] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 2 }, + [SPECIES_MAGMAR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_PINSIR] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_TAUROS] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_MAGIKARP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_GYARADOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 8 }, + [SPECIES_LAPRAS] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 13 }, + [SPECIES_DITTO] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_EEVEE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, + [SPECIES_VAPOREON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_JOLTEON] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_FLAREON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_PORYGON] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_OMANYTE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 15 }, + [SPECIES_OMASTAR] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_KABUTO] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 17 }, + [SPECIES_KABUTOPS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_AERODACTYL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SNORLAX] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_ARTICUNO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_ZAPDOS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_MOLTRES] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_DRATINI] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 14 }, + [SPECIES_DRAGONAIR] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_DRAGONITE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MEWTWO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MEW] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_CHIKORITA] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_BAYLEEF] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_MEGANIUM] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CYNDAQUIL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_QUILAVA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_TYPHLOSION] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_TOTODILE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_CROCONAW] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_FERALIGATR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SENTRET] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 4 }, + [SPECIES_FURRET] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_HOOTHOOT] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_NOCTOWL] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 3 }, + [SPECIES_LEDYBA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, + [SPECIES_LEDIAN] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, + [SPECIES_SPINARAK] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 19 }, + [SPECIES_ARIADOS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_CROBAT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CHINCHOU] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 16 }, + [SPECIES_LANTURN] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 11 }, + [SPECIES_PICHU] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, + [SPECIES_CLEFFA] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 20 }, + [SPECIES_IGGLYBUFF] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, + [SPECIES_TOGEPI] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 20 }, + [SPECIES_TOGETIC] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_NATU] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 20 }, + [SPECIES_XATU] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 7 }, + [SPECIES_MAREEP] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, + [SPECIES_FLAAFFY] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_AMPHAROS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_BELLOSSOM] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_MARILL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_AZUMARILL] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_SUDOWOODO] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_POLITOED] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_HOPPIP] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_SKIPLOOM] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_JUMPLUFF] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_AIPOM] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 3 }, + [SPECIES_SUNKERN] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_SUNFLORA] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_YANMA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_WOOPER] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_QUAGSIRE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 7 }, + [SPECIES_ESPEON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_UMBREON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 8 }, + [SPECIES_MURKROW] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_SLOWKING] = { .size = MON_COORDS_SIZE(40, 64), .y_offset = 1 }, + [SPECIES_MISDREAVUS] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_UNOWN] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, + [SPECIES_WOBBUFFET] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_GIRAFARIG] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_PINECO] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_FORRETRESS] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_DUNSPARCE] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 17 }, + [SPECIES_GLIGAR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_STEELIX] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SNUBBULL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 13 }, + [SPECIES_GRANBULL] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 6 }, + [SPECIES_QWILFISH] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 10 }, + [SPECIES_SCIZOR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SHUCKLE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_HERACROSS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_SNEASEL] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_TEDDIURSA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_URSARING] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, + [SPECIES_SLUGMA] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_MAGCARGO] = { .size = MON_COORDS_SIZE(40, 56), .y_offset = 13 }, + [SPECIES_SWINUB] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 20 }, + [SPECIES_PILOSWINE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_CORSOLA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_REMORAID] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_OCTILLERY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_DELIBIRD] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_MANTINE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_SKARMORY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_HOUNDOUR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_HOUNDOOM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_KINGDRA] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, + [SPECIES_PHANPY] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_DONPHAN] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_PORYGON2] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_STANTLER] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SMEARGLE] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_TYROGUE] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_HITMONTOP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 5 }, + [SPECIES_SMOOCHUM] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, + [SPECIES_ELEKID] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_MAGBY] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 13 }, + [SPECIES_MILTANK] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_BLISSEY] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 6 }, + [SPECIES_RAIKOU] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_ENTEI] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SUICUNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LARVITAR] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_PUPITAR] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 9 }, + [SPECIES_TYRANITAR] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LUGIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_HO_OH] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CELEBI] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_OLD_UNOWN_B] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_C] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_D] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_E] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_F] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_G] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_H] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_I] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_J] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_K] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_L] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_M] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_N] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_O] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_P] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_Q] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_R] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_S] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_T] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_U] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_V] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_W] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_X] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_Y] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_OLD_UNOWN_Z] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_TREECKO] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_GROVYLE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_SCEPTILE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_TORCHIC] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_COMBUSKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_BLAZIKEN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_MUDKIP] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, + [SPECIES_MARSHTOMP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_SWAMPERT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_POOCHYENA] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_MIGHTYENA] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_ZIGZAGOON] = { .size = MON_COORDS_SIZE(64, 40), .y_offset = 15 }, + [SPECIES_LINOONE] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_WURMPLE] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 14 }, + [SPECIES_SILCOON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 17 }, + [SPECIES_BEAUTIFLY] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 9 }, + [SPECIES_CASCOON] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 16 }, + [SPECIES_DUSTOX] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 15 }, + [SPECIES_LOTAD] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 14 }, + [SPECIES_LOMBRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_LUDICOLO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SEEDOT] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 16 }, + [SPECIES_NUZLEAF] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_SHIFTRY] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_NINCADA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, + [SPECIES_NINJASK] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_SHEDINJA] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_TAILLOW] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 16 }, + [SPECIES_SWELLOW] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_SHROOMISH] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_BRELOOM] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_SPINDA] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 8 }, + [SPECIES_WINGULL] = { .size = MON_COORDS_SIZE(64, 32), .y_offset = 24 }, + [SPECIES_PELIPPER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 4 }, + [SPECIES_SURSKIT] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, + [SPECIES_MASQUERAIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_WAILMER] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 15 }, + [SPECIES_WAILORD] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 10 }, + [SPECIES_SKITTY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 11 }, + [SPECIES_DELCATTY] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_KECLEON] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_BALTOY] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 16 }, + [SPECIES_CLAYDOL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 6 }, + [SPECIES_NOSEPASS] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 12 }, + [SPECIES_TORKOAL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_SABLEYE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_BARBOACH] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 11 }, + [SPECIES_WHISCASH] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 9 }, + [SPECIES_LUVDISC] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 24 }, + [SPECIES_CORPHISH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, + [SPECIES_CRAWDAUNT] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_FEEBAS] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 13 }, + [SPECIES_MILOTIC] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CARVANHA] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 6 }, + [SPECIES_SHARPEDO] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_TRAPINCH] = { .size = MON_COORDS_SIZE(40, 32), .y_offset = 16 }, + [SPECIES_VIBRAVA] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 12 }, + [SPECIES_FLYGON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_MAKUHITA] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_HARIYAMA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_ELECTRIKE] = { .size = MON_COORDS_SIZE(48, 32), .y_offset = 18 }, + [SPECIES_MANECTRIC] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 4 }, + [SPECIES_NUMEL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 15 }, + [SPECIES_CAMERUPT] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 9 }, + [SPECIES_SPHEAL] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 16 }, + [SPECIES_SEALEO] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 10 }, + [SPECIES_WALREIN] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_CACNEA] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 16 }, + [SPECIES_CACTURNE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_SNORUNT] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_GLALIE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 10 }, + [SPECIES_LUNATONE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_SOLROCK] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_AZURILL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_SPOINK] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [SPECIES_GRUMPIG] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_PLUSLE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 14 }, + [SPECIES_MINUN] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 12 }, + [SPECIES_MAWILE] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_MEDITITE] = { .size = MON_COORDS_SIZE(48, 40), .y_offset = 12 }, + [SPECIES_MEDICHAM] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 1 }, + [SPECIES_SWABLU] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 17 }, + [SPECIES_ALTARIA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_WYNAUT] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_DUSKULL] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 10 }, + [SPECIES_DUSCLOPS] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 5 }, + [SPECIES_ROSELIA] = { .size = MON_COORDS_SIZE(56, 48), .y_offset = 8 }, + [SPECIES_SLAKOTH] = { .size = MON_COORDS_SIZE(56, 32), .y_offset = 18 }, + [SPECIES_VIGOROTH] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_SLAKING] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, + [SPECIES_GULPIN] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 18 }, + [SPECIES_SWALOT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_TROPIUS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_WHISMUR] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_LOUDRED] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_EXPLOUD] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_CLAMPERL] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 14 }, + [SPECIES_HUNTAIL] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 3 }, + [SPECIES_GOREBYSS] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 11 }, + [SPECIES_ABSOL] = { .size = MON_COORDS_SIZE(48, 64), .y_offset = 0 }, + [SPECIES_SHUPPET] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 14 }, + [SPECIES_BANETTE] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 12 }, + [SPECIES_SEVIPER] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 8 }, + [SPECIES_ZANGOOSE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 5 }, + [SPECIES_RELICANTH] = { .size = MON_COORDS_SIZE(56, 56), .y_offset = 11 }, + [SPECIES_ARON] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 20 }, + [SPECIES_LAIRON] = { .size = MON_COORDS_SIZE(56, 40), .y_offset = 13 }, + [SPECIES_AGGRON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_CASTFORM] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, + [SPECIES_VOLBEAT] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_ILLUMISE] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 8 }, + [SPECIES_LILEEP] = { .size = MON_COORDS_SIZE(48, 56), .y_offset = 7 }, + [SPECIES_CRADILY] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 0 }, + [SPECIES_ANORITH] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 8 }, + [SPECIES_ARMALDO] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_RALTS] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, + [SPECIES_KIRLIA] = { .size = MON_COORDS_SIZE(32, 56), .y_offset = 6 }, + [SPECIES_GARDEVOIR] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 1 }, + [SPECIES_BAGON] = { .size = MON_COORDS_SIZE(40, 48), .y_offset = 11 }, + [SPECIES_SHELGON] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [SPECIES_SALAMENCE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_BELDUM] = { .size = MON_COORDS_SIZE(40, 40), .y_offset = 15 }, + [SPECIES_METANG] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 7 }, + [SPECIES_METAGROSS] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 6 }, + [SPECIES_REGIROCK] = { .size = MON_COORDS_SIZE(56, 64), .y_offset = 4 }, + [SPECIES_REGICE] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_REGISTEEL] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 3 }, + [SPECIES_KYOGRE] = { .size = MON_COORDS_SIZE(64, 56), .y_offset = 4 }, + [SPECIES_GROUDON] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_RAYQUAZA] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 0 }, + [SPECIES_LATIAS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_LATIOS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 2 }, + [SPECIES_JIRACHI] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 13 }, + [SPECIES_DEOXYS] = { .size = MON_COORDS_SIZE(64, 64), .y_offset = 1 }, + [SPECIES_CHIMECHO] = { .size = MON_COORDS_SIZE(24, 56), .y_offset = 6 }, + [SPECIES_EGG] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 20 }, + [SPECIES_UNOWN_B] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, + [SPECIES_UNOWN_C] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_UNOWN_D] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_UNOWN_E] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, + [SPECIES_UNOWN_F] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, + [SPECIES_UNOWN_G] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 14 }, + [SPECIES_UNOWN_H] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_UNOWN_I] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, + [SPECIES_UNOWN_J] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, + [SPECIES_UNOWN_K] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, + [SPECIES_UNOWN_L] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, + [SPECIES_UNOWN_M] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 19 }, + [SPECIES_UNOWN_N] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 20 }, + [SPECIES_UNOWN_O] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 16 }, + [SPECIES_UNOWN_P] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, + [SPECIES_UNOWN_Q] = { .size = MON_COORDS_SIZE(32, 24), .y_offset = 21 }, + [SPECIES_UNOWN_R] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 19 }, + [SPECIES_UNOWN_S] = { .size = MON_COORDS_SIZE(32, 40), .y_offset = 12 }, + [SPECIES_UNOWN_T] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 18 }, + [SPECIES_UNOWN_U] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, + [SPECIES_UNOWN_V] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 18 }, + [SPECIES_UNOWN_W] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 19 }, + [SPECIES_UNOWN_X] = { .size = MON_COORDS_SIZE(24, 24), .y_offset = 21 }, + [SPECIES_UNOWN_Y] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 17 }, + [SPECIES_UNOWN_Z] = { .size = MON_COORDS_SIZE(24, 32), .y_offset = 16 }, + [SPECIES_UNOWN_EMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 15 }, + [SPECIES_UNOWN_QMARK] = { .size = MON_COORDS_SIZE(24, 40), .y_offset = 13 }, }; From 91447796340c6738c610fd0b003209d54c72456e Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 9 Sep 2022 08:49:16 -0400 Subject: [PATCH 231/271] Removed repeated extern consts in strings.h --- include/strings.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/strings.h b/include/strings.h index abcf5cc47c..eeada2b943 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2152,9 +2152,7 @@ extern const u8 gText_Switch2[]; extern const u8 gText_Item[]; extern const u8 gText_NotPkmnOtherTrainerWants[]; extern const u8 gText_ThatIsntAnEgg[]; -extern const u8 gText_PkmnCantBeTradedNow[]; extern const u8 gText_OtherTrainersPkmnCantBeTraded[]; -extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_OtherTrainerCantAcceptPkmn[]; extern const u8 gText_CantTradeWithTrainer[]; From 431cb6fa7ccf7898c3dce308808e5cb26b422719 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 9 Sep 2022 21:57:40 +0700 Subject: [PATCH 232/271] Tidying graphics - Trio Weather --- data/battle_anim_scripts.s | 32 +++++------------- .../backgrounds/windstorm_brew.pal | 19 +++++++++++ .../backgrounds/windstorm_brew.png | Bin 1067 -> 0 bytes .../battle_anims/sprites/primal_particles.png | Bin 510 -> 0 bytes include/constants/battle_anim.h | 5 ++- src/battle_anim_effects_3.c | 11 ------ src/battle_anim_flying.c | 4 +-- src/data/battle_anim.h | 2 -- src/graphics.c | 5 --- 9 files changed, 31 insertions(+), 47 deletions(-) create mode 100644 graphics/battle_anims/backgrounds/windstorm_brew.pal delete mode 100644 graphics/battle_anims/backgrounds/windstorm_brew.png delete mode 100644 graphics/battle_anims/sprites/primal_particles.png diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index f83d437a5d..601db597fe 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -24839,15 +24839,15 @@ General_PrimalReversion:: jumpargeq 0x1, ITEM_BLUE_ORB, General_PrimalReversion_Alpha General_PrimalReversion_Alpha: loadspritegfx ANIM_TAG_ALPHA_STONE - loadspritegfx ANIM_TAG_PRIMAL_PARTICLES + loadspritegfx ANIM_TAG_MEGA_PARTICLES loadspritegfx ANIM_TAG_ALPHA_SYMBOL monbg ANIM_ATTACKER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, RGB(31, 31, 11) - call PrimalReversionParticles - call PrimalReversionParticles - call PrimalReversionParticles + call MegaEvolutionParticles + call MegaEvolutionParticles + call MegaEvolutionParticles waitforvisualfinish playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gAlphaStoneSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 @@ -24865,15 +24865,15 @@ General_PrimalReversion_Alpha: end General_PrimalReversion_Omega: loadspritegfx ANIM_TAG_OMEGA_STONE - loadspritegfx ANIM_TAG_PRIMAL_PARTICLES + loadspritegfx ANIM_TAG_MEGA_PARTICLES loadspritegfx ANIM_TAG_OMEGA_SYMBOL monbg ANIM_ATTACKER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, RGB(31, 31, 11) - call PrimalReversionParticles - call PrimalReversionParticles - call PrimalReversionParticles + call MegaEvolutionParticles + call MegaEvolutionParticles + call MegaEvolutionParticles waitforvisualfinish playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gOmegaStoneSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 @@ -24889,22 +24889,6 @@ General_PrimalReversion_Omega: clearmonbg ANIM_ATK_PARTNER blendoff end -PrimalReversionParticles: - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, 15, -40, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, -10, -32, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, 25, -20, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, -40, -20, 13 - delay 3 - createsprite gPrimalParticlesSpriteTemplate, ANIM_ATTACKER, 2, 5, -40, 13 - delay 3 - return General_AffectionHangedOn:: loadspritegfx ANIM_TAG_RED_HEART diff --git a/graphics/battle_anims/backgrounds/windstorm_brew.pal b/graphics/battle_anims/backgrounds/windstorm_brew.pal new file mode 100644 index 0000000000..2feb0f59e0 --- /dev/null +++ b/graphics/battle_anims/backgrounds/windstorm_brew.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +230 148 98 +255 255 222 +230 230 197 +213 205 172 +189 180 148 +172 156 123 +156 131 106 +0 0 0 +0 0 0 +0 0 0 +142 204 143 +123 180 122 +112 165 99 +89 130 87 +67 114 65 +55 91 56 diff --git a/graphics/battle_anims/backgrounds/windstorm_brew.png b/graphics/battle_anims/backgrounds/windstorm_brew.png deleted file mode 100644 index 2a28952662266dc252e5a0b850e41ed187241047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1067 zcmV+`1l0S9P)%RwK{s1Cyb`=-00007bV*G`2jvO|3n4i=NfqV*000+sMObuGZ)S9NVRB^vM@&Re zPDdbiWpW@hE;Mn4q~QPn18_-1K~zY`O;wAbn=lO2{-ZRV0GkDBITKiH0B?i7-p6Tc zk_X`-`E)uRk#p9Z_?uaY6E8XsocW)~c|AAQS}Svm#PTJMx~rn&(b{PeKd!n;DRbh- zb46pAqZ`)InSeQ#6Cnc@@*?WOdM+d=!Dzgiv9Q&{b>D?gtx9~koHh)Z+1t-Kzx3?G zP-G>V0O+i`7b9@RFfITBG+YD=s0&e-b}yGORTi&-nF%)OTargNK ziYXW^Odmn}tu=+WbenTjrOY%`822G=0>`@Ls*IKdg?I_ zHWi&vqBHpX8d^+tG!nog7w>>cJjgCG4ZBfl>Y0Lo^wB^9JBP;)ap7Ky8+9`k(OAY* zMeStOZ*r?{x^i+hNXQt|p%Zdqq7ZkIQKoa@`x@qSQj-J1dZdKqeTN9eeQ6>jg%bg( z7?VPwzMVEkI+$E6DS(WSouh%gJJfb7XuiLQ99QRbQ@})s!5m$?lT6P>a#&V2baPsj z?EQ2hdf=3_dJnUZJJG&yV{ijiknlAXHS1GD`-~beh(o2Z8U=rrse#5qik$pWk`}_- z3pl7rf{2@(lgs)y6G(Cl3JS@it6Fp;JzuZai(pcc=3EH;pn&&0=YQflpr~>iMMSo4 z984uV?4~48YUIcd0pH(MMul$n(KUsv`uhIL!_mJD@e)ipqP#=iIXTze-Kdro&mv3E*Xy@V&5jnPo|Mo{zCT6WzS((@Avk zk=fg(aGdhVWn0hmU#YrVSL{;kQIfH^qkUV0bw;=USZwOmp(4~+LBedl`S2<7<+dWQ z{MO+6V*P!|QIcdtsr=3v!Z5c#h)2%Jlw)-^O{!K23arZr=$X_8&LLxKL~om%c{!mx zV?MB;%^gI2^leeb!{Hji`RaR(PJ_>FG~GPt&9s#$IWf~u^6@Mdz00_?jNa!T1l l#um@;gl~iLgz`0>e*mjVc!7vL=8gaW002ovPDHLkV1mAc^+W&w diff --git a/graphics/battle_anims/sprites/primal_particles.png b/graphics/battle_anims/sprites/primal_particles.png deleted file mode 100644 index 6fdf09d96e0d606f5253e5ed18da3c272120e6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIi1;V5)EKCOG0EHAg;|it=M#{_S>O>_%)r2R1cVu< zYV%101=&kHeO=k_v+;>Y%TBb>0$R^-!qdeuMB;MkSzAA6Ljjftm4S70^!7P!X%c?J zx+ueSZqwV#8y5LIH!JaLcR5@*^ZAE0>`j^9Cfg`8ALfgA)2R6Tu2V|CBd6-7XF6I< zXE=;s`@AUD;Xm-|NOoDo&iNZcoH&Dx!^FC;kotR)G0UiF^6U!J>Hw}q4M{;9{;^}p4Yc+{(W|*rs(G7+07lj71mug zd;WDF7kn9csjh*UuAxbYp@o%^xs{P6 VL_^=Zwnsn>44$rjF6*2UngE>NybAyT diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index db2efd8d05..05d9f575a3 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -392,9 +392,8 @@ #define ANIM_TAG_STONE_PILLAR_MULTI (ANIM_SPRITES_START + 380) #define ANIM_TAG_ALPHA_SYMBOL (ANIM_SPRITES_START + 381) #define ANIM_TAG_OMEGA_SYMBOL (ANIM_SPRITES_START + 382) -#define ANIM_TAG_PRIMAL_PARTICLES (ANIM_SPRITES_START + 383) -#define ANIM_TAG_STEEL_BEAM (ANIM_SPRITES_START + 384) -#define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 385) +#define ANIM_TAG_STEEL_BEAM (ANIM_SPRITES_START + 383) +#define ANIM_TAG_POLTERGEIST (ANIM_SPRITES_START + 384) // battlers #define ANIM_ATTACKER 0 diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 3b9a9a8f8e..552fcf5170 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1239,17 +1239,6 @@ const struct SpriteTemplate gOmegaStoneSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const struct SpriteTemplate gPrimalParticlesSpriteTemplate = -{ - .tileTag = ANIM_TAG_PRIMAL_PARTICLES, - .paletteTag = ANIM_TAG_PRIMAL_PARTICLES, - .oam = &gOamData_AffineNormal_ObjBlend_16x16, - .anims = gPowerAbsorptionOrbAnimTable, - .images = NULL, - .affineAnims = gPowerAbsorptionOrbAffineAnimTable, - .callback = AnimPowerAbsorptionOrb, -}; - const struct SpriteTemplate gAlphaSymbolSpriteTemplate = { .tileTag = ANIM_TAG_ALPHA_SYMBOL, diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c index 59d012f9ae..2735ea4478 100644 --- a/src/battle_anim_flying.c +++ b/src/battle_anim_flying.c @@ -1252,8 +1252,8 @@ void AnimTask_LoadWindstormBackground(u8 taskId) SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); GetBattleAnimBg1Data(&animBg); - AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Windstorm, animBg.tilesOffset); - AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Windstorm, 0); + AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset); + AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, 0); LoadCompressedPalette(gBattleAnimSpritePal_Windstorm, animBg.paletteId * 16, 32); if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index 6a67e0cd60..e6e03f06c1 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1448,7 +1448,6 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_StonePillar, 0x1800, ANIM_TAG_STONE_PILLAR_MULTI}, {gBattleAnimSpriteGfx_AlphaSymbol, 0x0200, ANIM_TAG_ALPHA_SYMBOL}, {gBattleAnimSpriteGfx_OmegaSymbol, 0x0200, ANIM_TAG_OMEGA_SYMBOL}, - {gBattleAnimSpriteGfx_PrimalParticles, 0x0180, ANIM_TAG_PRIMAL_PARTICLES}, {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_STEEL_BEAM}, {gBattleAnimSpriteGfx_AuraSphere, 0x200, ANIM_TAG_POLTERGEIST}, }; @@ -1899,7 +1898,6 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_StonePillar, ANIM_TAG_STONE_PILLAR_MULTI}, {gBattleAnimSpritePal_AlphaSymbol, ANIM_TAG_ALPHA_SYMBOL}, {gBattleAnimSpritePal_OmegaSymbol, ANIM_TAG_OMEGA_SYMBOL}, - {gBattleAnimSpritePal_PrimalParticles, ANIM_TAG_PRIMAL_PARTICLES}, {gBattleAnimSpritePal_SteelBeam, ANIM_TAG_STEEL_BEAM}, {gBattleAnimSpritePal_Poltergeist, ANIM_TAG_POLTERGEIST}, }; diff --git a/src/graphics.c b/src/graphics.c index 6a12dda1cc..306f35928f 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -42,9 +42,6 @@ const u32 gBattleAnimSpritePal_AlphaSymbol[] = INCBIN_U32("graphics/battle_anims const u32 gBattleAnimSpriteGfx_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.4bpp.lz"); const u32 gBattleAnimSpritePal_OmegaSymbol[] = INCBIN_U32("graphics/battle_anims/sprites/omega_symbol.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.4bpp.lz"); -const u32 gBattleAnimSpritePal_PrimalParticles[] = INCBIN_U32("graphics/battle_anims/sprites/primal_particles.gbapal.lz"); - const u32 gBattleAnimSpriteGfx_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.4bpp.lz"); const u32 gBattleAnimSpritePal_FlashCannonBall[] = INCBIN_U32("graphics/battle_anims/sprites/flash_cannon_ball.gbapal.lz"); @@ -1309,8 +1306,6 @@ const u32 gBattleAnimSpritePal_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimBgTilemap_Sandstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz"); const u32 gBattleAnimBgImage_Sandstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.4bpp.lz"); -const u32 gBattleAnimBgTilemap_Windstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/sandstorm_brew.bin.lz"); -const u32 gBattleAnimBgImage_Windstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/windstorm_brew.4bpp.lz"); const u32 gBattleAnimSpritePal_Windstorm[] = INCBIN_U32("graphics/battle_anims/backgrounds/windstorm_brew.gbapal.lz"); const u32 gBattleAnimSpriteGfx_MetalSoundWaves[] = INCBIN_U32("graphics/battle_anims/sprites/metal_sound_waves.4bpp.lz"); From d870d71dbe9437a1ec420be62b0b0aa35129a6bd Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 9 Sep 2022 22:26:29 +0700 Subject: [PATCH 233/271] Remove windstorm_brew leftovers --- include/graphics.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/graphics.h b/include/graphics.h index 197cb4bb41..808b320d4c 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -10085,9 +10085,6 @@ extern const u16 gSlotMachineReelTimePikachu_Pal[]; extern const u32 gBattleAnimBgTilemap_Sandstorm[]; extern const u32 gBattleAnimBgImage_Sandstorm[]; -extern const u32 gBattleAnimBgTilemap_Windstorm[]; -extern const u32 gBattleAnimBgImage_Windstorm[]; - // Pokedex Area Screen extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[]; extern const u16 gPokedexAreaScreenAreaUnknown_Pal[]; From 29529a0c47731a1901febe9ae7d8e6efc19fbf22 Mon Sep 17 00:00:00 2001 From: Blackforest92 Date: Fri, 9 Sep 2022 22:28:11 +0700 Subject: [PATCH 234/271] Remove primal_particle leftovers --- include/graphics.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/graphics.h b/include/graphics.h index 808b320d4c..4f8534f9a1 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -9631,8 +9631,6 @@ extern const u32 gBattleAnimSpriteGfx_MegaStone[]; extern const u32 gBattleAnimSpritePal_MegaStone[]; extern const u32 gBattleAnimSpriteGfx_MegaParticles[]; extern const u32 gBattleAnimSpritePal_MegaParticles[]; -extern const u32 gBattleAnimSpriteGfx_PrimalParticles[]; -extern const u32 gBattleAnimSpritePal_PrimalParticles[]; extern const u32 gBattleAnimSpriteGfx_MegaSymbol[]; extern const u32 gBattleAnimSpritePal_MegaSymbol[]; extern const u32 gBattleAnimSpriteGfx_FlashCannonBall[]; From e8832a265523d52149849f74298202aa89aed856 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 9 Sep 2022 14:56:12 -0300 Subject: [PATCH 235/271] Updated FORM_ITEM_HOLD check in GetFormChangeTargetSpeciesBoxMon --- src/pokemon.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index 63b3dae9dc..4dcec70b06 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8283,9 +8283,7 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 { case FORM_ITEM_HOLD: if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) - || ability == formChanges[i].param2) - targetSpecies = formChanges[i].targetSpecies; - if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) && ability == formChanges[i].param2) + && (ability == formChanges[i].param2 || formChanges[i].param2 == ABILITY_NONE)) targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_USE: From 12fee71008028e30bfc3bc446034a1390403bf01 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 9 Sep 2022 15:39:48 -0300 Subject: [PATCH 236/271] Merged FORM_ITEM_USE_TIME into FORM_ITEM_USE --- include/constants/pokemon.h | 5 ++-- src/data/items.h | 2 +- src/data/pokemon/form_change_tables.h | 17 +++++------- src/pokemon.c | 39 ++++++++++++++------------- 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 6912cfe6bb..98b32ffd51 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -322,9 +322,8 @@ #define FORM_ITEM_USE 2 #define FORM_MOVE 3 #define FORM_WITHDRAW 4 -#define FORM_ITEM_USE_TIME 5 -#define FORM_BATTLE_BEGIN 6 -#define FORM_BATTLE_END 7 +#define FORM_BATTLE_BEGIN 5 +#define FORM_BATTLE_END 6 #define NUM_MALE_LINK_FACILITY_CLASSES 8 #define NUM_FEMALE_LINK_FACILITY_CLASSES 8 diff --git a/src/data/items.h b/src/data/items.h index 08060db773..6649fb24b6 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -9071,7 +9071,7 @@ const struct Item gItems[] = .pocket = POCKET_KEY_ITEMS, .type = ITEM_USE_PARTY_MENU, .fieldUseFunc = ItemUseOutOfBattle_FormChange, - .secondaryId = FORM_ITEM_USE_TIME, + .secondaryId = FORM_ITEM_USE, }, [ITEM_REVEAL_GLASS] = diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index ddcb4d9cbd..2531a10c9b 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -9,6 +9,8 @@ FORM_ITEM_HOLD: FORM_ITEM_USE: Form change activates when the item is used on the selected Pokémon. param1 = item to use + param2 = DAY if form change activates in the daytime, optional + NIGHT if form change activates at nighttime, optional FORM_MOVE: Form change activates when the Pokémon learns or forgets the move. @@ -20,13 +22,6 @@ FORM_WITHDRAW: Form change activates when the Pokémon is withdrawn from the PC or Daycare. no parameters -FORM_ITEM_USE_TIME: - Form change activates when the item is used on the selected Pokémon at the - appropriate time of day. - param1 = item to use - param2 = DAY if form change activates in the daytime - NIGHT if form change activates at nighttime - FORM_BATTLE_BEGIN: Form change activates when the Pokémon is sent out at the beginning of a battle param1 = item to hold, optional @@ -44,9 +39,9 @@ FORM_BATTLE_END: #define WHEN_LEARNED 0 #define WHEN_FORGOTTEN 1 -// FORM_ITEM_USE_TIME param2 Arguments -#define DAY 0 -#define NIGHT 1 +// FORM_ITEM_USE param2 Arguments +#define DAY 1 +#define NIGHT 2 #if P_NEW_POKEMON == TRUE static const struct FormChange sGiratinaFormChangeTable[] = { @@ -56,7 +51,7 @@ static const struct FormChange sGiratinaFormChangeTable[] = { }; static const struct FormChange sShayminFormChangeTable[] = { - {FORM_ITEM_USE_TIME, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, + {FORM_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY}, // {FORM_WITHDRAW, SPECIES_SHAYMIN}, {FORM_CHANGE_END}, }; diff --git a/src/pokemon.c b/src/pokemon.c index 722eaafe87..f735918083 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8273,30 +8273,33 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_USE: + RtcCalcLocalTime(); if (arg == formChanges[i].param1) - targetSpecies = formChanges[i].targetSpecies; + { + if (!formChanges[i].param2) + { + targetSpecies = formChanges[i].targetSpecies; + } + else + { + switch (formChanges[i].param2) + { + case DAY: + if (gLocalTime.hours >= 12 && gLocalTime.hours < 24) + targetSpecies = formChanges[i].targetSpecies; + break; + case NIGHT: + if (gLocalTime.hours >= 0 && gLocalTime.hours < 12) + targetSpecies = formChanges[i].targetSpecies; + break; + } + } + } break; case FORM_MOVE: if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2) targetSpecies = formChanges[i].targetSpecies; break; - case FORM_ITEM_USE_TIME: - RtcCalcLocalTime(); - if (arg == formChanges[i].param1) - { - switch (formChanges[i].param2) - { - case DAY: - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24) - targetSpecies = formChanges[i].targetSpecies; - break; - case NIGHT: - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12) - targetSpecies = formChanges[i].targetSpecies; - break; - } - } - break; case FORM_BATTLE_BEGIN: case FORM_BATTLE_END: if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE) From ceb0c67bcfc44ca202e22e9afa5638746a625bd8 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Fri, 9 Sep 2022 16:05:32 -0300 Subject: [PATCH 237/271] Modified check in case FORM_ITEM_USE of GetFormChangeTargetSpeciesBoxMon --- src/pokemon.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/pokemon.c b/src/pokemon.c index f735918083..b421e5aced 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -8273,26 +8273,23 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 targetSpecies = formChanges[i].targetSpecies; break; case FORM_ITEM_USE: - RtcCalcLocalTime(); if (arg == formChanges[i].param1) { - if (!formChanges[i].param2) + switch (formChanges[i].param2) { + case DAY: + RtcCalcLocalTime(); + if (gLocalTime.hours >= 12 && gLocalTime.hours < 24) + targetSpecies = formChanges[i].targetSpecies; + break; + case NIGHT: + RtcCalcLocalTime(); + if (gLocalTime.hours >= 0 && gLocalTime.hours < 12) + targetSpecies = formChanges[i].targetSpecies; + break; + default: targetSpecies = formChanges[i].targetSpecies; - } - else - { - switch (formChanges[i].param2) - { - case DAY: - if (gLocalTime.hours >= 12 && gLocalTime.hours < 24) - targetSpecies = formChanges[i].targetSpecies; - break; - case NIGHT: - if (gLocalTime.hours >= 0 && gLocalTime.hours < 12) - targetSpecies = formChanges[i].targetSpecies; - break; - } + break; } } break; From 503b85aa2daa9484647b961af062072c44c6cb76 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 9 Sep 2022 16:44:34 -0400 Subject: [PATCH 238/271] Generating music names for the debug menu based on their labels --- charmap.txt | 1 + src/debug.c | 1068 +++++++++++++++++++++++++-------------------------- 2 files changed, 535 insertions(+), 534 deletions(-) diff --git a/charmap.txt b/charmap.txt index 980a3e5dd8..2cb67a8613 100644 --- a/charmap.txt +++ b/charmap.txt @@ -79,6 +79,7 @@ SUPER_RE = A0 '?' = AC '.' = AD '-' = AE +'_' = AE @ For autogenerating strings based on label names. Not using {UNDERSCORE} on purpose due to how bad it looks. '·' = AF '…' = B0 '“' = B1 diff --git a/src/debug.c b/src/debug.c index 4cc1ac6168..19038723de 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2839,544 +2839,544 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) } #define SOUND_LIST_BGM \ - X(MUS_LITTLEROOT_TEST, "MUS-LITTLEROOT-TEST") \ - X(MUS_GSC_ROUTE38, "MUS-GSC-ROUTE38") \ - X(MUS_CAUGHT, "MUS-CAUGHT") \ - X(MUS_VICTORY_WILD, "MUS-VICTORY-WILD") \ - X(MUS_VICTORY_GYM_LEADER, "MUS-VICTORY-GYM-LEADER") \ - X(MUS_VICTORY_LEAGUE, "MUS-VICTORY-LEAGUE") \ - X(MUS_C_COMM_CENTER, "MUS-C-COMM-CENTER") \ - X(MUS_GSC_PEWTER, "MUS-GSC-PEWTER") \ - X(MUS_C_VS_LEGEND_BEAST, "MUS-C-VS-LEGEND-BEAST") \ - X(MUS_ROUTE101, "MUS-ROUTE101") \ - X(MUS_ROUTE110, "MUS-ROUTE110") \ - X(MUS_ROUTE120, "MUS-ROUTE120") \ - X(MUS_PETALBURG, "MUS-PETALBURG") \ - X(MUS_OLDALE, "MUS-OLDALE") \ - X(MUS_GYM, "MUS-GYM") \ - X(MUS_SURF, "MUS-SURF") \ - X(MUS_PETALBURG_WOODS, "MUS-PETALBURG-WOODS") \ - X(MUS_LEVEL_UP, "MUS-LEVEL-UP") \ - X(MUS_HEAL, "MUS-HEAL") \ - X(MUS_OBTAIN_BADGE, "MUS-OBTAIN-BADGE") \ - X(MUS_OBTAIN_ITEM, "MUS-OBTAIN-ITEM") \ - X(MUS_EVOLVED, "MUS-EVOLVED") \ - X(MUS_OBTAIN_TMHM, "MUS-OBTAIN-TMHM") \ - X(MUS_LILYCOVE_MUSEUM, "MUS-LILYCOVE-MUSEUM") \ - X(MUS_ROUTE122, "MUS-ROUTE122") \ - X(MUS_OCEANIC_MUSEUM, "MUS-OCEANIC-MUSEUM") \ - X(MUS_EVOLUTION_INTRO, "MUS-EVOLUTION-INTRO") \ - X(MUS_EVOLUTION, "MUS-EVOLUTION") \ - X(MUS_MOVE_DELETED, "MUS-MOVE-DELETED") \ - X(MUS_ENCOUNTER_GIRL, "MUS-ENCOUNTER-GIRL") \ - X(MUS_ENCOUNTER_MALE, "MUS-ENCOUNTER-MALE") \ - X(MUS_ABANDONED_SHIP, "MUS-ABANDONED-SHIP") \ - X(MUS_FORTREE, "MUS-FORTREE") \ - X(MUS_BIRCH_LAB, "MUS-BIRCH-LAB") \ - X(MUS_B_TOWER_RS, "MUS-B-TOWER-RS") \ - X(MUS_ENCOUNTER_SWIMMER, "MUS-ENCOUNTER-SWIMMER") \ - X(MUS_CAVE_OF_ORIGIN, "MUS-CAVE-OF-ORIGIN") \ - X(MUS_OBTAIN_BERRY, "MUS-OBTAIN-BERRY") \ - X(MUS_AWAKEN_LEGEND, "MUS-AWAKEN-LEGEND") \ - X(MUS_SLOTS_JACKPOT, "MUS-SLOTS-JACKPOT") \ - X(MUS_SLOTS_WIN, "MUS-SLOTS-WIN") \ - X(MUS_TOO_BAD, "MUS-TOO-BAD") \ - X(MUS_ROULETTE, "MUS-ROULETTE") \ - X(MUS_LINK_CONTEST_P1, "MUS-LINK-CONTEST-P1") \ - X(MUS_LINK_CONTEST_P2, "MUS-LINK-CONTEST-P2") \ - X(MUS_LINK_CONTEST_P3, "MUS-LINK-CONTEST-P3") \ - X(MUS_LINK_CONTEST_P4, "MUS-LINK-CONTEST-P4") \ - X(MUS_ENCOUNTER_RICH, "MUS-ENCOUNTER-RICH") \ - X(MUS_VERDANTURF, "MUS-VERDANTURF") \ - X(MUS_RUSTBORO, "MUS-RUSTBORO") \ - X(MUS_POKE_CENTER, "MUS-POKE-CENTER") \ - X(MUS_ROUTE104, "MUS-ROUTE104") \ - X(MUS_ROUTE119, "MUS-ROUTE119") \ - X(MUS_CYCLING, "MUS-CYCLING") \ - X(MUS_POKE_MART, "MUS-POKE-MART") \ - X(MUS_LITTLEROOT, "MUS-LITTLEROOT") \ - X(MUS_MT_CHIMNEY, "MUS-MT-CHIMNEY") \ - X(MUS_ENCOUNTER_FEMALE, "MUS-ENCOUNTER-FEMALE") \ - X(MUS_LILYCOVE, "MUS-LILYCOVE") \ - X(MUS_ROUTE111, "MUS-ROUTE111") \ - X(MUS_HELP, "MUS-HELP") \ - X(MUS_UNDERWATER, "MUS-UNDERWATER") \ - X(MUS_VICTORY_TRAINER, "MUS-VICTORY-TRAINER") \ - X(MUS_TITLE, "MUS-TITLE") \ - X(MUS_INTRO, "MUS-INTRO") \ - X(MUS_ENCOUNTER_MAY, "MUS-ENCOUNTER-MAY") \ - X(MUS_ENCOUNTER_INTENSE, "MUS-ENCOUNTER-INTENSE") \ - X(MUS_ENCOUNTER_COOL, "MUS-ENCOUNTER-COOL") \ - X(MUS_ROUTE113, "MUS-ROUTE113") \ - X(MUS_ENCOUNTER_AQUA, "MUS-ENCOUNTER-AQUA") \ - X(MUS_FOLLOW_ME, "MUS-FOLLOW-ME") \ - X(MUS_ENCOUNTER_BRENDAN, "MUS-ENCOUNTER-BRENDAN") \ - X(MUS_EVER_GRANDE, "MUS-EVER-GRANDE") \ - X(MUS_ENCOUNTER_SUSPICIOUS, "MUS-ENCOUNTER-SUSPICIOUS") \ - X(MUS_VICTORY_AQUA_MAGMA, "MUS-VICTORY-AQUA-MAGMA") \ - X(MUS_CABLE_CAR, "MUS-CABLE-CAR") \ - X(MUS_GAME_CORNER, "MUS-GAME-CORNER") \ - X(MUS_DEWFORD, "MUS-DEWFORD") \ - X(MUS_SAFARI_ZONE, "MUS-SAFARI-ZONE") \ - X(MUS_VICTORY_ROAD, "MUS-VICTORY-ROAD") \ - X(MUS_AQUA_MAGMA_HIDEOUT, "MUS-AQUA-MAGMA-HIDEOUT") \ - X(MUS_SAILING, "MUS-SAILING") \ - X(MUS_MT_PYRE, "MUS-MT-PYRE") \ - X(MUS_SLATEPORT, "MUS-SLATEPORT") \ - X(MUS_MT_PYRE_EXTERIOR, "MUS-MT-PYRE-EXTERIOR") \ - X(MUS_SCHOOL, "MUS-SCHOOL") \ - X(MUS_HALL_OF_FAME, "MUS-HALL-OF-FAME") \ - X(MUS_FALLARBOR, "MUS-FALLARBOR") \ - X(MUS_SEALED_CHAMBER, "MUS-SEALED-CHAMBER") \ - X(MUS_CONTEST_WINNER, "MUS-CONTEST-WINNER") \ - X(MUS_CONTEST, "MUS-CONTEST") \ - X(MUS_ENCOUNTER_MAGMA, "MUS-ENCOUNTER-MAGMA") \ - X(MUS_INTRO_BATTLE, "MUS-INTRO-BATTLE") \ - X(MUS_WEATHER_KYOGRE, "MUS-WEATHER-KYOGRE") \ - X(MUS_WEATHER_GROUDON, "MUS-WEATHER-GROUDON") \ - X(MUS_SOOTOPOLIS, "MUS-SOOTOPOLIS") \ - X(MUS_CONTEST_RESULTS, "MUS-CONTEST-RESULTS") \ - X(MUS_HALL_OF_FAME_ROOM, "MUS-HALL-OF-FAME-ROOM") \ - X(MUS_TRICK_HOUSE, "MUS-TRICK-HOUSE") \ - X(MUS_ENCOUNTER_TWINS, "MUS-ENCOUNTER-TWINS") \ - X(MUS_ENCOUNTER_ELITE_FOUR, "MUS-ENCOUNTER-ELITE-FOUR") \ - X(MUS_ENCOUNTER_HIKER, "MUS-ENCOUNTER-HIKER") \ - X(MUS_CONTEST_LOBBY, "MUS-CONTEST-LOBBY") \ - X(MUS_ENCOUNTER_INTERVIEWER, "MUS-ENCOUNTER-INTERVIEWER") \ - X(MUS_ENCOUNTER_CHAMPION, "MUS-ENCOUNTER-CHAMPION") \ - X(MUS_CREDITS, "MUS-CREDITS") \ - X(MUS_END, "MUS-END") \ - X(MUS_B_FRONTIER, "MUS-B-FRONTIER") \ - X(MUS_B_ARENA, "MUS-B-ARENA") \ - X(MUS_OBTAIN_B_POINTS, "MUS-OBTAIN-B-POINTS") \ - X(MUS_REGISTER_MATCH_CALL, "MUS-REGISTER-MATCH-CALL") \ - X(MUS_B_PYRAMID, "MUS-B-PYRAMID") \ - X(MUS_B_PYRAMID_TOP, "MUS-B-PYRAMID-TOP") \ - X(MUS_B_PALACE, "MUS-B-PALACE") \ - X(MUS_RAYQUAZA_APPEARS, "MUS-RAYQUAZA-APPEARS") \ - X(MUS_B_TOWER, "MUS-B-TOWER") \ - X(MUS_OBTAIN_SYMBOL, "MUS-OBTAIN-SYMBOL") \ - X(MUS_B_DOME, "MUS-B-DOME") \ - X(MUS_B_PIKE, "MUS-B-PIKE") \ - X(MUS_B_FACTORY, "MUS-B-FACTORY") \ - X(MUS_VS_RAYQUAZA, "MUS-VS-RAYQUAZA") \ - X(MUS_VS_FRONTIER_BRAIN, "MUS-VS-FRONTIER-BRAIN") \ - X(MUS_VS_MEW, "MUS-VS-MEW") \ - X(MUS_B_DOME_LOBBY, "MUS-B-DOME-LOBBY") \ - X(MUS_VS_WILD, "MUS-VS-WILD") \ - X(MUS_VS_AQUA_MAGMA, "MUS-VS-AQUA-MAGMA") \ - X(MUS_VS_TRAINER, "MUS-VS-TRAINER") \ - X(MUS_VS_GYM_LEADER, "MUS-VS-GYM-LEADER") \ - X(MUS_VS_CHAMPION, "MUS-VS-CHAMPION") \ - X(MUS_VS_REGI, "MUS-VS-REGI") \ - X(MUS_VS_KYOGRE_GROUDON, "MUS-VS-KYOGRE-GROUDON") \ - X(MUS_VS_RIVAL, "MUS-VS-RIVAL") \ - X(MUS_VS_ELITE_FOUR, "MUS-VS-ELITE-FOUR") \ - X(MUS_VS_AQUA_MAGMA_LEADER, "MUS-VS-AQUA-MAGMA-LEADER") \ - X(MUS_RG_FOLLOW_ME, "MUS-RG-FOLLOW-ME") \ - X(MUS_RG_GAME_CORNER, "MUS-RG-GAME-CORNER") \ - X(MUS_RG_ROCKET_HIDEOUT, "MUS-RG-ROCKET-HIDEOUT") \ - X(MUS_RG_GYM, "MUS-RG-GYM") \ - X(MUS_RG_JIGGLYPUFF, "MUS-RG-JIGGLYPUFF") \ - X(MUS_RG_INTRO_FIGHT, "MUS-RG-INTRO-FIGHT") \ - X(MUS_RG_TITLE, "MUS-RG-TITLE") \ - X(MUS_RG_CINNABAR, "MUS-RG-CINNABAR") \ - X(MUS_RG_LAVENDER, "MUS-RG-LAVENDER") \ - X(MUS_RG_HEAL, "MUS-RG-HEAL") \ - X(MUS_RG_CYCLING, "MUS-RG-CYCLING") \ - X(MUS_RG_ENCOUNTER_ROCKET, "MUS-RG-ENCOUNTER-ROCKET") \ - X(MUS_RG_ENCOUNTER_GIRL, "MUS-RG-ENCOUNTER-GIRL") \ - X(MUS_RG_ENCOUNTER_BOY, "MUS-RG-ENCOUNTER-BOY") \ - X(MUS_RG_HALL_OF_FAME, "MUS-RG-HALL-OF-FAME") \ - X(MUS_RG_VIRIDIAN_FOREST, "MUS-RG-VIRIDIAN-FOREST") \ - X(MUS_RG_MT_MOON, "MUS-RG-MT-MOON") \ - X(MUS_RG_POKE_MANSION, "MUS-RG-POKE-MANSION") \ - X(MUS_RG_CREDITS, "MUS-RG-CREDITS") \ - X(MUS_RG_ROUTE1, "MUS-RG-ROUTE1") \ - X(MUS_RG_ROUTE24, "MUS-RG-ROUTE24") \ - X(MUS_RG_ROUTE3, "MUS-RG-ROUTE3") \ - X(MUS_RG_ROUTE11, "MUS-RG-ROUTE11") \ - X(MUS_RG_VICTORY_ROAD, "MUS-RG-VICTORY-ROAD") \ - X(MUS_RG_VS_GYM_LEADER, "MUS-RG-VS-GYM-LEADER") \ - X(MUS_RG_VS_TRAINER, "MUS-RG-VS-TRAINER") \ - X(MUS_RG_VS_WILD, "MUS-RG-VS-WILD") \ - X(MUS_RG_VS_CHAMPION, "MUS-RG-VS-CHAMPION") \ - X(MUS_RG_PALLET, "MUS-RG-PALLET") \ - X(MUS_RG_OAK_LAB, "MUS-RG-OAK-LAB") \ - X(MUS_RG_OAK, "MUS-RG-OAK") \ - X(MUS_RG_POKE_CENTER, "MUS-RG-POKE-CENTER") \ - X(MUS_RG_SS_ANNE, "MUS-RG-SS-ANNE") \ - X(MUS_RG_SURF, "MUS-RG-SURF") \ - X(MUS_RG_POKE_TOWER, "MUS-RG-POKE-TOWER") \ - X(MUS_RG_SILPH, "MUS-RG-SILPH") \ - X(MUS_RG_FUCHSIA, "MUS-RG-FUCHSIA") \ - X(MUS_RG_CELADON, "MUS-RG-CELADON") \ - X(MUS_RG_VICTORY_TRAINER, "MUS-RG-VICTORY-TRAINER") \ - X(MUS_RG_VICTORY_WILD, "MUS-RG-VICTORY-WILD") \ - X(MUS_RG_VICTORY_GYM_LEADER, "MUS-RG-VICTORY-GYM-LEADER") \ - X(MUS_RG_VERMILLION, "MUS-RG-VERMILLION") \ - X(MUS_RG_PEWTER, "MUS-RG-PEWTER") \ - X(MUS_RG_ENCOUNTER_RIVAL, "MUS-RG-ENCOUNTER-RIVAL") \ - X(MUS_RG_RIVAL_EXIT, "MUS-RG-RIVAL-EXIT") \ - X(MUS_RG_DEX_RATING, "MUS-RG-DEX-RATING") \ - X(MUS_RG_OBTAIN_KEY_ITEM, "MUS-RG-OBTAIN-KEY-ITEM") \ - X(MUS_RG_CAUGHT_INTRO, "MUS-RG-CAUGHT-INTRO") \ - X(MUS_RG_PHOTO, "MUS-RG-PHOTO") \ - X(MUS_RG_GAME_FREAK, "MUS-RG-GAME-FREAK") \ - X(MUS_RG_CAUGHT, "MUS-RG-CAUGHT") \ - X(MUS_RG_NEW_GAME_INSTRUCT, "MUS-RG-NEW-GAME-INSTRUCT") \ - X(MUS_RG_NEW_GAME_INTRO, "MUS-RG-NEW-GAME-INTRO") \ - X(MUS_RG_NEW_GAME_EXIT, "MUS-RG-NEW-GAME-EXIT") \ - X(MUS_RG_POKE_JUMP, "MUS-RG-POKE-JUMP") \ - X(MUS_RG_UNION_ROOM, "MUS-RG-UNION-ROOM") \ - X(MUS_RG_NET_CENTER, "MUS-RG-NET-CENTER") \ - X(MUS_RG_MYSTERY_GIFT, "MUS-RG-MYSTERY-GIFT") \ - X(MUS_RG_BERRY_PICK, "MUS-RG-BERRY-PICK") \ - X(MUS_RG_SEVII_CAVE, "MUS-RG-SEVII-CAVE") \ - X(MUS_RG_TEACHY_TV_SHOW, "MUS-RG-TEACHY-TV-SHOW") \ - X(MUS_RG_SEVII_ROUTE, "MUS-RG-SEVII-ROUTE") \ - X(MUS_RG_SEVII_DUNGEON, "MUS-RG-SEVII-DUNGEON") \ - X(MUS_RG_SEVII_123, "MUS-RG-SEVII-123") \ - X(MUS_RG_SEVII_45, "MUS-RG-SEVII-45") \ - X(MUS_RG_SEVII_67, "MUS-RG-SEVII-67") \ - X(MUS_RG_POKE_FLUTE, "MUS-RG-POKE-FLUTE") \ - X(MUS_RG_VS_DEOXYS, "MUS-RG-VS-DEOXYS") \ - X(MUS_RG_VS_MEWTWO, "MUS-RG-VS-MEWTWO") \ - X(MUS_RG_VS_LEGEND, "MUS-RG-VS-LEGEND") \ - X(MUS_RG_ENCOUNTER_GYM_LEADER, "MUS-RG-ENCOUNTER-GYM-LEADER") \ - X(MUS_RG_ENCOUNTER_DEOXYS, "MUS-RG-ENCOUNTER-DEOXYS") \ - X(MUS_RG_TRAINER_TOWER, "MUS-RG-TRAINER-TOWER") \ - X(MUS_RG_SLOW_PALLET, "MUS-RG-SLOW-PALLET") \ - X(MUS_RG_TEACHY_TV_MENU, "MUS-RG-TEACHY-TV-MENU") \ - X(PH_TRAP_BLEND, "PH-TRAP-BLEND") \ - X(PH_TRAP_HELD, "PH-TRAP-HELD") \ - X(PH_TRAP_SOLO, "PH-TRAP-SOLO") \ - X(PH_FACE_BLEND, "PH-FACE-BLEND") \ - X(PH_FACE_HELD, "PH-FACE-HELD") \ - X(PH_FACE_SOLO, "PH-FACE-SOLO") \ - X(PH_CLOTH_BLEND, "PH-CLOTH-BLEND") \ - X(PH_CLOTH_HELD, "PH-CLOTH-HELD") \ - X(PH_CLOTH_SOLO, "PH-CLOTH-SOLO") \ - X(PH_DRESS_BLEND, "PH-DRESS-BLEND") \ - X(PH_DRESS_HELD, "PH-DRESS-HELD") \ - X(PH_DRESS_SOLO, "PH-DRESS-SOLO") \ - X(PH_FLEECE_BLEND, "PH-FLEECE-BLEND") \ - X(PH_FLEECE_HELD, "PH-FLEECE-HELD") \ - X(PH_FLEECE_SOLO, "PH-FLEECE-SOLO") \ - X(PH_KIT_BLEND, "PH-KIT-BLEND") \ - X(PH_KIT_HELD, "PH-KIT-HELD") \ - X(PH_KIT_SOLO, "PH-KIT-SOLO") \ - X(PH_PRICE_BLEND, "PH-PRICE-BLEND") \ - X(PH_PRICE_HELD, "PH-PRICE-HELD") \ - X(PH_PRICE_SOLO, "PH-PRICE-SOLO") \ - X(PH_LOT_BLEND, "PH-LOT-BLEND") \ - X(PH_LOT_HELD, "PH-LOT-HELD") \ - X(PH_LOT_SOLO, "PH-LOT-SOLO") \ - X(PH_GOAT_BLEND, "PH-GOAT-BLEND") \ - X(PH_GOAT_HELD, "PH-GOAT-HELD") \ - X(PH_GOAT_SOLO, "PH-GOAT-SOLO") \ - X(PH_THOUGHT_BLEND, "PH-THOUGHT-BLEND") \ - X(PH_THOUGHT_HELD, "PH-THOUGHT-HELD") \ - X(PH_THOUGHT_SOLO, "PH-THOUGHT-SOLO") \ - X(PH_CHOICE_BLEND, "PH-CHOICE-BLEND") \ - X(PH_CHOICE_HELD, "PH-CHOICE-HELD") \ - X(PH_CHOICE_SOLO, "PH-CHOICE-SOLO") \ - X(PH_MOUTH_BLEND, "PH-MOUTH-BLEND") \ - X(PH_MOUTH_HELD, "PH-MOUTH-HELD") \ - X(PH_MOUTH_SOLO, "PH-MOUTH-SOLO") \ - X(PH_FOOT_BLEND, "PH-FOOT-BLEND") \ - X(PH_FOOT_HELD, "PH-FOOT-HELD") \ - X(PH_FOOT_SOLO, "PH-FOOT-SOLO") \ - X(PH_GOOSE_BLEND, "PH-GOOSE-BLEND") \ - X(PH_GOOSE_HELD, "PH-GOOSE-HELD") \ - X(PH_GOOSE_SOLO, "PH-GOOSE-SOLO") \ - X(PH_STRUT_BLEND, "PH-STRUT-BLEND") \ - X(PH_STRUT_HELD, "PH-STRUT-HELD") \ - X(PH_STRUT_SOLO, "PH-STRUT-SOLO") \ - X(PH_CURE_BLEND, "PH-CURE-BLEND") \ - X(PH_CURE_HELD, "PH-CURE-HELD") \ - X(PH_CURE_SOLO, "PH-CURE-SOLO") \ - X(PH_NURSE_BLEND, "PH-NURSE-BLEND") \ - X(PH_NURSE_HELD, "PH-NURSE-HELD") \ - X(PH_NURSE_SOLO, "PH-NURSE-SOLO") \ + X(MUS_LITTLEROOT_TEST) \ + X(MUS_GSC_ROUTE38) \ + X(MUS_CAUGHT) \ + X(MUS_VICTORY_WILD) \ + X(MUS_VICTORY_GYM_LEADER) \ + X(MUS_VICTORY_LEAGUE) \ + X(MUS_C_COMM_CENTER) \ + X(MUS_GSC_PEWTER) \ + X(MUS_C_VS_LEGEND_BEAST) \ + X(MUS_ROUTE101) \ + X(MUS_ROUTE110) \ + X(MUS_ROUTE120) \ + X(MUS_PETALBURG) \ + X(MUS_OLDALE) \ + X(MUS_GYM) \ + X(MUS_SURF) \ + X(MUS_PETALBURG_WOODS) \ + X(MUS_LEVEL_UP) \ + X(MUS_HEAL) \ + X(MUS_OBTAIN_BADGE) \ + X(MUS_OBTAIN_ITEM) \ + X(MUS_EVOLVED) \ + X(MUS_OBTAIN_TMHM) \ + X(MUS_LILYCOVE_MUSEUM) \ + X(MUS_ROUTE122) \ + X(MUS_OCEANIC_MUSEUM) \ + X(MUS_EVOLUTION_INTRO) \ + X(MUS_EVOLUTION) \ + X(MUS_MOVE_DELETED) \ + X(MUS_ENCOUNTER_GIRL) \ + X(MUS_ENCOUNTER_MALE) \ + X(MUS_ABANDONED_SHIP) \ + X(MUS_FORTREE) \ + X(MUS_BIRCH_LAB) \ + X(MUS_B_TOWER_RS) \ + X(MUS_ENCOUNTER_SWIMMER) \ + X(MUS_CAVE_OF_ORIGIN) \ + X(MUS_OBTAIN_BERRY) \ + X(MUS_AWAKEN_LEGEND) \ + X(MUS_SLOTS_JACKPOT) \ + X(MUS_SLOTS_WIN) \ + X(MUS_TOO_BAD) \ + X(MUS_ROULETTE) \ + X(MUS_LINK_CONTEST_P1) \ + X(MUS_LINK_CONTEST_P2) \ + X(MUS_LINK_CONTEST_P3) \ + X(MUS_LINK_CONTEST_P4) \ + X(MUS_ENCOUNTER_RICH) \ + X(MUS_VERDANTURF) \ + X(MUS_RUSTBORO) \ + X(MUS_POKE_CENTER) \ + X(MUS_ROUTE104) \ + X(MUS_ROUTE119) \ + X(MUS_CYCLING) \ + X(MUS_POKE_MART) \ + X(MUS_LITTLEROOT) \ + X(MUS_MT_CHIMNEY) \ + X(MUS_ENCOUNTER_FEMALE) \ + X(MUS_LILYCOVE) \ + X(MUS_ROUTE111) \ + X(MUS_HELP) \ + X(MUS_UNDERWATER) \ + X(MUS_VICTORY_TRAINER) \ + X(MUS_TITLE) \ + X(MUS_INTRO) \ + X(MUS_ENCOUNTER_MAY) \ + X(MUS_ENCOUNTER_INTENSE) \ + X(MUS_ENCOUNTER_COOL) \ + X(MUS_ROUTE113) \ + X(MUS_ENCOUNTER_AQUA) \ + X(MUS_FOLLOW_ME) \ + X(MUS_ENCOUNTER_BRENDAN) \ + X(MUS_EVER_GRANDE) \ + X(MUS_ENCOUNTER_SUSPICIOUS) \ + X(MUS_VICTORY_AQUA_MAGMA) \ + X(MUS_CABLE_CAR) \ + X(MUS_GAME_CORNER) \ + X(MUS_DEWFORD) \ + X(MUS_SAFARI_ZONE) \ + X(MUS_VICTORY_ROAD) \ + X(MUS_AQUA_MAGMA_HIDEOUT) \ + X(MUS_SAILING) \ + X(MUS_MT_PYRE) \ + X(MUS_SLATEPORT) \ + X(MUS_MT_PYRE_EXTERIOR) \ + X(MUS_SCHOOL) \ + X(MUS_HALL_OF_FAME) \ + X(MUS_FALLARBOR) \ + X(MUS_SEALED_CHAMBER) \ + X(MUS_CONTEST_WINNER) \ + X(MUS_CONTEST) \ + X(MUS_ENCOUNTER_MAGMA) \ + X(MUS_INTRO_BATTLE) \ + X(MUS_WEATHER_KYOGRE) \ + X(MUS_WEATHER_GROUDON) \ + X(MUS_SOOTOPOLIS) \ + X(MUS_CONTEST_RESULTS) \ + X(MUS_HALL_OF_FAME_ROOM) \ + X(MUS_TRICK_HOUSE) \ + X(MUS_ENCOUNTER_TWINS) \ + X(MUS_ENCOUNTER_ELITE_FOUR) \ + X(MUS_ENCOUNTER_HIKER) \ + X(MUS_CONTEST_LOBBY) \ + X(MUS_ENCOUNTER_INTERVIEWER) \ + X(MUS_ENCOUNTER_CHAMPION) \ + X(MUS_CREDITS) \ + X(MUS_END) \ + X(MUS_B_FRONTIER) \ + X(MUS_B_ARENA) \ + X(MUS_OBTAIN_B_POINTS) \ + X(MUS_REGISTER_MATCH_CALL) \ + X(MUS_B_PYRAMID) \ + X(MUS_B_PYRAMID_TOP) \ + X(MUS_B_PALACE) \ + X(MUS_RAYQUAZA_APPEARS) \ + X(MUS_B_TOWER) \ + X(MUS_OBTAIN_SYMBOL) \ + X(MUS_B_DOME) \ + X(MUS_B_PIKE) \ + X(MUS_B_FACTORY) \ + X(MUS_VS_RAYQUAZA) \ + X(MUS_VS_FRONTIER_BRAIN) \ + X(MUS_VS_MEW) \ + X(MUS_B_DOME_LOBBY) \ + X(MUS_VS_WILD) \ + X(MUS_VS_AQUA_MAGMA) \ + X(MUS_VS_TRAINER) \ + X(MUS_VS_GYM_LEADER) \ + X(MUS_VS_CHAMPION) \ + X(MUS_VS_REGI) \ + X(MUS_VS_KYOGRE_GROUDON) \ + X(MUS_VS_RIVAL) \ + X(MUS_VS_ELITE_FOUR) \ + X(MUS_VS_AQUA_MAGMA_LEADER) \ + X(MUS_RG_FOLLOW_ME) \ + X(MUS_RG_GAME_CORNER) \ + X(MUS_RG_ROCKET_HIDEOUT) \ + X(MUS_RG_GYM) \ + X(MUS_RG_JIGGLYPUFF) \ + X(MUS_RG_INTRO_FIGHT) \ + X(MUS_RG_TITLE) \ + X(MUS_RG_CINNABAR) \ + X(MUS_RG_LAVENDER) \ + X(MUS_RG_HEAL) \ + X(MUS_RG_CYCLING) \ + X(MUS_RG_ENCOUNTER_ROCKET) \ + X(MUS_RG_ENCOUNTER_GIRL) \ + X(MUS_RG_ENCOUNTER_BOY) \ + X(MUS_RG_HALL_OF_FAME) \ + X(MUS_RG_VIRIDIAN_FOREST) \ + X(MUS_RG_MT_MOON) \ + X(MUS_RG_POKE_MANSION) \ + X(MUS_RG_CREDITS) \ + X(MUS_RG_ROUTE1) \ + X(MUS_RG_ROUTE24) \ + X(MUS_RG_ROUTE3) \ + X(MUS_RG_ROUTE11) \ + X(MUS_RG_VICTORY_ROAD) \ + X(MUS_RG_VS_GYM_LEADER) \ + X(MUS_RG_VS_TRAINER) \ + X(MUS_RG_VS_WILD) \ + X(MUS_RG_VS_CHAMPION) \ + X(MUS_RG_PALLET) \ + X(MUS_RG_OAK_LAB) \ + X(MUS_RG_OAK) \ + X(MUS_RG_POKE_CENTER) \ + X(MUS_RG_SS_ANNE) \ + X(MUS_RG_SURF) \ + X(MUS_RG_POKE_TOWER) \ + X(MUS_RG_SILPH) \ + X(MUS_RG_FUCHSIA) \ + X(MUS_RG_CELADON) \ + X(MUS_RG_VICTORY_TRAINER) \ + X(MUS_RG_VICTORY_WILD) \ + X(MUS_RG_VICTORY_GYM_LEADER) \ + X(MUS_RG_VERMILLION) \ + X(MUS_RG_PEWTER) \ + X(MUS_RG_ENCOUNTER_RIVAL) \ + X(MUS_RG_RIVAL_EXIT) \ + X(MUS_RG_DEX_RATING) \ + X(MUS_RG_OBTAIN_KEY_ITEM) \ + X(MUS_RG_CAUGHT_INTRO) \ + X(MUS_RG_PHOTO) \ + X(MUS_RG_GAME_FREAK) \ + X(MUS_RG_CAUGHT) \ + X(MUS_RG_NEW_GAME_INSTRUCT) \ + X(MUS_RG_NEW_GAME_INTRO) \ + X(MUS_RG_NEW_GAME_EXIT) \ + X(MUS_RG_POKE_JUMP) \ + X(MUS_RG_UNION_ROOM) \ + X(MUS_RG_NET_CENTER) \ + X(MUS_RG_MYSTERY_GIFT) \ + X(MUS_RG_BERRY_PICK) \ + X(MUS_RG_SEVII_CAVE) \ + X(MUS_RG_TEACHY_TV_SHOW) \ + X(MUS_RG_SEVII_ROUTE) \ + X(MUS_RG_SEVII_DUNGEON) \ + X(MUS_RG_SEVII_123) \ + X(MUS_RG_SEVII_45) \ + X(MUS_RG_SEVII_67) \ + X(MUS_RG_POKE_FLUTE) \ + X(MUS_RG_VS_DEOXYS) \ + X(MUS_RG_VS_MEWTWO) \ + X(MUS_RG_VS_LEGEND) \ + X(MUS_RG_ENCOUNTER_GYM_LEADER) \ + X(MUS_RG_ENCOUNTER_DEOXYS) \ + X(MUS_RG_TRAINER_TOWER) \ + X(MUS_RG_SLOW_PALLET) \ + X(MUS_RG_TEACHY_TV_MENU) \ + X(PH_TRAP_BLEND) \ + X(PH_TRAP_HELD) \ + X(PH_TRAP_SOLO) \ + X(PH_FACE_BLEND) \ + X(PH_FACE_HELD) \ + X(PH_FACE_SOLO) \ + X(PH_CLOTH_BLEND) \ + X(PH_CLOTH_HELD) \ + X(PH_CLOTH_SOLO) \ + X(PH_DRESS_BLEND) \ + X(PH_DRESS_HELD) \ + X(PH_DRESS_SOLO) \ + X(PH_FLEECE_BLEND) \ + X(PH_FLEECE_HELD) \ + X(PH_FLEECE_SOLO) \ + X(PH_KIT_BLEND) \ + X(PH_KIT_HELD) \ + X(PH_KIT_SOLO) \ + X(PH_PRICE_BLEND) \ + X(PH_PRICE_HELD) \ + X(PH_PRICE_SOLO) \ + X(PH_LOT_BLEND) \ + X(PH_LOT_HELD) \ + X(PH_LOT_SOLO) \ + X(PH_GOAT_BLEND) \ + X(PH_GOAT_HELD) \ + X(PH_GOAT_SOLO) \ + X(PH_THOUGHT_BLEND) \ + X(PH_THOUGHT_HELD) \ + X(PH_THOUGHT_SOLO) \ + X(PH_CHOICE_BLEND) \ + X(PH_CHOICE_HELD) \ + X(PH_CHOICE_SOLO) \ + X(PH_MOUTH_BLEND) \ + X(PH_MOUTH_HELD) \ + X(PH_MOUTH_SOLO) \ + X(PH_FOOT_BLEND) \ + X(PH_FOOT_HELD) \ + X(PH_FOOT_SOLO) \ + X(PH_GOOSE_BLEND) \ + X(PH_GOOSE_HELD) \ + X(PH_GOOSE_SOLO) \ + X(PH_STRUT_BLEND) \ + X(PH_STRUT_HELD) \ + X(PH_STRUT_SOLO) \ + X(PH_CURE_BLEND) \ + X(PH_CURE_HELD) \ + X(PH_CURE_SOLO) \ + X(PH_NURSE_BLEND) \ + X(PH_NURSE_HELD) \ + X(PH_NURSE_SOLO) \ #define SOUND_LIST_SE \ - X(SE_USE_ITEM, "SE-USE-ITEM") \ - X(SE_PC_LOGIN, "SE-PC-LOGIN") \ - X(SE_PC_OFF, "SE-PC-OFF") \ - X(SE_PC_ON, "SE-PC-ON") \ - X(SE_SELECT, "SE-SELECT") \ - X(SE_WIN_OPEN, "SE-WIN-OPEN") \ - X(SE_WALL_HIT, "SE-WALL-HIT") \ - X(SE_DOOR, "SE-DOOR") \ - X(SE_EXIT, "SE-EXIT") \ - X(SE_LEDGE, "SE-LEDGE") \ - X(SE_BIKE_BELL, "SE-BIKE-BELL") \ - X(SE_NOT_EFFECTIVE, "SE-NOT-EFFECTIVE") \ - X(SE_EFFECTIVE, "SE-EFFECTIVE") \ - X(SE_SUPER_EFFECTIVE, "SE-SUPER-EFFECTIVE") \ - X(SE_BALL_OPEN, "SE-BALL-OPEN") \ - X(SE_FAINT, "SE-FAINT") \ - X(SE_FLEE, "SE-FLEE") \ - X(SE_SLIDING_DOOR, "SE-SLIDING-DOOR") \ - X(SE_SHIP, "SE-SHIP") \ - X(SE_BANG, "SE-BANG") \ - X(SE_PIN, "SE-PIN") \ - X(SE_BOO, "SE-BOO") \ - X(SE_BALL, "SE-BALL") \ - X(SE_CONTEST_PLACE, "SE-CONTEST-PLACE") \ - X(SE_A, "SE-A") \ - X(SE_I, "SE-I") \ - X(SE_U, "SE-U") \ - X(SE_E, "SE-E") \ - X(SE_O, "SE-O") \ - X(SE_N, "SE-N") \ - X(SE_SUCCESS, "SE-SUCCESS") \ - X(SE_FAILURE, "SE-FAILURE") \ - X(SE_EXP, "SE-EXP") \ - X(SE_BIKE_HOP, "SE-BIKE-HOP") \ - X(SE_SWITCH, "SE-SWITCH") \ - X(SE_CLICK, "SE-CLICK") \ - X(SE_FU_ZAKU, "SE-FU-ZAKU") \ - X(SE_CONTEST_CONDITION_LOSE, "SE-CONTEST-CONDITION-LOSE") \ - X(SE_LAVARIDGE_FALL_WARP, "SE-LAVARIDGE-FALL-WARP") \ - X(SE_ICE_STAIRS, "SE-ICE-STAIRS") \ - X(SE_ICE_BREAK, "SE-ICE-BREAK") \ - X(SE_ICE_CRACK, "SE-ICE-CRACK") \ - X(SE_FALL, "SE-FALL") \ - X(SE_UNLOCK, "SE-UNLOCK") \ - X(SE_WARP_IN, "SE-WARP-IN") \ - X(SE_WARP_OUT, "SE-WARP-OUT") \ - X(SE_REPEL, "SE-REPEL") \ - X(SE_ROTATING_GATE, "SE-ROTATING-GATE") \ - X(SE_TRUCK_MOVE, "SE-TRUCK-MOVE") \ - X(SE_TRUCK_STOP, "SE-TRUCK-STOP") \ - X(SE_TRUCK_UNLOAD, "SE-TRUCK-UNLOAD") \ - X(SE_TRUCK_DOOR, "SE-TRUCK-DOOR") \ - X(SE_BERRY_BLENDER, "SE-BERRY-BLENDER") \ - X(SE_CARD, "SE-CARD") \ - X(SE_SAVE, "SE-SAVE") \ - X(SE_BALL_BOUNCE_1, "SE-BALL-BOUNCE-1") \ - X(SE_BALL_BOUNCE_2, "SE-BALL-BOUNCE-2") \ - X(SE_BALL_BOUNCE_3, "SE-BALL-BOUNCE-3") \ - X(SE_BALL_BOUNCE_4, "SE-BALL-BOUNCE-4") \ - X(SE_BALL_TRADE, "SE-BALL-TRADE") \ - X(SE_BALL_THROW, "SE-BALL-THROW") \ - X(SE_NOTE_C, "SE-NOTE-C") \ - X(SE_NOTE_D, "SE-NOTE-D") \ - X(SE_NOTE_E, "SE-NOTE-E") \ - X(SE_NOTE_F, "SE-NOTE-F") \ - X(SE_NOTE_G, "SE-NOTE-G") \ - X(SE_NOTE_A, "SE-NOTE-A") \ - X(SE_NOTE_B, "SE-NOTE-B") \ - X(SE_NOTE_C_HIGH, "SE-NOTE-C-HIGH") \ - X(SE_PUDDLE, "SE-PUDDLE") \ - X(SE_BRIDGE_WALK, "SE-BRIDGE-WALK") \ - X(SE_ITEMFINDER, "SE-ITEMFINDER") \ - X(SE_DING_DONG, "SE-DING-DONG") \ - X(SE_BALLOON_RED, "SE-BALLOON-RED") \ - X(SE_BALLOON_BLUE, "SE-BALLOON-BLUE") \ - X(SE_BALLOON_YELLOW, "SE-BALLOON-YELLOW") \ - X(SE_BREAKABLE_DOOR, "SE-BREAKABLE-DOOR") \ - X(SE_MUD_BALL, "SE-MUD-BALL") \ - X(SE_FIELD_POISON, "SE-FIELD-POISON") \ - X(SE_ESCALATOR, "SE-ESCALATOR") \ - X(SE_THUNDERSTORM, "SE-THUNDERSTORM") \ - X(SE_THUNDERSTORM_STOP, "SE-THUNDERSTORM-STOP") \ - X(SE_DOWNPOUR, "SE-DOWNPOUR") \ - X(SE_DOWNPOUR_STOP, "SE-DOWNPOUR-STOP") \ - X(SE_RAIN, "SE-RAIN") \ - X(SE_RAIN_STOP, "SE-RAIN-STOP") \ - X(SE_THUNDER, "SE-THUNDER") \ - X(SE_THUNDER2, "SE-THUNDER2") \ - X(SE_ELEVATOR, "SE-ELEVATOR") \ - X(SE_LOW_HEALTH, "SE-LOW-HEALTH") \ - X(SE_EXP_MAX, "SE-EXP-MAX") \ - X(SE_ROULETTE_BALL, "SE-ROULETTE-BALL") \ - X(SE_ROULETTE_BALL2, "SE-ROULETTE-BALL2") \ - X(SE_TAILLOW_WING_FLAP, "SE-TAILLOW-WING-FLAP") \ - X(SE_SHOP, "SE-SHOP") \ - X(SE_CONTEST_HEART, "SE-CONTEST-HEART") \ - X(SE_CONTEST_CURTAIN_RISE, "SE-CONTEST-CURTAIN-RISE") \ - X(SE_CONTEST_CURTAIN_FALL, "SE-CONTEST-CURTAIN-FALL") \ - X(SE_CONTEST_ICON_CHANGE, "SE-CONTEST-ICON-CHANGE") \ - X(SE_CONTEST_ICON_CLEAR, "SE-CONTEST-ICON-CLEAR") \ - X(SE_CONTEST_MONS_TURN, "SE-CONTEST-MONS-TURN") \ - X(SE_SHINY, "SE-SHINY") \ - X(SE_INTRO_BLAST, "SE-INTRO-BLAST") \ - X(SE_MUGSHOT, "SE-MUGSHOT") \ - X(SE_APPLAUSE, "SE-APPLAUSE") \ - X(SE_VEND, "SE-VEND") \ - X(SE_ORB, "SE-ORB") \ - X(SE_DEX_SCROLL, "SE-DEX-SCROLL") \ - X(SE_DEX_PAGE, "SE-DEX-PAGE") \ - X(SE_POKENAV_ON, "SE-POKENAV-ON") \ - X(SE_POKENAV_OFF, "SE-POKENAV-OFF") \ - X(SE_DEX_SEARCH, "SE-DEX-SEARCH") \ - X(SE_EGG_HATCH, "SE-EGG-HATCH") \ - X(SE_BALL_TRAY_ENTER, "SE-BALL-TRAY-ENTER") \ - X(SE_BALL_TRAY_BALL, "SE-BALL-TRAY-BALL") \ - X(SE_BALL_TRAY_EXIT, "SE-BALL-TRAY-EXIT") \ - X(SE_GLASS_FLUTE, "SE-GLASS-FLUTE") \ - X(SE_M_THUNDERBOLT, "SE-M-THUNDERBOLT") \ - X(SE_M_THUNDERBOLT2, "SE-M-THUNDERBOLT2") \ - X(SE_M_HARDEN, "SE-M-HARDEN") \ - X(SE_M_NIGHTMARE, "SE-M-NIGHTMARE") \ - X(SE_M_VITAL_THROW, "SE-M-VITAL-THROW") \ - X(SE_M_VITAL_THROW2, "SE-M-VITAL-THROW2") \ - X(SE_M_BUBBLE, "SE-M-BUBBLE") \ - X(SE_M_BUBBLE2, "SE-M-BUBBLE2") \ - X(SE_M_BUBBLE3, "SE-M-BUBBLE3") \ - X(SE_M_RAIN_DANCE, "SE-M-RAIN-DANCE") \ - X(SE_M_CUT, "SE-M-CUT") \ - X(SE_M_STRING_SHOT, "SE-M-STRING-SHOT") \ - X(SE_M_STRING_SHOT2, "SE-M-STRING-SHOT2") \ - X(SE_M_ROCK_THROW, "SE-M-ROCK-THROW") \ - X(SE_M_GUST, "SE-M-GUST") \ - X(SE_M_GUST2, "SE-M-GUST2") \ - X(SE_M_DOUBLE_SLAP, "SE-M-DOUBLE-SLAP") \ - X(SE_M_DOUBLE_TEAM, "SE-M-DOUBLE-TEAM") \ - X(SE_M_RAZOR_WIND, "SE-M-RAZOR-WIND") \ - X(SE_M_ICY_WIND, "SE-M-ICY-WIND") \ - X(SE_M_THUNDER_WAVE, "SE-M-THUNDER-WAVE") \ - X(SE_M_COMET_PUNCH, "SE-M-COMET-PUNCH") \ - X(SE_M_MEGA_KICK, "SE-M-MEGA-KICK") \ - X(SE_M_MEGA_KICK2, "SE-M-MEGA-KICK2") \ - X(SE_M_CRABHAMMER, "SE-M-CRABHAMMER") \ - X(SE_M_JUMP_KICK, "SE-M-JUMP-KICK") \ - X(SE_M_FLAME_WHEEL, "SE-M-FLAME-WHEEL") \ - X(SE_M_FLAME_WHEEL2, "SE-M-FLAME-WHEEL2") \ - X(SE_M_FLAMETHROWER, "SE-M-FLAMETHROWER") \ - X(SE_M_FIRE_PUNCH, "SE-M-FIRE-PUNCH") \ - X(SE_M_TOXIC, "SE-M-TOXIC") \ - X(SE_M_SACRED_FIRE, "SE-M-SACRED-FIRE") \ - X(SE_M_SACRED_FIRE2, "SE-M-SACRED-FIRE2") \ - X(SE_M_EMBER, "SE-M-EMBER") \ - X(SE_M_TAKE_DOWN, "SE-M-TAKE-DOWN") \ - X(SE_M_BLIZZARD, "SE-M-BLIZZARD") \ - X(SE_M_BLIZZARD2, "SE-M-BLIZZARD2") \ - X(SE_M_SCRATCH, "SE-M-SCRATCH") \ - X(SE_M_VICEGRIP, "SE-M-VICEGRIP") \ - X(SE_M_WING_ATTACK, "SE-M-WING-ATTACK") \ - X(SE_M_FLY, "SE-M-FLY") \ - X(SE_M_SAND_ATTACK, "SE-M-SAND-ATTACK") \ - X(SE_M_RAZOR_WIND2, "SE-M-RAZOR-WIND2") \ - X(SE_M_BITE, "SE-M-BITE") \ - X(SE_M_HEADBUTT, "SE-M-HEADBUTT") \ - X(SE_M_SURF, "SE-M-SURF") \ - X(SE_M_HYDRO_PUMP, "SE-M-HYDRO-PUMP") \ - X(SE_M_WHIRLPOOL, "SE-M-WHIRLPOOL") \ - X(SE_M_HORN_ATTACK, "SE-M-HORN-ATTACK") \ - X(SE_M_TAIL_WHIP, "SE-M-TAIL-WHIP") \ - X(SE_M_MIST, "SE-M-MIST") \ - X(SE_M_POISON_POWDER, "SE-M-POISON-POWDER") \ - X(SE_M_BIND, "SE-M-BIND") \ - X(SE_M_DRAGON_RAGE, "SE-M-DRAGON-RAGE") \ - X(SE_M_SING, "SE-M-SING") \ - X(SE_M_PERISH_SONG, "SE-M-PERISH-SONG") \ - X(SE_M_PAY_DAY, "SE-M-PAY-DAY") \ - X(SE_M_DIG, "SE-M-DIG") \ - X(SE_M_DIZZY_PUNCH, "SE-M-DIZZY-PUNCH") \ - X(SE_M_SELF_DESTRUCT, "SE-M-SELF-DESTRUCT") \ - X(SE_M_EXPLOSION, "SE-M-EXPLOSION") \ - X(SE_M_ABSORB_2, "SE-M-ABSORB-2") \ - X(SE_M_ABSORB, "SE-M-ABSORB") \ - X(SE_M_SCREECH, "SE-M-SCREECH") \ - X(SE_M_BUBBLE_BEAM, "SE-M-BUBBLE-BEAM") \ - X(SE_M_BUBBLE_BEAM2, "SE-M-BUBBLE-BEAM2") \ - X(SE_M_SUPERSONIC, "SE-M-SUPERSONIC") \ - X(SE_M_BELLY_DRUM, "SE-M-BELLY-DRUM") \ - X(SE_M_METRONOME, "SE-M-METRONOME") \ - X(SE_M_BONEMERANG, "SE-M-BONEMERANG") \ - X(SE_M_LICK, "SE-M-LICK") \ - X(SE_M_PSYBEAM, "SE-M-PSYBEAM") \ - X(SE_M_FAINT_ATTACK, "SE-M-FAINT-ATTACK") \ - X(SE_M_SWORDS_DANCE, "SE-M-SWORDS-DANCE") \ - X(SE_M_LEER, "SE-M-LEER") \ - X(SE_M_SWAGGER, "SE-M-SWAGGER") \ - X(SE_M_SWAGGER2, "SE-M-SWAGGER2") \ - X(SE_M_HEAL_BELL, "SE-M-HEAL-BELL") \ - X(SE_M_CONFUSE_RAY, "SE-M-CONFUSE-RAY") \ - X(SE_M_SNORE, "SE-M-SNORE") \ - X(SE_M_BRICK_BREAK, "SE-M-BRICK-BREAK") \ - X(SE_M_GIGA_DRAIN, "SE-M-GIGA-DRAIN") \ - X(SE_M_PSYBEAM2, "SE-M-PSYBEAM2") \ - X(SE_M_SOLAR_BEAM, "SE-M-SOLAR-BEAM") \ - X(SE_M_PETAL_DANCE, "SE-M-PETAL-DANCE") \ - X(SE_M_TELEPORT, "SE-M-TELEPORT") \ - X(SE_M_MINIMIZE, "SE-M-MINIMIZE") \ - X(SE_M_SKETCH, "SE-M-SKETCH") \ - X(SE_M_SWIFT, "SE-M-SWIFT") \ - X(SE_M_REFLECT, "SE-M-REFLECT") \ - X(SE_M_BARRIER, "SE-M-BARRIER") \ - X(SE_M_DETECT, "SE-M-DETECT") \ - X(SE_M_LOCK_ON, "SE-M-LOCK-ON") \ - X(SE_M_MOONLIGHT, "SE-M-MOONLIGHT") \ - X(SE_M_CHARM, "SE-M-CHARM") \ - X(SE_M_CHARGE, "SE-M-CHARGE") \ - X(SE_M_STRENGTH, "SE-M-STRENGTH") \ - X(SE_M_HYPER_BEAM, "SE-M-HYPER-BEAM") \ - X(SE_M_WATERFALL, "SE-M-WATERFALL") \ - X(SE_M_REVERSAL, "SE-M-REVERSAL") \ - X(SE_M_ACID_ARMOR, "SE-M-ACID-ARMOR") \ - X(SE_M_SANDSTORM, "SE-M-SANDSTORM") \ - X(SE_M_TRI_ATTACK, "SE-M-TRI-ATTACK") \ - X(SE_M_TRI_ATTACK2, "SE-M-TRI-ATTACK2") \ - X(SE_M_ENCORE, "SE-M-ENCORE") \ - X(SE_M_ENCORE2, "SE-M-ENCORE2") \ - X(SE_M_BATON_PASS, "SE-M-BATON-PASS") \ - X(SE_M_MILK_DRINK, "SE-M-MILK-DRINK") \ - X(SE_M_ATTRACT, "SE-M-ATTRACT") \ - X(SE_M_ATTRACT2, "SE-M-ATTRACT2") \ - X(SE_M_MORNING_SUN, "SE-M-MORNING-SUN") \ - X(SE_M_FLATTER, "SE-M-FLATTER") \ - X(SE_M_SAND_TOMB, "SE-M-SAND-TOMB") \ - X(SE_M_GRASSWHISTLE, "SE-M-GRASSWHISTLE") \ - X(SE_M_SPIT_UP, "SE-M-SPIT-UP") \ - X(SE_M_DIVE, "SE-M-DIVE") \ - X(SE_M_EARTHQUAKE, "SE-M-EARTHQUAKE") \ - X(SE_M_TWISTER, "SE-M-TWISTER") \ - X(SE_M_SWEET_SCENT, "SE-M-SWEET-SCENT") \ - X(SE_M_YAWN, "SE-M-YAWN") \ - X(SE_M_SKY_UPPERCUT, "SE-M-SKY-UPPERCUT") \ - X(SE_M_STAT_INCREASE, "SE-M-STAT-INCREASE") \ - X(SE_M_HEAT_WAVE, "SE-M-HEAT-WAVE") \ - X(SE_M_UPROAR, "SE-M-UPROAR") \ - X(SE_M_HAIL, "SE-M-HAIL") \ - X(SE_M_COSMIC_POWER, "SE-M-COSMIC-POWER") \ - X(SE_M_TEETER_DANCE, "SE-M-TEETER-DANCE") \ - X(SE_M_STAT_DECREASE, "SE-M-STAT-DECREASE") \ - X(SE_M_HAZE, "SE-M-HAZE") \ - X(SE_M_HYPER_BEAM2, "SE-M-HYPER-BEAM2") \ - X(SE_RG_DOOR, "SE-RG-DOOR") \ - X(SE_RG_CARD_FLIP, "SE-RG-CARD-FLIP") \ - X(SE_RG_CARD_FLIPPING, "SE-RG-CARD-FLIPPING") \ - X(SE_RG_CARD_OPEN, "SE-RG-CARD-OPEN") \ - X(SE_RG_BAG_CURSOR, "SE-RG-BAG-CURSOR") \ - X(SE_RG_BAG_POCKET, "SE-RG-BAG-POCKET") \ - X(SE_RG_BALL_CLICK, "SE-RG-BALL-CLICK") \ - X(SE_RG_SHOP, "SE-RG-SHOP") \ - X(SE_RG_SS_ANNE_HORN, "SE-RG-SS-ANNE-HORN") \ - X(SE_RG_HELP_OPEN, "SE-RG-HELP-OPEN") \ - X(SE_RG_HELP_CLOSE, "SE-RG-HELP-CLOSE") \ - X(SE_RG_HELP_ERROR, "SE-RG-HELP-ERROR") \ - X(SE_RG_DEOXYS_MOVE, "SE-RG-DEOXYS-MOVE") \ - X(SE_RG_POKE_JUMP_SUCCESS, "SE-RG-POKE-JUMP-SUCCESS") \ - X(SE_RG_POKE_JUMP_FAILURE, "SE-RG-POKE-JUMP-FAILURE") \ - X(SE_PHONE_CALL, "SE-PHONE-CALL") \ - X(SE_PHONE_CLICK, "SE-PHONE-CLICK") \ - X(SE_ARENA_TIMEUP1, "SE-ARENA-TIMEUP1") \ - X(SE_ARENA_TIMEUP2, "SE-ARENA-TIMEUP2") \ - X(SE_PIKE_CURTAIN_CLOSE, "SE-PIKE-CURTAIN-CLOSE") \ - X(SE_PIKE_CURTAIN_OPEN, "SE-PIKE-CURTAIN-OPEN") \ - X(SE_SUDOWOODO_SHAKE, "SE-SUDOWOODO-SHAKE") \ + X(SE_USE_ITEM) \ + X(SE_PC_LOGIN) \ + X(SE_PC_OFF) \ + X(SE_PC_ON) \ + X(SE_SELECT) \ + X(SE_WIN_OPEN) \ + X(SE_WALL_HIT) \ + X(SE_DOOR) \ + X(SE_EXIT) \ + X(SE_LEDGE) \ + X(SE_BIKE_BELL) \ + X(SE_NOT_EFFECTIVE) \ + X(SE_EFFECTIVE) \ + X(SE_SUPER_EFFECTIVE) \ + X(SE_BALL_OPEN) \ + X(SE_FAINT) \ + X(SE_FLEE) \ + X(SE_SLIDING_DOOR) \ + X(SE_SHIP) \ + X(SE_BANG) \ + X(SE_PIN) \ + X(SE_BOO) \ + X(SE_BALL) \ + X(SE_CONTEST_PLACE) \ + X(SE_A) \ + X(SE_I) \ + X(SE_U) \ + X(SE_E) \ + X(SE_O) \ + X(SE_N) \ + X(SE_SUCCESS) \ + X(SE_FAILURE) \ + X(SE_EXP) \ + X(SE_BIKE_HOP) \ + X(SE_SWITCH) \ + X(SE_CLICK) \ + X(SE_FU_ZAKU) \ + X(SE_CONTEST_CONDITION_LOSE) \ + X(SE_LAVARIDGE_FALL_WARP) \ + X(SE_ICE_STAIRS) \ + X(SE_ICE_BREAK) \ + X(SE_ICE_CRACK) \ + X(SE_FALL) \ + X(SE_UNLOCK) \ + X(SE_WARP_IN) \ + X(SE_WARP_OUT) \ + X(SE_REPEL) \ + X(SE_ROTATING_GATE) \ + X(SE_TRUCK_MOVE) \ + X(SE_TRUCK_STOP) \ + X(SE_TRUCK_UNLOAD) \ + X(SE_TRUCK_DOOR) \ + X(SE_BERRY_BLENDER) \ + X(SE_CARD) \ + X(SE_SAVE) \ + X(SE_BALL_BOUNCE_1) \ + X(SE_BALL_BOUNCE_2) \ + X(SE_BALL_BOUNCE_3) \ + X(SE_BALL_BOUNCE_4) \ + X(SE_BALL_TRADE) \ + X(SE_BALL_THROW) \ + X(SE_NOTE_C) \ + X(SE_NOTE_D) \ + X(SE_NOTE_E) \ + X(SE_NOTE_F) \ + X(SE_NOTE_G) \ + X(SE_NOTE_A) \ + X(SE_NOTE_B) \ + X(SE_NOTE_C_HIGH) \ + X(SE_PUDDLE) \ + X(SE_BRIDGE_WALK) \ + X(SE_ITEMFINDER) \ + X(SE_DING_DONG) \ + X(SE_BALLOON_RED) \ + X(SE_BALLOON_BLUE) \ + X(SE_BALLOON_YELLOW) \ + X(SE_BREAKABLE_DOOR) \ + X(SE_MUD_BALL) \ + X(SE_FIELD_POISON) \ + X(SE_ESCALATOR) \ + X(SE_THUNDERSTORM) \ + X(SE_THUNDERSTORM_STOP) \ + X(SE_DOWNPOUR) \ + X(SE_DOWNPOUR_STOP) \ + X(SE_RAIN) \ + X(SE_RAIN_STOP) \ + X(SE_THUNDER) \ + X(SE_THUNDER2) \ + X(SE_ELEVATOR) \ + X(SE_LOW_HEALTH) \ + X(SE_EXP_MAX) \ + X(SE_ROULETTE_BALL) \ + X(SE_ROULETTE_BALL2) \ + X(SE_TAILLOW_WING_FLAP) \ + X(SE_SHOP) \ + X(SE_CONTEST_HEART) \ + X(SE_CONTEST_CURTAIN_RISE) \ + X(SE_CONTEST_CURTAIN_FALL) \ + X(SE_CONTEST_ICON_CHANGE) \ + X(SE_CONTEST_ICON_CLEAR) \ + X(SE_CONTEST_MONS_TURN) \ + X(SE_SHINY) \ + X(SE_INTRO_BLAST) \ + X(SE_MUGSHOT) \ + X(SE_APPLAUSE) \ + X(SE_VEND) \ + X(SE_ORB) \ + X(SE_DEX_SCROLL) \ + X(SE_DEX_PAGE) \ + X(SE_POKENAV_ON) \ + X(SE_POKENAV_OFF) \ + X(SE_DEX_SEARCH) \ + X(SE_EGG_HATCH) \ + X(SE_BALL_TRAY_ENTER) \ + X(SE_BALL_TRAY_BALL) \ + X(SE_BALL_TRAY_EXIT) \ + X(SE_GLASS_FLUTE) \ + X(SE_M_THUNDERBOLT) \ + X(SE_M_THUNDERBOLT2) \ + X(SE_M_HARDEN) \ + X(SE_M_NIGHTMARE) \ + X(SE_M_VITAL_THROW) \ + X(SE_M_VITAL_THROW2) \ + X(SE_M_BUBBLE) \ + X(SE_M_BUBBLE2) \ + X(SE_M_BUBBLE3) \ + X(SE_M_RAIN_DANCE) \ + X(SE_M_CUT) \ + X(SE_M_STRING_SHOT) \ + X(SE_M_STRING_SHOT2) \ + X(SE_M_ROCK_THROW) \ + X(SE_M_GUST) \ + X(SE_M_GUST2) \ + X(SE_M_DOUBLE_SLAP) \ + X(SE_M_DOUBLE_TEAM) \ + X(SE_M_RAZOR_WIND) \ + X(SE_M_ICY_WIND) \ + X(SE_M_THUNDER_WAVE) \ + X(SE_M_COMET_PUNCH) \ + X(SE_M_MEGA_KICK) \ + X(SE_M_MEGA_KICK2) \ + X(SE_M_CRABHAMMER) \ + X(SE_M_JUMP_KICK) \ + X(SE_M_FLAME_WHEEL) \ + X(SE_M_FLAME_WHEEL2) \ + X(SE_M_FLAMETHROWER) \ + X(SE_M_FIRE_PUNCH) \ + X(SE_M_TOXIC) \ + X(SE_M_SACRED_FIRE) \ + X(SE_M_SACRED_FIRE2) \ + X(SE_M_EMBER) \ + X(SE_M_TAKE_DOWN) \ + X(SE_M_BLIZZARD) \ + X(SE_M_BLIZZARD2) \ + X(SE_M_SCRATCH) \ + X(SE_M_VICEGRIP) \ + X(SE_M_WING_ATTACK) \ + X(SE_M_FLY) \ + X(SE_M_SAND_ATTACK) \ + X(SE_M_RAZOR_WIND2) \ + X(SE_M_BITE) \ + X(SE_M_HEADBUTT) \ + X(SE_M_SURF) \ + X(SE_M_HYDRO_PUMP) \ + X(SE_M_WHIRLPOOL) \ + X(SE_M_HORN_ATTACK) \ + X(SE_M_TAIL_WHIP) \ + X(SE_M_MIST) \ + X(SE_M_POISON_POWDER) \ + X(SE_M_BIND) \ + X(SE_M_DRAGON_RAGE) \ + X(SE_M_SING) \ + X(SE_M_PERISH_SONG) \ + X(SE_M_PAY_DAY) \ + X(SE_M_DIG) \ + X(SE_M_DIZZY_PUNCH) \ + X(SE_M_SELF_DESTRUCT) \ + X(SE_M_EXPLOSION) \ + X(SE_M_ABSORB_2) \ + X(SE_M_ABSORB) \ + X(SE_M_SCREECH) \ + X(SE_M_BUBBLE_BEAM) \ + X(SE_M_BUBBLE_BEAM2) \ + X(SE_M_SUPERSONIC) \ + X(SE_M_BELLY_DRUM) \ + X(SE_M_METRONOME) \ + X(SE_M_BONEMERANG) \ + X(SE_M_LICK) \ + X(SE_M_PSYBEAM) \ + X(SE_M_FAINT_ATTACK) \ + X(SE_M_SWORDS_DANCE) \ + X(SE_M_LEER) \ + X(SE_M_SWAGGER) \ + X(SE_M_SWAGGER2) \ + X(SE_M_HEAL_BELL) \ + X(SE_M_CONFUSE_RAY) \ + X(SE_M_SNORE) \ + X(SE_M_BRICK_BREAK) \ + X(SE_M_GIGA_DRAIN) \ + X(SE_M_PSYBEAM2) \ + X(SE_M_SOLAR_BEAM) \ + X(SE_M_PETAL_DANCE) \ + X(SE_M_TELEPORT) \ + X(SE_M_MINIMIZE) \ + X(SE_M_SKETCH) \ + X(SE_M_SWIFT) \ + X(SE_M_REFLECT) \ + X(SE_M_BARRIER) \ + X(SE_M_DETECT) \ + X(SE_M_LOCK_ON) \ + X(SE_M_MOONLIGHT) \ + X(SE_M_CHARM) \ + X(SE_M_CHARGE) \ + X(SE_M_STRENGTH) \ + X(SE_M_HYPER_BEAM) \ + X(SE_M_WATERFALL) \ + X(SE_M_REVERSAL) \ + X(SE_M_ACID_ARMOR) \ + X(SE_M_SANDSTORM) \ + X(SE_M_TRI_ATTACK) \ + X(SE_M_TRI_ATTACK2) \ + X(SE_M_ENCORE) \ + X(SE_M_ENCORE2) \ + X(SE_M_BATON_PASS) \ + X(SE_M_MILK_DRINK) \ + X(SE_M_ATTRACT) \ + X(SE_M_ATTRACT2) \ + X(SE_M_MORNING_SUN) \ + X(SE_M_FLATTER) \ + X(SE_M_SAND_TOMB) \ + X(SE_M_GRASSWHISTLE) \ + X(SE_M_SPIT_UP) \ + X(SE_M_DIVE) \ + X(SE_M_EARTHQUAKE) \ + X(SE_M_TWISTER) \ + X(SE_M_SWEET_SCENT) \ + X(SE_M_YAWN) \ + X(SE_M_SKY_UPPERCUT) \ + X(SE_M_STAT_INCREASE) \ + X(SE_M_HEAT_WAVE) \ + X(SE_M_UPROAR) \ + X(SE_M_HAIL) \ + X(SE_M_COSMIC_POWER) \ + X(SE_M_TEETER_DANCE) \ + X(SE_M_STAT_DECREASE) \ + X(SE_M_HAZE) \ + X(SE_M_HYPER_BEAM2) \ + X(SE_RG_DOOR) \ + X(SE_RG_CARD_FLIP) \ + X(SE_RG_CARD_FLIPPING) \ + X(SE_RG_CARD_OPEN) \ + X(SE_RG_BAG_CURSOR) \ + X(SE_RG_BAG_POCKET) \ + X(SE_RG_BALL_CLICK) \ + X(SE_RG_SHOP) \ + X(SE_RG_SS_ANNE_HORN) \ + X(SE_RG_HELP_OPEN) \ + X(SE_RG_HELP_CLOSE) \ + X(SE_RG_HELP_ERROR) \ + X(SE_RG_DEOXYS_MOVE) \ + X(SE_RG_POKE_JUMP_SUCCESS) \ + X(SE_RG_POKE_JUMP_FAILURE) \ + X(SE_PHONE_CALL) \ + X(SE_PHONE_CLICK) \ + X(SE_ARENA_TIMEUP1) \ + X(SE_ARENA_TIMEUP2) \ + X(SE_PIKE_CURTAIN_CLOSE) \ + X(SE_PIKE_CURTAIN_OPEN) \ + X(SE_SUDOWOODO_SHAKE) \ // Create BGM list -#define X(songId, name) static const u8 sBGMName_##songId[] = _(name); +#define X(songId) static const u8 sBGMName_##songId[] = _(#songId); SOUND_LIST_BGM #undef X -#define X(songId, name) sBGMName_##songId, +#define X(songId) sBGMName_##songId, static const u8 *const gBGMNames[] = { SOUND_LIST_BGM @@ -3384,15 +3384,15 @@ SOUND_LIST_BGM #undef X // Create SE list -#define X(songId, name) static const u8 sSEName_##songId[] = _(name); +#define X(songId) static const u8 sSEName_##songId[] = _(#songId); SOUND_LIST_SE #undef X -#define X(songId, name) sSEName_##songId, +#define X(songId) sSEName_##songId, static const u8 *const gSENames[] = { SOUND_LIST_SE }; #undef X -#endif +#endif //DEBUG_SYSTEM_ENABLE == TRUE From a462db5e69a47763ac40798a04b132c28c5be89a Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 9 Sep 2022 23:34:05 -0400 Subject: [PATCH 239/271] Automated creation of MAP_GROUP_COUNT for the debug menu --- src/data/map_group_count.h | 1 + src/debug.c | 5 +---- tools/mapjson/mapjson.cpp | 16 +++++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 src/data/map_group_count.h diff --git a/src/data/map_group_count.h b/src/data/map_group_count.h new file mode 100644 index 0000000000..4fe8a21b3b --- /dev/null +++ b/src/data/map_group_count.h @@ -0,0 +1 @@ +static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; diff --git a/src/debug.c b/src/debug.c index 4cc1ac6168..e5a2d851af 100644 --- a/src/debug.c +++ b/src/debug.c @@ -282,10 +282,7 @@ extern u8 Debug_CheatStart[]; extern u8 PlayersHouse_2F_EventScript_SetWallClock[]; extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; - -// ******************************* -//Maps per map group COPY FROM /include/constants/map_groups.h -static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; +#include "data/map_group_count.h" // Text // Main Menu diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index 8de9ff8d01..4694bfaca2 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -386,6 +386,7 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { char dir_separator = file_dir.back(); ostringstream text; + ostringstream mapCountText; text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n" << "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n"; @@ -424,15 +425,16 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { } text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n"; - - text << "// static const u8 MAP_GROUP_COUNT[] = {"; //DEBUG - for(int i=0; i Date: Sun, 11 Sep 2022 18:06:05 +0200 Subject: [PATCH 240/271] Fix Lure prices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change reflects the original prices used in Pokémon let's go pikachu/eevee --- src/data/items.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/items.h b/src/data/items.h index 6649fb24b6..b0b53c31f5 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -1560,7 +1560,7 @@ const struct Item gItems[] = { .name = _("Lure"), .itemId = ITEM_LURE, - .price = 350, + .price = 400, .holdEffectParam = 100, .description = sLureDesc, .pocket = POCKET_ITEMS, @@ -1574,7 +1574,7 @@ const struct Item gItems[] = { .name = _("Super Lure"), .itemId = ITEM_SUPER_LURE, - .price = 500, + .price = 700, .holdEffectParam = 200, .description = sSuperLureDesc, .pocket = POCKET_ITEMS, @@ -1588,7 +1588,7 @@ const struct Item gItems[] = { .name = _("Max Lure"), .itemId = ITEM_MAX_LURE, - .price = 700, + .price = 900, .holdEffectParam = 250, .description = sMaxLureDesc, .pocket = POCKET_ITEMS, From 69f01d73cd7da3d99e1dd6388ba3b4487d19ca72 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 11 Sep 2022 12:41:56 -0400 Subject: [PATCH 241/271] Added missing uses of Fairy type for Union Room and Battle Factory --- .../scripts.inc | 9 +++++++++ src/data/union_room.h | 1 + 2 files changed, 10 insertions(+) diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc index d54cf83570..3167b17d81 100644 --- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc +++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc @@ -225,6 +225,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_CommentOnOpponentType:: call_if_eq VAR_0x8005, TYPE_ICE, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesIce call_if_eq VAR_0x8005, TYPE_DRAGON, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesDragon call_if_eq VAR_0x8005, TYPE_DARK, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesDark + call_if_eq VAR_0x8005, TYPE_FAIRY, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesFairy call_if_eq VAR_0x8005, NUMBER_OF_MON_TYPES, BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentHasNoMostCommonType return @@ -296,6 +297,10 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesDark:: msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerSkilledInDarkType, MSGBOX_DEFAULT return +BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentUsesFairy:: + msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerSkilledInFairyType, MSGBOX_DEFAULT + return + BattleFrontier_BattleFactoryPreBattleRoom_EventScript_OpponentHasNoMostCommonType:: msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerHasNoClearFavorite, MSGBOX_DEFAULT return @@ -559,6 +564,10 @@ BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerSkilledInDarkType: .string "The TRAINER is apparently skilled\n" .string "in the handling of the DARK type.$" +BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerSkilledInFairyType: + .string "The TRAINER is apparently skilled\n" + .string "in the handling of the FAIRY type.$" + BattleFrontier_BattleFactoryPreBattleRoom_Text_TrainerSkilledInSteelType: .string "The TRAINER is apparently skilled\n" .string "in the handling of the STEEL type.$" diff --git a/src/data/union_room.h b/src/data/union_room.h index cf4b12b5d5..07f8e48994 100644 --- a/src/data/union_room.h +++ b/src/data/union_room.h @@ -885,6 +885,7 @@ static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES] = { { gTypeNames[TYPE_DRAGON], TYPE_DRAGON }, { gTypeNames[TYPE_STEEL], TYPE_STEEL }, { gTypeNames[TYPE_DARK], TYPE_DARK }, + { gTypeNames[TYPE_FAIRY], TYPE_FAIRY }, { sText_Exit, NUMBER_OF_MON_TYPES } }; From 61752a4977eb90826593cec40848efe1212529f0 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 11 Sep 2022 13:35:58 -0400 Subject: [PATCH 242/271] Added parenthesis to GET_SHINY_VALUE --- include/pokemon.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pokemon.h b/include/pokemon.h index 63c5c74eb7..e48618328d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -363,7 +363,7 @@ struct Evolution | (((personality) & 0x00000003) >> 0) \ ) % NUM_UNOWN_FORMS) -#define GET_SHINY_VALUE(otId, personality)HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality) +#define GET_SHINY_VALUE(otId, personality) (HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality)) extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; From 65108c319265a7a5f232e0fa6af61d091823ad45 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 11 Sep 2022 14:14:49 -0400 Subject: [PATCH 243/271] Cleaned trailing whitespace --- INSTALL.md | 6 +- Makefile | 4 +- asm/macros/battle_ai_script.inc | 26 ++--- asm/macros/battle_anim_script.inc | 6 +- asm/macros/battle_script.inc | 100 +++++++++--------- asm/macros/event.inc | 10 +- data/battle_ai_scripts.s | 2 +- data/battle_scripts_1.s | 6 +- data/scripts/new_game.inc | 2 +- data/scripts/roulette.inc | 2 +- docs/legacy_WSL1_INSTALL.md | 4 +- gflib/text.c | 4 +- graphics_file_rules.mk | 20 ++-- include/battle.h | 2 +- include/global.h | 2 +- include/link_rfu.h | 6 +- include/pokenav.h | 2 +- include/union_room.h | 4 +- src/battle_anim_mons.c | 4 +- src/battle_script_commands.c | 2 +- src/battle_tent.c | 2 +- src/battle_transition.c | 24 ++--- src/data/field_effects/field_effect_objects.h | 2 +- src/decoration.c | 4 +- src/ereader_screen.c | 6 +- src/event_object_movement.c | 2 +- src/field_tasks.c | 18 ++-- src/link_rfu_2.c | 10 +- src/link_rfu_3.c | 2 +- src/metatile_behavior.c | 2 +- src/mystery_gift.c | 8 +- src/mystery_gift_menu.c | 2 +- src/mystery_gift_view.c | 18 ++-- src/pokedex_area_screen.c | 6 +- src/pokemon.c | 10 +- src/pokemon_summary_screen.c | 4 +- src/pokenav_menu_handler_gfx.c | 2 +- src/record_mixing.c | 4 +- src/roamer.c | 6 +- src/rom_header.s | 2 +- src/save.c | 2 +- src/script.c | 6 +- src/slot_machine.c | 20 ++-- src/sound.c | 2 +- src/trade.c | 2 +- src/tv.c | 8 +- src/union_room_player_avatar.c | 2 +- src/walda_phrase.c | 2 +- src/wild_encounter.c | 4 +- src/wonder_news.c | 2 +- sym_common.txt | 10 +- 51 files changed, 204 insertions(+), 204 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 2759124bee..5f2a1f05f1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -106,7 +106,7 @@ cd /mnt/c/Users//Desktop/decomps > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users//Desktop/decomp folder"`. > Note 3: Windows path names are case-insensitive so adhering to capitalization isn't needed - + If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)), or continue reading below for [Windows instructions using msys2](#windows-msys2). @@ -216,7 +216,7 @@ Note that the directory **must exist** in Windows. If you want to store pokeemer > Note 1: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "c:/users//Desktop/decomp folder"`. > Note 2: Windows path names are case-insensitive so adhering to capitalization isn't needed - + If this works, then proceed to [Installation](#installation). Otherwise, ask for help on Discord or IRC (see [README.md](README.md)). ## macOS @@ -539,7 +539,7 @@ devkitARM is now installed. devkitARM is now installed. ### Installing devkitARM on Arch Linux - + 1. Follow [devkitPro's instructions](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) to configure `pacman` to download devkitPro packages. 2. Install `gba-dev`: run the following command as root. diff --git a/Makefile b/Makefile index c36cc8e936..88303e7f39 100644 --- a/Makefile +++ b/Makefile @@ -254,7 +254,7 @@ tidynonmodern: tidymodern: rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME) rm -rf $(MODERN_OBJ_DIR_NAME) - + ifneq ($(MODERN),0) $(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member endif @@ -410,7 +410,7 @@ LD_SCRIPT := ld_script.txt LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld else LD_SCRIPT := ld_script_modern.txt -LD_SCRIPT_DEPS := +LD_SCRIPT_DEPS := endif $(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS) diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc index 5341e5a431..78c8131f66 100644 --- a/asm/macros/battle_ai_script.inc +++ b/asm/macros/battle_ai_script.inc @@ -550,38 +550,38 @@ .2byte \param1 .4byte \param2 .endm - + @ useful script macros .macro get_curr_move_type get_type AI_TYPE_MOVE .endm - + .macro get_user_type1 get_type AI_TYPE1_USER .endm - + .macro get_user_type2 get_type AI_TYPE2_USER .endm - + .macro get_target_type1 get_type AI_TYPE1_TARGET .endm - + .macro get_target_type2 get_type AI_TYPE2_TARGET .endm - + .macro if_ability battler:req, ability:req, ptr:req check_ability \battler, \ability if_equal 1, \ptr .endm - + .macro if_no_ability battler:req, ability:req, ptr:req check_ability \battler, \ability if_equal 0, \ptr .endm - + .macro if_type battler:req, type:req, ptr:req is_of_type \battler, \type if_equal 1, \ptr @@ -591,20 +591,20 @@ is_of_type \battler, \type if_equal 0, \ptr .endm - + .macro if_target_faster ptr:req if_user_goes 1, \ptr .endm - + .macro if_user_faster ptr:req if_user_goes 0, \ptr .endm - + .macro if_double_battle ptr:req is_double_battle if_equal 1, \ptr .endm - + .macro if_not_double_battle ptr:req is_double_battle if_equal 0, \ptr @@ -613,7 +613,7 @@ .macro if_any_move_disabled battler:req, ptr:req if_any_move_disabled_or_encored \battler, 0, \ptr .endm - + .macro if_any_move_encored battler:req, ptr:req if_any_move_disabled_or_encored \battler, 1, \ptr .endm diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 15c48c39f5..67632e9885 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -270,16 +270,16 @@ .macro stopsound .byte 0x2f .endm - + @ useful macros .macro jumpreteq value:req, ptr:req jumpargeq ARG_RET_ID, \value, \ptr .endm - + .macro jumprettrue ptr:req jumpreteq TRUE, \ptr .endm - + .macro jumpretfalse ptr:req jumpreteq FALSE, \ptr .endm diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 0a44f6075a..ccb887327f 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -410,33 +410,33 @@ .byte \endMode .byte \endState .endm - + @ Help macros for 5 uses of moveend command - + @ All cases .macro moveendall setbyte sMOVEEND_STATE, 0 moveend 0, 0 .endm - + @ Chosen case .macro moveendcase case:req setbyte sMOVEEND_STATE, \case moveend 1, 0 .endm - + @ All cases from (inclusive) .macro moveendfrom from:req setbyte sMOVEEND_STATE, \from moveend 0, 0 .endm - + @ All cases from 0 to (not inclusive) .macro moveendto to:req setbyte sMOVEEND_STATE, 0 moveend 2, \to .endm - + @ Cases from (inclusive) to (not inclusive) .macro moveendfromto from:req, to:req setbyte sMOVEEND_STATE, \from @@ -1252,165 +1252,165 @@ .byte 0xf8 .byte \position .endm - + @ various command changed to more readable macros .macro cancelmultiturnmoves battler:req various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES .endm - + .macro setmagiccoattarget battler:req various \battler, VARIOUS_SET_MAGIC_COAT_TARGET .endm - + .macro getifcantrunfrombattle battler:req various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE .endm - + .macro getmovetarget battler:req various \battler, VARIOUS_GET_MOVE_TARGET .endm - + .macro getbattlerfainted battler:req various \battler, VARIOUS_GET_BATTLER_FAINTED .endm - + .macro resetintimidatetracebits battler:req various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS .endm - + .macro updatechoicemoveonlvlup battler:req various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP .endm - + .macro resetplayerfainted various BS_ATTACKER, VARIOUS_RESET_PLAYER_FAINTED .endm - + .macro palaceflavortext battler:req various \battler, VARIOUS_PALACE_FLAVOR_TEXT .endm - + .macro arenajudgmentwindow various BS_ATTACKER, VARIOUS_ARENA_JUDGMENT_WINDOW .endm - + .macro arenaopponentmonlost various BS_ATTACKER, VARIOUS_ARENA_OPPONENT_MON_LOST .endm - + .macro arenaplayermonlost various BS_ATTACKER, VARIOUS_ARENA_PLAYER_MON_LOST .endm - + .macro arenabothmonlost various BS_ATTACKER, VARIOUS_ARENA_BOTH_MONS_LOST .endm - + .macro forfeityesnobox battler:req various \battler, VARIOUS_EMIT_YESNOBOX .endm - + .macro arenadrawreftextbox various BS_ATTACKER, VARIOUS_DRAW_ARENA_REF_TEXT_BOX .endm - + .macro arenaerasereftextbox various BS_ATTACKER, VARIOUS_ERASE_ARENA_REF_TEXT_BOX .endm - + .macro arenajudgmentstring id:req various \id, VARIOUS_ARENA_JUDGMENT_STRING .endm - + .macro arenawaitmessage id:req various \id, VARIOUS_ARENA_WAIT_STRING .endm - + .macro waitcry battler:req various \battler, VARIOUS_WAIT_CRY .endm - + .macro returnopponentmon1toball battler:req various \battler, VARIOUS_RETURN_OPPONENT_MON1 .endm - + .macro returnopponentmon2toball battler:req various \battler, VARIOUS_RETURN_OPPONENT_MON2 .endm - + .macro volumedown various BS_ATTACKER, VARIOUS_VOLUME_DOWN .endm - + .macro volumeup various BS_ATTACKER, VARIOUS_VOLUME_UP .endm - + .macro setalreadystatusedmoveattempt battler:req various \battler, VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT .endm - + .macro palacetryescapestatus battler:req various \battler, VARIOUS_PALACE_TRY_ESCAPE_STATUS .endm - + .macro setoutcomeonteleport battler:req various \battler, VARIOUS_SET_TELEPORT_OUTCOME .endm - + .macro playtrainerdefeatbgm battler:req various \battler, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC .endm - + @ helpful macros .macro setstatchanger stat:req, stages:req, down:req setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7 .endm - + .macro setmoveeffect effect:req setbyte cEFFECT_CHOOSER, \effect .endm - + .macro chosenstatus1animation battler:req, status:req chosenstatusanimation \battler, 0x0, \status .endm - + .macro chosenstatus2animation battler:req, status:req chosenstatusanimation \battler, 0x1, \status .endm - + .macro sethword dst:req, value:req setbyte \dst, (\value) & 0xFF setbyte \dst + 1, ((\value) >> 8) & 0xFF .endm - + .macro setword dst:req, value:req setbyte \dst, (\value) & 0xFF setbyte \dst + 1, ((\value) >> 8) & 0xFF setbyte \dst + 2, ((\value) >> 16) & 0xFF setbyte \dst + 3, ((\value) >> 24) & 0xFF .endm - + .macro copybyte dst:req, src:req copyarray \dst, \src, 0x1 .endm - + .macro copyhword dst:req, src:req copyarray \dst, \src, 0x2 .endm - + .macro copyword dst:req, src:req copyarray \dst, \src, 0x4 .endm - + .macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr .endm - + .macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr .endm - + .macro jumpifmove move:req, jumpptr:req jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr .endm @@ -1418,23 +1418,23 @@ .macro jumpifnotmove move:req, jumpptr:req jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr .endm - + .macro jumpifstatus3 battler:req, status:req, jumpptr:req jumpifstatus3condition \battler, \status, FALSE, \jumpptr .endm - + .macro jumpifnostatus3 battler:req, status:req, jumpptr:req jumpifstatus3condition \battler, \status, TRUE, \jumpptr .endm - + .macro jumpifmovehadnoeffect jumpptr:req jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr .endm - + .macro jumpifbattletype flags:req, jumpptr:req jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm - + .macro jumpifnotbattletype flags:req, jumpptr:req jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm diff --git a/asm/macros/event.inc b/asm/macros/event.inc index cea21aeb28..77916efe13 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -276,7 +276,7 @@ .2byte SPECIAL_\function .endm - @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific + @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific @ commands and specials. Calling ScriptContext_Enable for instance will allow execution to continue. .macro waitstate .byte 0x27 @@ -985,7 +985,7 @@ .endm @ Gives the player a Pokémon of the specified species and level, holding the specified item. The trailing 0s are unused parameters. - @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. + @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. .macro givemon species:req, level:req, item=ITEM_NONE .byte 0x79 .2byte \species @@ -997,7 +997,7 @@ .endm @ Gives the player an Egg of the specified species. - @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. + @ VAR_RESULT will be set to MON_GIVEN_TO_PARTY, MON_GIVEN_TO_PC, or MON_CANT_GIVE depending on the outcome. .macro giveegg species:req .byte 0x7a .2byte \species @@ -1415,7 +1415,7 @@ .2byte \out .endm - @ Gives 'count' coins to the player, up to a total of MAX_COINS. + @ Gives 'count' coins to the player, up to a total of MAX_COINS. @ If the player already has MAX_COINS then VAR_RESULT is set to TRUE, otherwise it is set to FALSE. .macro addcoins count:req .byte 0xb4 @@ -1887,7 +1887,7 @@ @ Gives 'amount' of the specified 'item' to the player and prints a message with fanfare. @ If the player doesn't have space for all the items then as many are added as possible, the - @ message indicates there is no room, and VAR_RESULT is set to FALSE. + @ message indicates there is no room, and VAR_RESULT is set to FALSE. @ Otherwise VAR_RESULT is set to TRUE, and the message indicates they have received the item(s). .macro giveitem item:req, amount=1 setorcopyvar VAR_0x8000, \item diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s index c776c25327..df6cf1b6f3 100644 --- a/data/battle_ai_scripts.s +++ b/data/battle_ai_scripts.s @@ -1909,7 +1909,7 @@ AI_CV_Protect4: if_random_less_than 128, AI_CV_Protect_End score -1 goto AI_CV_Protect_End - + AI_CV_Protect3: get_last_used_bank_move AI_TARGET get_move_effect_from_result diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 39cdafceea..7e99911b19 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -15,7 +15,7 @@ .include "constants/constants.inc" .section script_data, "aw", %progbits - + .align 2 gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectHit @ EFFECT_HIT @@ -2826,7 +2826,7 @@ BattleScript_GiveExp:: setbyte sGIVEEXP_STATE, 0 getexp BS_TARGET end2 - + BattleScript_HandleFaintedMon:: checkteamslost BattleScript_LinkHandleFaintedMonMultiple jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd @@ -4046,7 +4046,7 @@ BattleScript_IntimidatePrevented: printstring STRINGID_PREVENTEDFROMWORKING waitmessage B_WAIT_TIME_LONG goto BattleScript_IntimidateActivatesLoopIncrement - + BattleScript_DroughtActivates:: pause B_WAIT_TIME_SHORT printstring STRINGID_PKMNSXINTENSIFIEDSUN diff --git a/data/scripts/new_game.inc b/data/scripts/new_game.inc index 7c5c3fc7de..e9c8dd8d56 100644 --- a/data/scripts/new_game.inc +++ b/data/scripts/new_game.inc @@ -38,7 +38,7 @@ EventScript_ResetAllBerries:: setberrytree BERRY_TREE_ROUTE_117_WEPEAR_3, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES setberrytree BERRY_TREE_ROUTE_117_WEPEAR_2, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES setberrytree BERRY_TREE_ROUTE_117_WEPEAR_1, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES - + @ Route 112 setberrytree BERRY_TREE_ROUTE_112_RAWST_2, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES setberrytree BERRY_TREE_ROUTE_112_PECHA_2, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES diff --git a/data/scripts/roulette.inc b/data/scripts/roulette.inc index 7163a449aa..fcb09bef27 100644 --- a/data/scripts/roulette.inc +++ b/data/scripts/roulette.inc @@ -22,7 +22,7 @@ Roulette_EventScript_Play:: special PlayRoulette waitstate end - + Roulette_Text_PlayMinimumWagerIsX:: .string "The minimum wager at this table\n" .string "is {STR_VAR_1}. Do you want to play?$" diff --git a/docs/legacy_WSL1_INSTALL.md b/docs/legacy_WSL1_INSTALL.md index b9840d1c82..7d40960f3b 100644 --- a/docs/legacy_WSL1_INSTALL.md +++ b/docs/legacy_WSL1_INSTALL.md @@ -17,8 +17,8 @@ cd /mnt/c/Users//Downloads ``` - > Note 1: The Windows C:\ drive is called /mnt/c/ in WSL. - > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users//Downloads folder"`. + > Note 1: The Windows C:\ drive is called /mnt/c/ in WSL. + > Note 2: If the path has spaces, then the path must be wrapped with quotations, e.g. `cd "/mnt/c/users//Downloads folder"`. > Note 3: Windows path names are case-insensitive so adhering to capitalization isn't needed 4. Once the directory has been changed to the folder containing the devkitPro pacman package, run the following commands to install devkitARM. diff --git a/gflib/text.c b/gflib/text.c index c7efdccce3..e7a7d5957b 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -73,7 +73,7 @@ static const u8 sDarkDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow_alt static const u8 sUnusedFRLGBlankedDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_blanked_down_arrow.4bpp"); static const u8 sUnusedFRLGDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_down_arrow.4bpp"); static const u8 sDownArrowYCoords[] = { 0, 1, 2, 1 }; -static const u8 sWindowVerticalScrollSpeeds[] = { +static const u8 sWindowVerticalScrollSpeeds[] = { [OPTIONS_TEXT_SPEED_SLOW] = 1, [OPTIONS_TEXT_SPEED_MID] = 2, [OPTIONS_TEXT_SPEED_FAST] = 4, @@ -299,7 +299,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *printerTemplate, u8 speed, voi else { sTempTextPrinter.textSpeed = 0; - + // Render all text (up to limit) at once for (j = 0; j < 0x400; ++j) { diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 742f7d1b86..6f4d1e4227 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -93,35 +93,35 @@ $(TILESETGFXDIR)/secondary/sootopolis/tiles.4bpp: %.4bpp: %.png SOOTOPOLISANIMDIR := $(TILESETGFXDIR)/secondary/sootopolis/anim $(SOOTOPOLISANIMDIR)/stormy_water/0.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/0_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/0_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/0_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/1.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/1_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/1_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/1_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/2.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/2_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/2_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/2_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/3.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/3_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/3_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/3_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/4.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/4_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/4_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/4_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/5.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/5_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/5_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/5_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/6.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/6_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/6_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/6_groudon.4bpp @cat $^ >$@ $(SOOTOPOLISANIMDIR)/stormy_water/7.4bpp: $(SOOTOPOLISANIMDIR)/stormy_water/7_kyogre.4bpp \ - $(SOOTOPOLISANIMDIR)/stormy_water/7_groudon.4bpp + $(SOOTOPOLISANIMDIR)/stormy_water/7_groudon.4bpp @cat $^ >$@ $(TILESETGFXDIR)/secondary/battle_frontier_outside_west/tiles.4bpp: %.4bpp: %.png @@ -671,7 +671,7 @@ $(OBJEVENTGFXDIR)/pics/effects/unknown_4F6D38/0.4bpp: %.4bpp: %.png $(INTERFACEGFXDIR)/selector_outline.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 8 -Wnum_tiles - + $(BATTRANSGFXDIR)/frontier_logo_center.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 43 -Wnum_tiles @@ -699,7 +699,7 @@ $(PKNAVGFXDIR)/header.4bpp: %.4bpp: %.png $(PKNAVGFXDIR)/device_outline.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 53 -Wnum_tiles - + $(PKNAVGFXDIR)/match_call/ui.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 13 -Wnum_tiles diff --git a/include/battle.h b/include/battle.h index 5cc5521859..e779dee3df 100644 --- a/include/battle.h +++ b/include/battle.h @@ -473,7 +473,7 @@ struct BattleStruct #define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) -// NOTE: The members of this struct have hard-coded offsets +// NOTE: The members of this struct have hard-coded offsets // in include/constants/battle_script_commands.h struct BattleScripting { diff --git a/include/global.h b/include/global.h index b1fd21d8b1..6e2cfa9b80 100644 --- a/include/global.h +++ b/include/global.h @@ -878,7 +878,7 @@ struct MysteryGiftSave struct WonderCardMetadata cardMetadata; u16 questionnaireWords[NUM_QUESTIONNAIRE_WORDS]; struct WonderNewsMetadata newsMetadata; - u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades + u32 trainerIds[2][5]; // Saved ids for 10 trainers, 5 each for battles and trades }; // 0x36C 0x3598 // For external event data storage. The majority of these may have never been used. diff --git a/include/link_rfu.h b/include/link_rfu.h index 673b19ff90..1e434e8303 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -97,12 +97,12 @@ struct RfuGameCompatibilityData // wireless play (the kind the Pokémon games use) the gname data can be used for // anything the developers want. This struct is what GF decided to use it for. // It can be up to 13 bytes in size (RFU_GAME_NAME_LENGTH). -// The player's name is sent separately as the username ("uname"), and does not +// The player's name is sent separately as the username ("uname"), and does not // use a struct (gHostRfuUsername). struct __attribute__((packed, aligned(2))) RfuGameData { struct RfuGameCompatibilityData compatibility; - u8 partnerInfo[RFU_CHILD_MAX]; + u8 partnerInfo[RFU_CHILD_MAX]; u16 tradeSpecies:10; u16 tradeType:6; u8 activity:7; @@ -118,7 +118,7 @@ struct __attribute__((packed, aligned(2))) RfuGameData // Bits 0-2 are a shortened trainerId // Bit 3 is the player's gender // Bits 4-6 are unknown/unused -// Bit 7 is an 'active' flag +// Bit 7 is an 'active' flag #define PINFO_TID_MASK 0x7 #define PINFO_GENDER_SHIFT 3 #define PINFO_ACTIVE_FLAG (1 << 7) diff --git a/include/pokenav.h b/include/pokenav.h index 959998383f..c6a8bb253e 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -116,7 +116,7 @@ enum #define POKENAV_MENU_IDS_START 100000 enum { - POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons + POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons POKENAV_MAIN_MENU_CURSOR_ON_MAP, POKENAV_CONDITION_MENU, // The first Condition screen where the player selects Party or Search POKENAV_CONDITION_SEARCH_MENU, // The Condition search menu where the player selects a search parameter diff --git a/include/union_room.h b/include/union_room.h index acff4b5929..514a159850 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -7,7 +7,7 @@ // In the Union Room the player is only ever connected to ≤ 4 other players. // However, there can be up to MAX_UNION_ROOM_LEADERS (8) object events to -// represent leaders of recently discovered link groups, and each of those groups +// represent leaders of recently discovered link groups, and each of those groups // may have up to MAX_RFU_PLAYERS (5) players in it including the leader. // These players are represented on-screen by NPC sprites drawn around the leader. // Thus there can be 40 sprites of other players on-screen, in 8 groups of 5. @@ -16,7 +16,7 @@ // The maximum number of recently connected players that can be tracked. // Note that this is significantly less than NUM_UNION_ROOM_SPRITES, i.e. not // every player that can be shown in the Union Room can be tracked at once. -// Information such as a group member's gender can instead be read from partnerInfo +// Information such as a group member's gender can instead be read from partnerInfo // of the leader's RfuGameData by tracking at least all of the group leaders. #define MAX_RFU_PLAYER_LIST_SIZE 16 diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 25817c0740..a5d4659a9d 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -495,7 +495,7 @@ static void TranslateSpriteInLissajousCurve(struct Sprite *sprite) sprite->y2 = Cos(sprite->sCirclePosY, sprite->sAmplitude); sprite->sCirclePosX += sprite->sCircleSpeedX; sprite->sCirclePosY += sprite->sCircleSpeedY; - + if (sprite->sCirclePosX >= 0x100) sprite->sCirclePosX -= 0x100; else if (sprite->sCirclePosX < 0) @@ -2429,7 +2429,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) dest = (task->tPaletteNum + 16) * 16; src = (gSprites[task->tBattlerSpriteId].oam.paletteNum + 0x10) * 0x10; - + // Set trace's priority based on battler's subpriority task->tPriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (task->tPriority == 20 || task->tPriority == 40) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index d2235027c7..fb5a7649a5 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6368,7 +6368,7 @@ static void Cmd_various(void) break; case VARIOUS_ARENA_JUDGMENT_WINDOW: i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]); - + // BattleArena_ShowJudgmentWindow's last state was an intermediate step. // Return without advancing the current instruction so that it will be called again. if (i == ARENA_RESULT_RUNNING) diff --git a/src/battle_tent.c b/src/battle_tent.c index dba9e6e8a0..e51ac38a5a 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -390,7 +390,7 @@ static void GenerateOpponentMons(void) while (i != FRONTIER_PARTY_SIZE) { sRandMonId = monSet[Random() % numMons]; - + // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { diff --git a/src/battle_transition.c b/src/battle_transition.c index bc289efa7f..3675421ee1 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -2434,7 +2434,7 @@ static bool8 Mugshot_WaitStartPlayerSlide(struct Task *task) { sTransitionData->BG0HOFS_Lower -= 8; sTransitionData->BG0HOFS_Upper += 8; - + // Start player's slide in once the opponent is finished if (IsTrainerPicSlideDone(task->tOpponentSpriteId)) { @@ -2770,7 +2770,7 @@ static bool8 Slice_Main(struct Task *task) { u16 *storeLoc1 = &gScanlineEffectRegBuffers[0][i]; u16 *storeLoc2 = &gScanlineEffectRegBuffers[0][i + DISPLAY_HEIGHT]; - + // Alternate rows if (i % 2) { @@ -3251,7 +3251,7 @@ static bool8 RectangularSpiral_Main(struct Task *task) // The line moved to a new position, draw the tile. done = FALSE; position = sRectangularSpiralLines[j].position; - + // Invert position for the two lines that start at the bottom. if ((j % 2) == 1) position = 637 - position; @@ -3281,7 +3281,7 @@ static bool8 RectangularSpiral_End(struct Task *task) static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, struct RectangularSpiralLine *line) { const s16 *moveData = moveDataTable[line->state]; - + // Has spiral finished? // Note that most move data arrays endsin SPIRAL_END but it is // only ever reached on the final array of spiraling outward. @@ -3294,9 +3294,9 @@ static bool16 UpdateRectangularSpiralLine(const s16 * const *moveDataTable, stru sDebug_RectangularSpiralData = moveData[2]; sDebug_RectangularSpiralData = moveData[3]; - // Note that for the two lines originating at the bottom the + // Note that for the two lines originating at the bottom the // position is inverted, so the directions are flipped. - // i.e. position += 1 is right for the top lines and left + // i.e. position += 1 is right for the top lines and left // for their inverted partners on the bottom. switch (moveData[0]) { @@ -4170,13 +4170,13 @@ static void InitBlackWipe(s16 *data, s16 startX, s16 startY, s16 endX, s16 endY, static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) { u8 numFinished; - + if (tWipeXDist > tWipeYDist) { // X has further to move, move it first tWipeCurrX += tWipeXMove; - // If it has been far enough since Y's + // If it has been far enough since Y's // last move then move it too tWipeTemp += tWipeYDist; if (tWipeTemp > tWipeXDist) @@ -4190,7 +4190,7 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) // Y has further to move, move it first tWipeCurrY += tWipeYMove; - // If it has been far enough since X's + // If it has been far enough since X's // last move then move it too tWipeTemp += tWipeXDist; if (tWipeTemp > tWipeYDist) @@ -4201,9 +4201,9 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) } numFinished = 0; - + // Has X coord reached end? - if ((tWipeXMove > 0 && tWipeCurrX >= tWipeEndX) + if ((tWipeXMove > 0 && tWipeCurrX >= tWipeEndX) || (tWipeXMove < 0 && tWipeCurrX <= tWipeEndX)) { numFinished++; @@ -4212,7 +4212,7 @@ static bool8 UpdateBlackWipe(s16 *data, bool8 xExact, bool8 yExact) } // Has Y coord reached end? - if ((tWipeYMove > 0 && tWipeCurrY >= tWipeEndY) + if ((tWipeYMove > 0 && tWipeCurrY >= tWipeEndY) || (tWipeYMove < 0 && tWipeCurrY <= tWipeEndY)) { numFinished++; diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 938b6bfc55..d19adf6f0b 100755 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -1147,7 +1147,7 @@ static const union AnimCmd *const sAnimTable_AshPuff[] = sAnim_AshPuff, }; -const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff = +const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff = { .tileTag = TAG_NONE, .paletteTag = FLDEFF_PAL_TAG_ASH, diff --git a/src/decoration.c b/src/decoration.c index cc740f189e..c5c7c02c34 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1211,7 +1211,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, { x = mapX + i; attributes = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + gDecorations[decoration].tiles[j * decWidth + i]); - if (MetatileBehavior_IsSecretBaseImpassable(attributes & METATILE_ATTR_BEHAVIOR_MASK) == TRUE + if (MetatileBehavior_IsSecretBaseImpassable(attributes & METATILE_ATTR_BEHAVIOR_MASK) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (attributes >> METATILE_ATTR_LAYER_SHIFT) != METATILE_LAYER_TYPE_NORMAL)) impassableFlag = MAPGRID_COLLISION_MASK; else @@ -1482,7 +1482,7 @@ static bool8 IsSecretBaseTrainerSpot(u8 behaviorAt, u16 layerType) // Can't place decoration where the player was standing when they interacted with the PC static bool8 IsntInitialPosition(u8 taskId, s16 x, s16 y, u16 layerType) { - if (x == gTasks[taskId].tInitialX + MAP_OFFSET + if (x == gTasks[taskId].tInitialX + MAP_OFFSET && y == gTasks[taskId].tInitialY + MAP_OFFSET && layerType != METATILE_LAYER_TYPE_NORMAL) return FALSE; diff --git a/src/ereader_screen.c b/src/ereader_screen.c index 3baff84a85..b6bf7133a0 100755 --- a/src/ereader_screen.c +++ b/src/ereader_screen.c @@ -112,7 +112,7 @@ static bool32 ValidateEReaderConnection(void) REG_IME = 0; *(u64 *)handshakes = *(u64 *)gLink.handshakeBuffer; REG_IME = backupIME; - + // Validate that we are player 1, the EReader is player 2, // and that players 3 and 4 are empty. if (handshakes[0] == SLAVE_HANDSHAKE && handshakes[1] == EREADER_HANDSHAKE @@ -154,8 +154,8 @@ enum { static u32 TryReceiveCard(u8 *state, u16 *timer) { - if (*state >= RECV_STATE_EXCHANGE - && *state <= RECV_STATE_WAIT_DISCONNECT + if (*state >= RECV_STATE_EXCHANGE + && *state <= RECV_STATE_WAIT_DISCONNECT && HasLinkErrorOccurred()) { // Return error status if an error occurs diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 87249af010..a63eeb22b8 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -2623,7 +2623,7 @@ bool8 ObjectEventIsTrainerAndCloseToPlayer(struct ObjectEvent *objectEvent) minY = objY - objectEvent->trainerRange_berryTreeId; maxX = objX + objectEvent->trainerRange_berryTreeId; maxY = objY + objectEvent->trainerRange_berryTreeId; - if (minX > playerX || maxX < playerX + if (minX > playerX || maxX < playerX || minY > playerY || maxY < playerY) return FALSE; diff --git a/src/field_tasks.c b/src/field_tasks.c index 099014a4d4..dec5cba800 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -251,7 +251,7 @@ static const struct PacifidlogMetatileOffsets *GetPacifidlogBridgeMetatileOffset static void TrySetPacifidlogBridgeMetatiles(const struct PacifidlogMetatileOffsets *offsets, s16 x, s16 y, bool32 redrawMap) { offsets = GetPacifidlogBridgeMetatileOffsets(offsets, MapGridGetMetatileBehaviorAt(x, y)); - + // If offsets is NULL, position is not a log (don't set it) if (offsets) { @@ -301,7 +301,7 @@ static bool32 ShouldRaisePacifidlogLogs(s16 newX, s16 newY, s16 oldX, s16 oldY) } else if (MetatileBehavior_IsPacifidlogHorizontalLogLeft(oldBehavior)) { - // Still on same one if moved from left to right + // Still on same one if moved from left to right if (newX > oldX) return FALSE; } @@ -340,13 +340,13 @@ static bool32 ShouldSinkPacifidlogLogs(s16 newX, s16 newY, s16 oldX, s16 oldY) } else if (MetatileBehavior_IsPacifidlogHorizontalLogLeft(newBehavior)) { - // Still on same one if moved from right to left + // Still on same one if moved from right to left if (newX < oldX) return FALSE; } else if (MetatileBehavior_IsPacifidlogHorizontalLogRight(newBehavior)) { - // Still on same one if moved from left to right + // Still on same one if moved from left to right if (newX > oldX) return FALSE; } @@ -371,7 +371,7 @@ static void PacifidlogBridgePerStepCallback(u8 taskId) case 0: tPrevX = x; tPrevY = y; - + // If player is already standing on a log when the callback // is set then immediately set it to submerged TrySetLogBridgeFullySubmerged(x, y, TRUE); @@ -424,7 +424,7 @@ static void PacifidlogBridgePerStepCallback(u8 taskId) { // If player's current position is a log submerge it fully. TrySetLogBridgeFullySubmerged(x, y, TRUE); - + // Player's previous position is not the other end of a log // they're standing on, try to raise their previous position. if (tToRaiseX != -1 && tToRaiseY != -1) @@ -499,7 +499,7 @@ static void FortreeBridgePerStepCallback(u8 taskId) case 0: tPrevX = x; tPrevY = y; - + // If player is already on bridge when callback is set then lower it immediately. if (MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y))) { @@ -518,7 +518,7 @@ static void FortreeBridgePerStepCallback(u8 taskId) isFortreeBridgeCur = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y)); isFortreeBridgePrev = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(prevX, prevY)); - + // Make sure player isn't below bridge elevation = PlayerGetElevation(); onBridgeElevation = FALSE; @@ -672,7 +672,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId) // End if player hasn't moved if (x == tPrevX && y == tPrevY) return; - + tPrevX = x; tPrevY = y; tileBehavior = MapGridGetMetatileBehaviorAt(x, y); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 437cec2fdb..4730c74fde 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -61,7 +61,7 @@ struct SioInfo u8 filler[92]; }; -// Struct is mostly empty, presumably because usage of +// Struct is mostly empty, presumably because usage of // its fields was largely removed before release struct RfuDebug { @@ -1643,7 +1643,7 @@ bool32 RfuTryDisconnectLeavingChildren(void) { u8 childrenLeaving = 0; s32 i; - + // Check all children, get those waiting to be disconnected for (i = 0; i < RFU_CHILD_MAX; i++) { @@ -2123,7 +2123,7 @@ void SetUnionRoomChatPlayerData(u32 numPlayers) // Only trainerId is shifted by the number of children, so the active flag and gender // are only ever set for the first child partnerInfo |= ((PINFO_ACTIVE_FLAG - | ((gLinkPlayers[gRfu.linkPlayerIdx[i]].gender & 1) << PINFO_GENDER_SHIFT) + | ((gLinkPlayers[gRfu.linkPlayerIdx[i]].gender & 1) << PINFO_GENDER_SHIFT) | (gLinkPlayers[gRfu.linkPlayerIdx[i]].trainerId & PINFO_TID_MASK)) << (numConnectedChildren * 8)); numConnectedChildren++; if (numConnectedChildren == numPlayers - 1) @@ -2477,7 +2477,7 @@ static void LinkManagerCB_UnionRoom(u8 msg, u8 paramCount) rfu_LMAN_stopManager(FALSE); } - if (gRfuLinkStatus->parentChild == MODE_NEUTRAL + if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && !lman.pcswitch_flag && FuncIsActiveTask(Task_UnionRoomListen) == TRUE) gRfu.state = RFUSTATE_UR_CONNECT; @@ -2816,7 +2816,7 @@ static bool32 IsPartnerActivityIncompatible(s16 activity, struct RfuGameData *pa } else if (activity == (ACTIVITY_TRADE | IN_UNION_ROOM)) { - // Verify that the trade offered hasn't changed + // Verify that the trade offered hasn't changed struct RfuGameData *original = &gRfu.parent; if (original->tradeSpecies == SPECIES_EGG) { diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 1e1fe5b347..0825daea2c 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -824,7 +824,7 @@ void UpdateWirelessStatusIndicatorSprite(void) struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId]; u8 signalStrength = RFU_LINK_ICON_LEVEL4_MAX; u8 i = 0; - + // Get weakest signal strength if (gRfuLinkStatus->parentChild == MODE_PARENT) { diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 72d3ac632f..e35a5b29ac 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -795,7 +795,7 @@ u8 MetatileBehavior_GetBridgeType(u8 metatileBehavior) && metatileBehavior <= MB_BRIDGE_OVER_POND_HIGH) return metatileBehavior - MB_BRIDGE_OVER_OCEAN; - if (metatileBehavior >= MB_BRIDGE_OVER_POND_MED_EDGE_1 + if (metatileBehavior >= MB_BRIDGE_OVER_POND_MED_EDGE_1 && metatileBehavior <= MB_BRIDGE_OVER_POND_MED_EDGE_2) return BRIDGE_TYPE_POND_MED; diff --git a/src/mystery_gift.c b/src/mystery_gift.c index 72fc2b3774..c4e63bfbb8 100755 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -171,8 +171,8 @@ static bool32 ValidateWonderCard(const struct WonderCard *card) return FALSE; if (card->type >= CARD_TYPE_COUNT) return FALSE; - if (!(card->sendType == SEND_TYPE_DISALLOWED - || card->sendType == SEND_TYPE_ALLOWED + if (!(card->sendType == SEND_TYPE_DISALLOWED + || card->sendType == SEND_TYPE_ALLOWED || card->sendType == SEND_TYPE_ALLOWED_ALWAYS)) return FALSE; if (card->bgType >= NUM_WONDER_BGS) @@ -429,7 +429,7 @@ u32 MysteryGift_CompareCardFlags(const u16 *flagId, const struct MysteryGiftLink u32 MysteryGift_CheckStamps(const u16 *stamp, const struct MysteryGiftLinkGameData *data, const void *unused) { int stampsMissing = data->maxStamps - GetNumStampsInMetadata(&data->cardMetadata, data->maxStamps); - + // Has full stamp card? if (stampsMissing == 0) return 1; @@ -598,7 +598,7 @@ void MysteryGift_TryIncrementStat(u32 stat, u32 trainerId) switch (stat) { case CARD_STAT_NUM_TRADES: - IncrementCardStatForNewTrainer(CARD_STAT_NUM_TRADES, + IncrementCardStatForNewTrainer(CARD_STAT_NUM_TRADES, trainerId, gSaveBlock1Ptr->mysteryGift.trainerIds[1], ARRAY_COUNT(gSaveBlock1Ptr->mysteryGift.trainerIds[1])); diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 92e544a27b..9e4796bb20 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -1240,7 +1240,7 @@ static void Task_MysteryGift(u8 taskId) } else if (gSpecialVar_Result == LINKUP_FAILED) { - // Link failed, return to link start menu + // Link failed, return to link start menu ClearScreenInBg0(TRUE); data->state = MG_STATE_SOURCE_PROMPT; } diff --git a/src/mystery_gift_view.c b/src/mystery_gift_view.c index 384e8ef74b..b059b183c8 100644 --- a/src/mystery_gift_view.c +++ b/src/mystery_gift_view.c @@ -340,7 +340,7 @@ static void BufferCardText(void) if (sWonderCardData->card.idNumber > 999999) sWonderCardData->card.idNumber = 999999; ConvertIntToDecimalStringN(sWonderCardData->idNumberText, sWonderCardData->card.idNumber, STR_CONV_MODE_LEFT_ALIGN, 6); - + // Copy body text for (i = 0; i < WONDER_CARD_BODY_TEXT_LINES; i++) { @@ -364,12 +364,12 @@ static void BufferCardText(void) break; case CARD_TYPE_LINK_STAT: sWonderCardData->giftText[0] = EOS; - + // Load stats stats[0] = sWonderCardData->cardMetadata.battlesWon < MAX_WONDER_CARD_STAT ? sWonderCardData->cardMetadata.battlesWon : MAX_WONDER_CARD_STAT; stats[1] = sWonderCardData->cardMetadata.battlesLost < MAX_WONDER_CARD_STAT ? sWonderCardData->cardMetadata.battlesLost : MAX_WONDER_CARD_STAT; stats[2] = sWonderCardData->cardMetadata.numTrades < MAX_WONDER_CARD_STAT ? sWonderCardData->cardMetadata.numTrades : MAX_WONDER_CARD_STAT; - + // Init stat text arrays for (i = 0; i < ARRAY_COUNT(sWonderCardData->statTextData); i++) { @@ -446,7 +446,7 @@ static void DrawCardWindow(u8 whichWindow) sCard_FooterTextOffsets[sWonderCardData->card.type], sCard_TextColorTable[sWonderCardData->gfx->footerTextPal], 0, sWonderCardData->footerLine1Text); - + // Print footer line 2 if (sWonderCardData->card.type != CARD_TYPE_LINK_STAT) { @@ -486,7 +486,7 @@ static void CreateCardSprites(void) { u8 i = 0; sWonderCardData->monIconSpriteId = SPRITE_NONE; - + // Create icon sprite if (sWonderCardData->cardMetadata.iconSpecies != SPECIES_NONE) { @@ -505,7 +505,7 @@ static void CreateCardSprites(void) sWonderCardData->stampSpriteIds[i][1] = SPRITE_NONE; sWonderCardData->stampSpriteIds[i][0] = CreateSprite(&sSpriteTemplate_StampShadow, 216 - 32 * i, 144, 8); if (sWonderCardData->cardMetadata.stampData[STAMP_SPECIES][i] != SPECIES_NONE) - sWonderCardData->stampSpriteIds[i][1] = CreateMonIconNoPersonality(GetIconSpeciesNoPersonality(sWonderCardData->cardMetadata.stampData[STAMP_SPECIES][i]), + sWonderCardData->stampSpriteIds[i][1] = CreateMonIconNoPersonality(GetIconSpeciesNoPersonality(sWonderCardData->cardMetadata.stampData[STAMP_SPECIES][i]), SpriteCallbackDummy, 216 - 32 * i, 136, 0, 0); @@ -520,7 +520,7 @@ static void DestroyCardSprites(void) // Destroy icon sprite if (sWonderCardData->monIconSpriteId != SPRITE_NONE) FreeAndDestroyMonIconSprite(&gSprites[sWonderCardData->monIconSpriteId]); - + // Destroy stamp sprites if (sWonderCardData->card.maxStamps != 0 && sWonderCardData->card.type == CARD_TYPE_STAMP) { @@ -865,7 +865,7 @@ u32 WonderNews_GetInput(u16 input) static void BufferNewsText(void) { u8 i = 0; - + // Copy title text memcpy(sWonderNewsData->titleText, sWonderNewsData->news.titleText, WONDER_NEWS_TEXT_LENGTH); sWonderNewsData->titleText[WONDER_NEWS_TEXT_LENGTH] = EOS; @@ -896,7 +896,7 @@ static void DrawNewsWindows(void) if (x < 0) x = 0; AddTextPrinterParameterized3(sWonderNewsData->windowIds[NEWS_WIN_TITLE], FONT_SHORT_COPY_1, x, 6, sNews_TextColorTable[sWonderNewsData->gfx->titleTextPal], 0, sWonderNewsData->titleText); - + // Print body text for (; i < WONDER_NEWS_BODY_TEXT_LINES; i++) AddTextPrinterParameterized3(sWonderNewsData->windowIds[NEWS_WIN_BODY], FONT_SHORT_COPY_1, 0, diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index dde86f1557..01cbacb447 100755 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -560,7 +560,7 @@ static void DoAreaGlow(void) if (sPokedexAreaScreen->markerTimer > 12) { sPokedexAreaScreen->markerTimer = 0; - + // Flash the marker // With a max of 4, the marker will disappear twice sPokedexAreaScreen->markerFlashCounter++; @@ -737,7 +737,7 @@ static void CreateAreaMarkerSprites(void) static void DestroyAreaScreenSprites(void) { u16 i; - + // Destroy area marker sprites FreeSpriteTilesByTag(TAG_AREA_MARKER); FreeSpritePaletteByTag(TAG_AREA_MARKER); @@ -772,7 +772,7 @@ static void CreateAreaUnknownSprites(void) if (sPokedexAreaScreen->numOverworldAreas || sPokedexAreaScreen->numSpecialAreas) { - // The current species is present on the map, don't create any "Area Unknown" sprites + // The current species is present on the map, don't create any "Area Unknown" sprites for (i = 0; i < ARRAY_COUNT(sPokedexAreaScreen->areaUnknownSprites); i++) sPokedexAreaScreen->areaUnknownSprites[i] = NULL; } diff --git a/src/pokemon.c b/src/pokemon.c index e16bc64a64..b65f97bd85 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1848,7 +1848,7 @@ static const u8 sMonAnimationDelayTable[NUM_SPECIES - 1] = #define PP_UP_SHIFTS_INV(val) (u8)~(val), (u8)~((val) << 2), (u8)~((val) << 4), (u8)~((val) << 6) // PP Up bonuses are stored for a Pokémon as a single byte. -// There are 2 bits (a value 0-3) for each move slot that +// There are 2 bits (a value 0-3) for each move slot that // represent how many PP Ups have been applied. // The following arrays take a move slot id and return: // gPPUpGetMask - A mask to get the number of PP Ups applied to that move slot @@ -3119,7 +3119,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de spAttack = attacker->spAttack; spDefense = defender->spDefense; - // Get attacker hold item info + // Get attacker hold item info if (attacker->item == ITEM_ENIGMA_BERRY) { attackerHoldEffect = gEnigmaBerries[battlerIdAtk].holdEffect; @@ -5204,7 +5204,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov case 4: // ITEM5_PP_MAX dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); temp2 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); - + // Check if 3 PP Ups have been applied already, and that the move has a total PP of at least 5 (excludes Sketch) if (dataUnsigned < 3 && temp2 >= 5) { @@ -6918,7 +6918,7 @@ static bool8 ShouldSkipFriendshipChange(void) // Only the 'default' mode (MON_SPR_GFX_MODE_NORMAL) is used, which is set // up to allocate 4 sprites using the battler sprite templates (gBattlerSpriteTemplates). // MON_SPR_GFX_MODE_BATTLE is identical but never used. -// MON_SPR_GFX_MODE_FULL_PARTY is set up to allocate 7 sprites (party + trainer?) +// MON_SPR_GFX_MODE_FULL_PARTY is set up to allocate 7 sprites (party + trainer?) // using a generic 64x64 template, and is also never used. // Between the unnecessarily large sizes below, a mistake allocating the spritePointers @@ -6980,7 +6980,7 @@ struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 managerId, u8 mode) gfx->dataSize = 1; gfx->mode = MON_SPR_GFX_MODE_FULL_PARTY; break; - // case MON_SPR_GFX_MODE_BATTLE: + // case MON_SPR_GFX_MODE_BATTLE: case MON_SPR_GFX_MODE_NORMAL: default: gfx->numSprites = MAX_BATTLERS_COUNT; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index aa55e42c70..74e1da2cc6 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3879,7 +3879,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) summary->species2, summary->pid); else - HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], + HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], summary->species2, summary->pid); @@ -3891,7 +3891,7 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], - summary->species2, + summary->species2, summary->pid); else HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], diff --git a/src/pokenav_menu_handler_gfx.c b/src/pokenav_menu_handler_gfx.c index bc55fa7515..ec8d67cbe2 100644 --- a/src/pokenav_menu_handler_gfx.c +++ b/src/pokenav_menu_handler_gfx.c @@ -904,7 +904,7 @@ static void StartOptionAnimations_Enter(void) // Not selected, set default position x = OPTION_DEFAULT_X; } - + // Slide new options in StartOptionSlide(gfx->iconSprites[i], OPTION_EXIT_X, x, 12); SetOptionInvisibility(gfx->iconSprites[i], FALSE); diff --git a/src/record_mixing.c b/src/record_mixing.c index b03d7be2f3..c899db25e7 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -879,7 +879,7 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size for (i = 0; i < linkPlayerCount; i++) { mixMail = (void *)records + i * recordSize; - + // Count number of players that have at least // one daycare Pokémon with no held item if (canHoldItem[i][0] == TRUE || canHoldItem[i][1] == TRUE) @@ -945,7 +945,7 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size case 4: // 4 players can swap, select which 2 pairings will swap ptr = idxs; - + // Swap pair 1 playerSlot1 = sDaycareMailSwapIds_4Player[tableId][0]; playerSlot2 = sDaycareMailSwapIds_4Player[tableId][1]; diff --git a/src/roamer.c b/src/roamer.c index c17ec490c8..e9dc72a993 100644 --- a/src/roamer.c +++ b/src/roamer.c @@ -127,7 +127,7 @@ void UpdateLocationHistoryForRoamer(void) void RoamerMoveToOtherLocationSet(void) { u8 mapNum = 0; - + if (!ROAMER->active) return; @@ -170,8 +170,8 @@ void RoamerMove(void) // Choose a new map (excluding the first) within this set // Also exclude a map if the roamer was there 2 moves ago mapNum = sRoamerLocations[locSet][(Random() % (NUM_LOCATIONS_PER_SET - 1)) + 1]; - if (!(sLocationHistory[2][MAP_GRP] == ROAMER_MAP_GROUP - && sLocationHistory[2][MAP_NUM] == mapNum) + if (!(sLocationHistory[2][MAP_GRP] == ROAMER_MAP_GROUP + && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != MAP_NUM(UNDEFINED)) break; } diff --git a/src/rom_header.s b/src/rom_header.s index c5fa5ddf40..75edcebd87 100644 --- a/src/rom_header.s +++ b/src/rom_header.s @@ -1,5 +1,5 @@ @ Note: ROM header data is empty space here. -@ It's populated by gbafix using data provided in the Makefile. +@ It's populated by gbafix using data provided in the Makefile. .global Start Start: diff --git a/src/save.c b/src/save.c index e7c91580e5..765fb045c3 100644 --- a/src/save.c +++ b/src/save.c @@ -913,7 +913,7 @@ u16 GetSaveBlocksPointersBaseOffset(void) for (i = 0; i < NUM_SECTORS_PER_SLOT; i++) { ReadFlashSector(i + slotOffset, gReadWriteSector); - + // Base offset for SaveBlock2 is calculated using the trainer id if (gReadWriteSector->id == SECTOR_ID_SAVEBLOCK2) return sector->data[offsetof(struct SaveBlock2, playerTrainerId[0])] + diff --git a/src/script.c b/src/script.c index 484f8e9662..c252c95f04 100644 --- a/src/script.c +++ b/src/script.c @@ -213,9 +213,9 @@ void ScriptContext_Init(void) sGlobalScriptContextStatus = CONTEXT_SHUTDOWN; } -// Runs the script until the script makes a wait* call, then returns true if -// there's more script to run, or false if the script has hit the end. -// This function also returns false if the context is finished +// Runs the script until the script makes a wait* call, then returns true if +// there's more script to run, or false if the script has hit the end. +// This function also returns false if the context is finished // or waiting (after a call to _Stop) bool8 ScriptContext_RunScript(void) { diff --git a/src/slot_machine.c b/src/slot_machine.c index dd2622e2be..3b82afde19 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1880,7 +1880,7 @@ static u8 TrySelectBias_Regular(void) { s16 rval = Random() & 0xff; s16 value = sBiasProbabilities_Regular[whichBias][sSlotMachine->machineId]; - + // Boost odds of BIAS_POWER if it's a lucky game. if (whichBias == 0 && sSlotMachine->luckyGame == TRUE) { @@ -3668,7 +3668,7 @@ static void ReelTime_CheckExplode(struct Task *task) if (sSlotMachine->reelTimeDraw) { if (sSlotMachine->reelTimeSpinsLeft <= task->tExplodeChecks) - task->tState++; // RT_TASK_LAND + task->tState++; // RT_TASK_LAND } else if (task->tExplodeChecks > 3) { @@ -5309,7 +5309,7 @@ static const u8 sSpecialDrawOdds[NUM_SLOT_MACHINE_IDS][MAX_BET] = { }; static const u8 sBiasProbabilities_Special[][NUM_SLOT_MACHINE_IDS] = { - { + { // Probabilities for BIAS_STRAIGHT_7 [SLOT_MACHINE_UNLUCKIEST] = 25, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5318,7 +5318,7 @@ static const u8 sBiasProbabilities_Special[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 40, [SLOT_MACHINE_LUCKIEST] = 50 }, - { + { // Probabilities for BIAS_REELTIME [SLOT_MACHINE_UNLUCKIEST] = 25, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5327,7 +5327,7 @@ static const u8 sBiasProbabilities_Special[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 35, [SLOT_MACHINE_LUCKIEST] = 35 }, - { + { // Probabilities for BIAS_MIXED_7 [SLOT_MACHINE_UNLUCKIEST] = 25, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5339,7 +5339,7 @@ static const u8 sBiasProbabilities_Special[][NUM_SLOT_MACHINE_IDS] = { }; static const u8 sBiasProbabilities_Regular[][NUM_SLOT_MACHINE_IDS] = { - { + { // Probabilities for BIAS_POWER [SLOT_MACHINE_UNLUCKIEST] = 20, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5348,7 +5348,7 @@ static const u8 sBiasProbabilities_Regular[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 25, [SLOT_MACHINE_LUCKIEST] = 25 }, - { + { // Probabilities for BIAS_AZURILL [SLOT_MACHINE_UNLUCKIEST] = 12, [SLOT_MACHINE_UNLUCKIER] = 15, @@ -5357,7 +5357,7 @@ static const u8 sBiasProbabilities_Regular[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 19, [SLOT_MACHINE_LUCKIEST] = 22 }, - { + { // Probabilities for BIAS_LOTAD [SLOT_MACHINE_UNLUCKIEST] = 25, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5366,7 +5366,7 @@ static const u8 sBiasProbabilities_Regular[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 30, [SLOT_MACHINE_LUCKIEST] = 40 }, - { + { // Probabilities for BIAS_CHERRY [SLOT_MACHINE_UNLUCKIEST] = 25, [SLOT_MACHINE_UNLUCKIER] = 25, @@ -5375,7 +5375,7 @@ static const u8 sBiasProbabilities_Regular[][NUM_SLOT_MACHINE_IDS] = { [SLOT_MACHINE_LUCKIER] = 15, [SLOT_MACHINE_LUCKIEST] = 15 }, - { + { // Probabilities for BIAS_REPLAY [SLOT_MACHINE_UNLUCKIEST] = 40, [SLOT_MACHINE_UNLUCKIER] = 40, diff --git a/src/sound.c b/src/sound.c index aa6fb32ee7..15ebee8312 100644 --- a/src/sound.c +++ b/src/sound.c @@ -377,7 +377,7 @@ void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode) u8 table; species--; - + // Set default values // May be overridden depending on mode. length = 140; diff --git a/src/trade.c b/src/trade.c index e24051e041..ba18e8d32c 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2465,7 +2465,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf else { // Player's Pokémon must be of the type the partner requested - if (gBaseStats[playerSpecies2].type1 != requestedType + if (gBaseStats[playerSpecies2].type1 != requestedType && gBaseStats[playerSpecies2].type2 != requestedType) return UR_TRADE_MSG_NOT_MON_PARTNER_WANTS; } diff --git a/src/tv.c b/src/tv.c index 2f3d17ee28..0c394acf76 100644 --- a/src/tv.c +++ b/src/tv.c @@ -2058,7 +2058,7 @@ static void SecretBaseVisit_CalculatePartyData(TVShow *show) { sTV_SecretBaseVisitMonsTemp[numPokemon].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); sTV_SecretBaseVisitMonsTemp[numPokemon].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); - + // Check all the Pokémon's moves, then randomly select one to save numMoves = 0; move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1); @@ -2093,7 +2093,7 @@ static void SecretBaseVisit_CalculatePartyData(TVShow *show) for (i = 0, sum = 0; i < numPokemon; i++) sum += sTV_SecretBaseVisitMonsTemp[i].level; - // Using the data calculated above, save the data to talk about on the show + // Using the data calculated above, save the data to talk about on the show // (average level, and one randomly selected species / move) show->secretBaseVisit.avgLevel = sum / numPokemon; j = Random() % numPokemon; @@ -2643,7 +2643,7 @@ void DoPokeNews(void) // News event is upcoming, make comment about countdown to event u16 dayCountdown = gSaveBlock1Ptr->pokeNews[i].dayCountdown; ConvertIntToDecimalStringN(gStringVar1, dayCountdown, STR_CONV_MODE_LEFT_ALIGN, 1); - + // Mark as inactive so the countdown TV airing doesn't repeat // Will be flagged as "upcoming" again by UpdatePokeNewsCountdown gSaveBlock1Ptr->pokeNews[i].state = POKENEWS_STATE_INACTIVE; @@ -2848,7 +2848,7 @@ static bool8 IsRecordMixShowAlreadySpawned(u8 kind, bool8 delete) static void SortPurchasesByQuantity(void) { u8 i, j; - + for (i = 0; i < SMARTSHOPPER_NUM_ITEMS - 1; i++) { for (j = i + 1; j < SMARTSHOPPER_NUM_ITEMS; j++) diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c index beff4440d0..86a0f1a44e 100644 --- a/src/union_room_player_avatar.c +++ b/src/union_room_player_avatar.c @@ -569,7 +569,7 @@ bool32 TryInteractWithUnionRoomMember(struct RfuPlayerList *list, s16 *memberIdP for (memberId = 0; memberId < MAX_RFU_PLAYERS; memberId++) { s32 id = UR_PLAYER_SPRITE_ID(i, memberId); - + // Is the player in front of a group member position? if (x != sUnionRoomPlayerCoords[i][0] + sUnionRoomGroupOffsets[memberId][0] + 7) continue; diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 025f900e5a..e5556b53e3 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -174,7 +174,7 @@ static bool32 TryCalculateWallpaper(u16 *backgroundClr, u16 *foregroundClr, u8 * if (GetWallpaperDataBits(data, 0, 3) != GetWallpaperDataBits(charsByTableId, TO_BIT_OFFSET(WALDA_PHRASE_LENGTH - 1) + 2, 3)) return FALSE; - // Perform some relatively arbitrary changes to the wallpaper data using the last byte (KEY) + // Perform some relatively arbitrary changes to the wallpaper data using the last byte (KEY) RotateWallpaperDataLeft(data, NUM_WALLPAPER_DATA_BYTES, 21); RotateWallpaperDataLeft(data, NUM_WALLPAPER_DATA_BYTES - 1, KEY & 0xF); MaskWallpaperData(data, NUM_WALLPAPER_DATA_BYTES - 1, KEY >> 4); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 4f9697753e..01161e6ccb 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -64,7 +64,7 @@ static const struct WildPokemon sWildFeebas = {20, 25, SPECIES_FEEBAS}; static const u16 sRoute119WaterTileData[] = { -//yMin, yMax, numSpots in previous sections +//yMin, yMax, numSpots in previous sections 0, 45, 0, 46, 91, NUM_FISHING_SPOTS_1, 92, 139, NUM_FISHING_SPOTS_1 + NUM_FISHING_SPOTS_2, @@ -142,7 +142,7 @@ static bool8 CheckFeebas(void) feebasSpots[i] = FeebasRandom() % NUM_FISHING_SPOTS; if (feebasSpots[i] == 0) feebasSpots[i] = NUM_FISHING_SPOTS; - + // < 1 below is a pointless check, it will never be TRUE. // >= 4 to skip fishing spots 1-3, because these are inaccessible // spots at the top of the map, at (9,7), (7,13), and (15,16). diff --git a/src/wonder_news.c b/src/wonder_news.c index ec93d293ed..e083575d95 100644 --- a/src/wonder_news.c +++ b/src/wonder_news.c @@ -76,7 +76,7 @@ u16 RetrieveWonderNewsVal(void) struct WonderNewsMetadata *data = GetSavedWonderNewsMetadata(); u16 newsVal; - // Checks if Mystery Event is enabled, not Mystery Gift? + // Checks if Mystery Event is enabled, not Mystery Gift? if (!IsMysteryEventEnabled() || !ValidateSavedWonderNews()) return 0; diff --git a/sym_common.txt b/sym_common.txt index 407b183a7f..7eebcac74e 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -53,9 +53,9 @@ gReservedSpritePaletteCount: .include "tv.o" .include "mauville_old_man.o" .include "image_processing_effects.o" - + .space 0x4 - + .include "contest_painting.o" .include "field_specials.o" .include "evolution_scene.o" @@ -66,12 +66,12 @@ gReservedSpritePaletteCount: .include "battle_anim_throw.o" .include "battle_factory_screen.o" .include "apprentice.o" - + .space 0x8 - + .include "list_menu.o" .include "party_menu.o" - + .space 0x44 .include "ereader_screen.o" From e624f205ba26a05ba93c98df57a3a1f07fd6febe Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 11 Sep 2022 21:46:40 -0300 Subject: [PATCH 244/271] Added CompareStat checks for the hero duo's abilities --- src/battle_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/battle_util.c b/src/battle_util.c index 4b18fafb60..f20c4c5040 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4744,7 +4744,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_INTREPID_SWORD: - if (!gSpecialStatuses[battler].switchInAbilityDone) + if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_ATK, 1, FALSE); @@ -4753,7 +4753,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } break; case ABILITY_DAUNTLESS_SHIELD: - if (!gSpecialStatuses[battler].switchInAbilityDone) + if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN)) { gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_DEF, 1, FALSE); From 717d06bd17d1f8e252273600d9a4bf853b8ddcec Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 11 Sep 2022 21:57:42 -0300 Subject: [PATCH 245/271] Fixed the hero duo's abilities in doubles --- src/battle_util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/battle_util.c b/src/battle_util.c index f20c4c5040..64c2e75570 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4746,6 +4746,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_INTREPID_SWORD: if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)) { + gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_ATK, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); @@ -4755,6 +4756,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_DAUNTLESS_SHIELD: if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN)) { + gBattlerAttacker = battler; gSpecialStatuses[battler].switchInAbilityDone = TRUE; SET_STATCHANGER(STAT_DEF, 1, FALSE); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); From fc65a483aa1f407d86dbf990bd48f9ac5a95fd19 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sun, 11 Sep 2022 22:34:24 -0300 Subject: [PATCH 246/271] Fixed ability pop ups --- src/battle_interface.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index 5be969105f..ebd7a3ab37 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3123,9 +3123,6 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; - - return; - if (gBattleScripting.abilityPopupOverwrite != 0) ability = gBattleScripting.abilityPopupOverwrite; From 806106b537cc84f45c6ca97b5253cd7a8a9a77e3 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Mon, 12 Sep 2022 12:12:26 +0200 Subject: [PATCH 247/271] removed flickering in debug menu @Jaizu --- src/debug.c | 61 +++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/debug.c b/src/debug.c index 4cc1ac6168..ac5c238313 100644 --- a/src/debug.c +++ b/src/debug.c @@ -175,6 +175,7 @@ struct DebugMonData static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); void Debug_ShowMainMenu(void); static void Debug_DestroyMenu(u8); +static void Debug_DestroyMenu_Full(u8); static void DebugAction_Cancel(u8); static void DebugAction_DestroyExtraWindow(u8 taskId); @@ -697,6 +698,12 @@ static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMte gTasks[inputTaskId].data[1] = windowId; } static void Debug_DestroyMenu(u8 taskId) +{ + DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); + RemoveWindow(gTasks[taskId].data[1]); + DestroyTask(taskId); +} +static void Debug_DestroyMenu_Full(u8 taskId) { DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); @@ -705,7 +712,7 @@ static void Debug_DestroyMenu(u8 taskId) } static void DebugAction_Cancel(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } static void DebugAction_DestroyExtraWindow(u8 taskId) @@ -737,7 +744,7 @@ static void DebugTask_HandleMenuInput_Main(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } } @@ -891,7 +898,7 @@ static void DebugAction_Util_HealParty(u8 taskId) PlaySE(SE_USE_ITEM); HealPlayerParty(); ScriptContext_Enable(); - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); } static void DebugAction_Util_Fly(u8 taskId) { @@ -913,7 +920,7 @@ static void DebugAction_Util_Fly(u8 taskId) FlagSet(FLAG_VISITED_EVER_GRANDE_CITY); FlagSet(FLAG_LANDMARK_POKEMON_LEAGUE); FlagSet(FLAG_LANDMARK_BATTLE_FRONTIER); - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); SetMainCallback2(CB2_OpenFlyMap); } @@ -1141,26 +1148,26 @@ static void DebugAction_Util_CheckSaveBlock(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gDebugText_SaveBlockSize); - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_ShowFieldMessageStringVar4); } static void DebugAction_Util_CheckWallClock(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(PlayersHouse_2F_EventScript_CheckWallClock); } static void DebugAction_Util_SetWallClock(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(PlayersHouse_2F_EventScript_SetWallClock); } static void DebugAction_Util_WatchCredits(u8 taskId) { struct Task* task = &gTasks[taskId]; - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); SetMainCallback2(CB2_StartCreditsSequence); } static void DebugAction_Util_Trainer_Name(u8 taskId) @@ -1174,14 +1181,14 @@ static void DebugAction_Util_Trainer_Gender(u8 taskId) gSaveBlock2Ptr->playerGender = 1; else gSaveBlock2Ptr->playerGender = 0; + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); - Debug_DestroyMenu(taskId); } static void DebugAction_Util_Trainer_Id(u8 taskId) { u32 trainerId = ((Random() << 16) | Random()); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } @@ -1189,49 +1196,49 @@ static void DebugAction_Util_Trainer_Id(u8 taskId) // Actions Scripts static void DebugAction_Util_Script_1(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_1); } static void DebugAction_Util_Script_2(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_2); } static void DebugAction_Util_Script_3(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_3); } static void DebugAction_Util_Script_4(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_4); } static void DebugAction_Util_Script_5(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_5); } static void DebugAction_Util_Script_6(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_6); } static void DebugAction_Util_Script_7(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_7); } static void DebugAction_Util_Script_8(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_Script_8); } @@ -1338,7 +1345,7 @@ static void DebugAction_Flags_SetPokedexFlags(u8 taskId) GetSetPokedexFlag(i + 1, FLAG_SET_CAUGHT); GetSetPokedexFlag(i + 1, FLAG_SET_SEEN); } - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } static void DebugAction_Flags_SwitchDex(u8 taskId) @@ -1426,7 +1433,7 @@ static void DebugAction_Flags_ToggleFrontierPass(u8 taskId) static void DebugAction_Flags_CollisionOnOff(u8 taskId) { #if DEBUG_FLAG_NO_COLLISION == 0 - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else @@ -1440,7 +1447,7 @@ static void DebugAction_Flags_CollisionOnOff(u8 taskId) static void DebugAction_Flags_EncounterOnOff(u8 taskId) { #if OW_FLAG_NO_ENCOUNTER == 0 - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else @@ -1454,7 +1461,7 @@ static void DebugAction_Flags_EncounterOnOff(u8 taskId) static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) { #if OW_FLAG_NO_TRAINER_SEE == 0 - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else @@ -1468,7 +1475,7 @@ static void DebugAction_Flags_TrainerSeeOnOff(u8 taskId) static void DebugAction_Flags_BagUseOnOff(u8 taskId) { #if B_FLAG_NO_BAG_USE == 0 - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else @@ -1482,7 +1489,7 @@ static void DebugAction_Flags_BagUseOnOff(u8 taskId) static void DebugAction_Flags_CatchingOnOff(u8 taskId) { #if B_FLAG_NO_CATCHING_USE == 0 - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_FlagsNotSetMessage); #else @@ -1841,7 +1848,7 @@ static void DebugAction_Give_AllTMs(u8 taskId) if (ItemIdToBattleMoveId(i) != MOVE_NONE && !CheckBagHasItem(i, 1)) AddBagItem(i, 1); } - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); } @@ -2656,7 +2663,7 @@ static void DebugAction_Give_FillPC(u8 taskId) //Credit: Sierraffinity static void DebugAction_Give_CHEAT(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_CheatStart); } @@ -2673,7 +2680,7 @@ static void Task_WaitFadeAccessPC(u8 taskId) static void DebugAction_AccessPC(u8 taskId) { - Debug_DestroyMenu(taskId); + Debug_DestroyMenu_Full(taskId); CleanupOverworldWindowsAndTilemaps(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); CreateTask(Task_WaitFadeAccessPC, 0); From 5eb931225082972b013964c1a160989b7d69bd69 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Mon, 12 Sep 2022 21:14:15 -0300 Subject: [PATCH 248/271] Added missing labels in headers --- gflib/text.h | 1 - include/event_object_movement.h | 99 ++++++++++++++++----------------- include/field_effect.h | 2 +- include/field_player_avatar.h | 2 +- include/link.h | 2 +- include/menu.h | 2 +- include/palette.h | 22 ++++---- 7 files changed, 64 insertions(+), 66 deletions(-) diff --git a/gflib/text.h b/gflib/text.h index c07817290d..a88cb990e1 100644 --- a/gflib/text.h +++ b/gflib/text.h @@ -148,7 +148,6 @@ void RestoreTextColors(u8 *fgColor, u8 *bgColor, u8 *shadowColor); void DecompressGlyphTile(const void *src_, void *dest_); void CopyGlyphToWindow(struct TextPrinter *x); void ClearTextSpan(struct TextPrinter *textPrinter, u32 width); -u8 GetMenuCursorDimensionByFont(u8, u8); void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter); void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter); diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 22cef49219..aad161553c 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -77,55 +77,55 @@ extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[]; extern const u8 *const gBerryTreePaletteSlotTablePointers[]; void ResetObjectEvents(void); -u8 GetMoveDirectionAnimNum(u8); -u8 GetObjectEventIdByLocalIdAndMap(u8, u8, u8); -bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *); -u8 GetObjectEventIdByXY(s16, s16); -void SetObjectEventDirection(struct ObjectEvent *, u8); +u8 GetMoveDirectionAnimNum(u8 direction); +u8 GetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId); +bool8 TryGetObjectEventIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroupId, u8 *objectEventId); +u8 GetObjectEventIdByXY(s16 x, s16 y); +void SetObjectEventDirection(struct ObjectEvent *objectEvent, u8 direction); u8 GetFirstInactiveObjectEventId(void); -void RemoveObjectEventByLocalIdAndMap(u8, u8, u8); -void LoadPlayerObjectReflectionPalette(u16, u8); -void LoadSpecialObjectReflectionPalette(u16, u8); -void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16); -void PatchObjectPalette(u16, u8); -void SpawnObjectEventsOnReturnToField(s16, s16); +void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup); +void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot); +void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot); +void TryMoveObjectEventToMapCoords(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); +void PatchObjectPalette(u16 paletteTag, u8 paletteSlot); +void SpawnObjectEventsOnReturnToField(s16 x, s16 y); void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); -void GetMapCoordsFromSpritePos(s16, s16, s16 *, s16 *); -u8 GetFaceDirectionAnimNum(u8); -void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); +void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY); +u8 GetFaceDirectionAnimNum(u8 direction); +void SetSpritePosToOffsetMapCoords(s16 *x, s16 *y, s16 dx, s16 dy); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); -void TrySpawnObjectEvents(s16, s16); +void TrySpawnObjectEvents(s16 cameraX, s16 cameraY); u8 CreateObjectGraphicsSprite(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); -u8 TrySpawnObjectEvent(u8, u8, u8); +u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup); u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation); u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); -void SetSpritePosToMapCoords(s16, s16, s16 *, s16 *); +void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY); void CameraObjectReset1(void); void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId); -void ObjectEventTurn(struct ObjectEvent *, u8); -void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); +void ObjectEventTurn(struct ObjectEvent *, u8 direction); +void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction); const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId); -void SetObjectInvisibility(u8, u8, u8, bool8); +void SetObjectInvisibility(u8 localId, u8 mapNum, u8 mapGroup, bool8 invisible); void FreeAndReserveObjectSpritePalettes(void); void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y); -void ResetObjectSubpriority(u8, u8, u8); -void SetObjectSubpriority(u8, u8, u8, u8); -void AllowObjectAtPosTriggerGroundEffects(s16, s16); +void ResetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup); +void SetObjectSubpriority(u8 localId, u8 mapNum, u8 mapGroup, u8 subpriority); +void AllowObjectAtPosTriggerGroundEffects(s16 x, s16 y); void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId, void *mapNum, void *mapGroup); -void ShiftObjectEventCoords(struct ObjectEvent *, s16, s16); -void MoveObjectEventToMapCoords(struct ObjectEvent *, s16, s16); -void TryOverrideObjectEventTemplateCoords(u8, u8, u8); +void ShiftObjectEventCoords(struct ObjectEvent *, s16 x, s16 y); +void MoveObjectEventToMapCoords(struct ObjectEvent *, s16 x, s16 y); +void TryOverrideObjectEventTemplateCoords(u8 localId, u8 mapNum, u8 mapGroup); void InitObjectEventPalettes(u8 palSlot); void UpdateObjectEventCurrentMovement(struct ObjectEvent *, struct Sprite *, bool8(struct ObjectEvent *, struct Sprite *)); -u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8); -u8 GetOppositeDirection(u8); +u8 ObjectEventFaceOppositeDirection(struct ObjectEvent *, u8 direction); +u8 GetOppositeDirection(u8 direction); u8 GetWalkInPlaceFasterMovementAction(u32); u8 GetWalkInPlaceFastMovementAction(u32); u8 GetWalkInPlaceNormalMovementAction(u32); u8 GetWalkInPlaceSlowMovementAction(u32); -u8 GetCollisionAtCoords(struct ObjectEvent *, s16, s16, u32); -void MoveCoords(u8, s16 *, s16 *); +u8 GetCollisionAtCoords(struct ObjectEvent *, s16 x, s16 y, u32 dir); +void MoveCoords(u8 direction, s16 *x, s16 *y); bool8 ObjectEventIsHeldMovementActive(struct ObjectEvent *); u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *); u8 GetObjectEventIdByPosition(u16 x, u16 y, u8 elevation); @@ -168,22 +168,22 @@ u8 AddCameraObject(u8 linkedSpriteId); void UpdateObjectEventsForCameraUpdate(s16 x, s16 y); u8 GetWalkSlowMovementAction(u32); u8 GetJumpMovementAction(u32); -u8 ElevationToPriority(u8); +u8 ElevationToPriority(u8 elevation); void ObjectEventUpdateElevation(struct ObjectEvent *objEvent); -void SetObjectSubpriorityByElevation(u8, struct Sprite *, u8); +void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *, u8 subpriority); void UnfreezeObjectEvent(struct ObjectEvent *); u8 FindLockedObjectEventIndex(struct ObjectEvent *); -void SetAndStartSpriteAnim(struct Sprite *, u8, u8); +void SetAndStartSpriteAnim(struct Sprite *, u8 animNum, u8 animCmdIndex); bool8 SpriteAnimEnded(struct Sprite *); void UnfreezeObjectEvents(void); void FreezeObjectEventsExceptOne(u8 objectEventId); void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2); void FreezeObjectEvents(void); bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent); -u8 GetMoveDirectionFastAnimNum(u8); -u8 GetMoveDirectionFasterAnimNum(u8); -u8 GetMoveDirectionFastestAnimNum(u8); -u8 GetLedgeJumpDirection(s16, s16, u8); +u8 GetMoveDirectionFastAnimNum(u8 direction); +u8 GetMoveDirectionFasterAnimNum(u8 direction); +u8 GetMoveDirectionFastestAnimNum(u8 direction); +u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction); void CameraObjectSetFollowedSpriteId(u8 objectId); u16 GetObjectPaletteTag(u8 palSlot); void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible); @@ -192,7 +192,7 @@ s16 GetFigure8YOffset(s16 idx); void CameraObjectReset2(void); u8 GetObjectEventBerryTreeId(u8 objectEventId); void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup); -bool8 IsBerryTreeSparkling(u8, u8, u8); +bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup); void MovementType_None(struct Sprite *); void MovementType_LookAround(struct Sprite *); @@ -250,7 +250,6 @@ void MovementType_RunInPlace(struct Sprite *); void MovementType_Invisible(struct Sprite *); void MovementType_WalkSlowlyInPlace(struct Sprite *); u8 GetSlideMovementAction(u32); -u8 GetJumpInPlaceMovementAction(u32); u8 GetJumpMovementAction(u32); u8 GetJump2MovementAction(u32); u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority); @@ -262,17 +261,17 @@ u8 MovementType_WanderAround_Step3(struct ObjectEvent *, struct Sprite *); u8 MovementType_WanderAround_Step4(struct ObjectEvent *, struct Sprite *); u8 MovementType_WanderAround_Step5(struct ObjectEvent *, struct Sprite *); u8 MovementType_WanderAround_Step6(struct ObjectEvent *, struct Sprite *); -u8 GetVectorDirection(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_SouthNorth(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_WestEast(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_WestNorth(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_EastNorth(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_WestSouth(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_EastSouth(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_SouthNorthWest(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_SouthNorthEast(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_NorthWestEast(s16, s16, s16, s16); -u8 GetLimitedVectorDirection_SouthWestEast(s16, s16, s16, s16); +u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy); +u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy); u8 MovementType_LookAround_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_LookAround_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_LookAround_Step2(struct ObjectEvent *, struct Sprite *); diff --git a/include/field_effect.h b/include/field_effect.h index b35a8c8694..4cde29e8a3 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -18,7 +18,7 @@ void FieldEffectStop(struct Sprite *sprite, u8 id); u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer); void FldEff_TeleportWarpOut(void); void FieldEffectActiveListRemove(u8 id); -void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); +void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b); void FieldEffectActiveListAdd(u8 id); void FieldEffectScript_LoadTiles(u8 **script); void FieldEffectScript_LoadFadedPalette(u8 **script); diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 2bf2df2697..39fc886af8 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -38,7 +38,7 @@ void PlayerFreeze(void); void StopPlayerAvatar(void); void SetSpinStartFacingDir(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); -u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); +u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8 state, u8 gender); void SetPlayerAvatarFieldMove(void); u8 GetPlayerAvatarGraphicsIdByCurrentState(void); void SetPlayerAvatarStateMask(u8 flags); diff --git a/include/link.h b/include/link.h index 120c25784e..7fa5e3fae6 100644 --- a/include/link.h +++ b/include/link.h @@ -284,7 +284,7 @@ void SerialCB(void); bool32 InUnionRoom(void); void LoadWirelessStatusIndicatorSpriteGfx(void); bool8 IsLinkTaskFinished(void); -void CreateWirelessStatusIndicatorSprite(u8, u8); +void CreateWirelessStatusIndicatorSprite(u8 x, u8 y); void SetLinkStandbyCallback(void); void SetWirelessCommType1(void); void CheckShouldAdvanceLinkState(void); diff --git a/include/menu.h b/include/menu.h index 43b564da28..0b0a42423d 100644 --- a/include/menu.h +++ b/include/menu.h @@ -92,7 +92,7 @@ void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth u8 InitMenuActionGrid(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos); u8 ChangeMenuGridCursorPosition(s8 deltaX, s8 deltaY); u8 GetStartMenuWindowId(void); -void ListMenuLoadStdPalAt(u8, u8); +void ListMenuLoadStdPalAt(u8 palOffset, u8 palId); u8 Menu_MoveCursor(s8 cursorDelta); u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta); void DrawStdWindowFrame(u8 windowId, bool8 CopyToVram); diff --git a/include/palette.h b/include/palette.h index 81a1e1caec..736fde96bb 100644 --- a/include/palette.h +++ b/include/palette.h @@ -52,22 +52,22 @@ extern u8 gPaletteDecompressionBuffer[]; extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE]; extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE]; -void LoadCompressedPalette(const u32 *, u16, u16); -void LoadPalette(const void *, u16, u16); -void FillPalette(u16, u16, u16); +void LoadCompressedPalette(const u32 *src, u16 offset, u16 size); +void LoadPalette(const void *src, u16 offset, u16 size); +void FillPalette(u16 value, u16 offset, u16 size); void TransferPlttBuffer(void); u8 UpdatePaletteFade(void); void ResetPaletteFade(void); -bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); -void PaletteStruct_ResetById(u16); +bool8 BeginNormalPaletteFade(u32 selectedPalettes, s8 delay, u8 startY, u8 targetY, u16 blendColor); +void PaletteStruct_ResetById(u16 id); void ResetPaletteFadeControl(void); -void InvertPlttBuffer(u32); -void TintPlttBuffer(u32, s8, s8, s8); -void UnfadePlttBuffer(u32); -void BeginFastPaletteFade(u8); -void BeginHardwarePaletteFade(u8, u8, u8, u8, u8); +void InvertPlttBuffer(u32 selectedPalettes); +void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b); +void UnfadePlttBuffer(u32 selectedPalettes); +void BeginFastPaletteFade(u8 submode); +void BeginHardwarePaletteFade(u8 blendCnt, u8 delay, u8 y, u8 targetY, u8 shouldResetBlendRegisters); void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color); -void BlendPalettesUnfaded(u32, u8, u16); +void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color); void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id); void TintPalette_GrayScale(u16 *palette, u16 count); void TintPalette_GrayScale2(u16 *palette, u16 count); From 222362e8045e653115cf4e4759c1a25732cea899 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 12 Sep 2022 21:26:22 -0300 Subject: [PATCH 249/271] Fixed Raquaza typo --- data/maps/SkyPillar_Top/map.json | 2 +- data/maps/SkyPillar_Top/scripts.inc | 2 +- include/constants/vars.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/maps/SkyPillar_Top/map.json b/data/maps/SkyPillar_Top/map.json index a980c6b07b..2fee121065 100644 --- a/data/maps/SkyPillar_Top/map.json +++ b/data/maps/SkyPillar_Top/map.json @@ -56,7 +56,7 @@ "x": 14, "y": 9, "elevation": 3, - "var": "VAR_SKY_PILLAR_RAQUAZA_CRY_DONE", + "var": "VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE", "var_value": "0", "script": "SkyPillar_Top_EventScript_AwakenRayquaza" } diff --git a/data/maps/SkyPillar_Top/scripts.inc b/data/maps/SkyPillar_Top/scripts.inc index 7b65d9e257..19cd7e4f42 100644 --- a/data/maps/SkyPillar_Top/scripts.inc +++ b/data/maps/SkyPillar_Top/scripts.inc @@ -128,7 +128,7 @@ SkyPillar_Top_EventScript_AwakenRayquaza:: special RemoveCameraObject setvar VAR_SOOTOPOLIS_CITY_STATE, 5 setvar VAR_SKY_PILLAR_STATE, 1 - setvar VAR_SKY_PILLAR_RAQUAZA_CRY_DONE, 1 + setvar VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE, 1 releaseall end diff --git a/include/constants/vars.h b/include/constants/vars.h index 8128b6f321..dbcb658ff5 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -231,7 +231,7 @@ #define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL #define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios #define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6 -#define VAR_SKY_PILLAR_RAQUAZA_CRY_DONE 0x40D7 +#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7 #define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8 #define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9 #define VAR_REGISTER_BIRCH_STATE 0x40DA From cb83a0920318b2e98782a9a10a098b8441a99913 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 12 Sep 2022 21:27:53 -0300 Subject: [PATCH 250/271] Fixed vars alignment --- include/constants/vars.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/constants/vars.h b/include/constants/vars.h index dbcb658ff5..019585d66d 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -231,7 +231,7 @@ #define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL #define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios #define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6 -#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7 +#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7 #define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8 #define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9 #define VAR_REGISTER_BIRCH_STATE 0x40DA From 14c6d8b91a49d214d3da2bba2b90e4cb9d811587 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 12 Sep 2022 21:32:42 -0300 Subject: [PATCH 251/271] Fixed alignment for the value of vars 0x4020 to 0x40FF --- include/constants/vars.h | 450 +++++++++++++++++++-------------------- 1 file changed, 225 insertions(+), 225 deletions(-) diff --git a/include/constants/vars.h b/include/constants/vars.h index 019585d66d..bd988c789b 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -46,235 +46,235 @@ #define VAR_OBJ_GFX_ID_F 0x401F // general purpose vars -#define VAR_RECYCLE_GOODS 0x4020 -#define VAR_REPEL_STEP_COUNT 0x4021 -#define VAR_ICE_STEP_COUNT 0x4022 -#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip -#define VAR_MIRAGE_RND_H 0x4024 -#define VAR_MIRAGE_RND_L 0x4025 -#define VAR_SECRET_BASE_MAP 0x4026 -#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027 -#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028 -#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029 -#define VAR_FRIENDSHIP_STEP_COUNTER 0x402A -#define VAR_POISON_STEP_COUNTER 0x402B -#define VAR_RESET_RTC_ENABLE 0x402C -#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D -#define VAR_WONDER_NEWS_COUNTER 0x402E +#define VAR_RECYCLE_GOODS 0x4020 +#define VAR_REPEL_STEP_COUNT 0x4021 +#define VAR_ICE_STEP_COUNT 0x4022 +#define VAR_STARTER_MON 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip +#define VAR_MIRAGE_RND_H 0x4024 +#define VAR_MIRAGE_RND_L 0x4025 +#define VAR_SECRET_BASE_MAP 0x4026 +#define VAR_CYCLING_ROAD_RECORD_COLLISIONS 0x4027 +#define VAR_CYCLING_ROAD_RECORD_TIME_L 0x4028 +#define VAR_CYCLING_ROAD_RECORD_TIME_H 0x4029 +#define VAR_FRIENDSHIP_STEP_COUNTER 0x402A +#define VAR_POISON_STEP_COUNTER 0x402B +#define VAR_RESET_RTC_ENABLE 0x402C +#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D +#define VAR_WONDER_NEWS_COUNTER 0x402E -#define VAR_FRONTIER_MANIAC_FACILITY 0x402F -#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030 -#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031 -#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 -#define VAR_FRONTIER_GAMBLER_STATE 0x4033 +#define VAR_FRONTIER_MANIAC_FACILITY 0x402F +#define VAR_FRONTIER_GAMBLER_CHALLENGE 0x4030 +#define VAR_FRONTIER_GAMBLER_SET_CHALLENGE 0x4031 +#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032 +#define VAR_FRONTIER_GAMBLER_STATE 0x4033 -#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034 -#define VAR_DEOXYS_ROCK_LEVEL 0x4035 -#define VAR_PC_BOX_TO_SEND_MON 0x4036 -#define VAR_ABNORMAL_WEATHER_LOCATION 0x4037 -#define VAR_ABNORMAL_WEATHER_STEP_COUNTER 0x4038 -#define VAR_SHOULD_END_ABNORMAL_WEATHER 0x4039 -#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A -#define VAR_REGICE_STEPS_1 0x403B -#define VAR_REGICE_STEPS_2 0x403C -#define VAR_REGICE_STEPS_3 0x403D -#define VAR_ALTERING_CAVE_WILD_SET 0x403E -#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing -#define VAR_DAYS 0x4040 -#define VAR_FANCLUB_FAN_COUNTER 0x4041 -#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4042 -#define VAR_DEPT_STORE_FLOOR 0x4043 -#define VAR_TRICK_HOUSE_LEVEL 0x4044 -#define VAR_POKELOT_PRIZE_ITEM 0x4045 -#define VAR_NATIONAL_DEX 0x4046 -#define VAR_SEEDOT_SIZE_RECORD 0x4047 -#define VAR_ASH_GATHER_COUNT 0x4048 -#define VAR_BIRCH_STATE 0x4049 -#define VAR_CRUISE_STEP_COUNT 0x404A -#define VAR_POKELOT_RND1 0x404B -#define VAR_POKELOT_RND2 0x404C -#define VAR_POKELOT_PRIZE_PLACE 0x404D -#define VAR_UNUSED_0x404E 0x404E // Unused Var -#define VAR_LOTAD_SIZE_RECORD 0x404F -#define VAR_LITTLEROOT_TOWN_STATE 0x4050 -#define VAR_OLDALE_TOWN_STATE 0x4051 -#define VAR_DEWFORD_TOWN_STATE 0x4052 // Unused Var -#define VAR_LAVARIDGE_TOWN_STATE 0x4053 -#define VAR_CURRENT_SECRET_BASE 0x4054 // was probably allocated for VAR_FALLARBOR_TOWN_STATE at one point -#define VAR_VERDANTURF_TOWN_STATE 0x4055 // Unused Var -#define VAR_PACIFIDLOG_TOWN_STATE 0x4056 // Unused Var -#define VAR_PETALBURG_CITY_STATE 0x4057 -#define VAR_SLATEPORT_CITY_STATE 0x4058 -#define VAR_MAUVILLE_CITY_STATE 0x4059 // Unused Var -#define VAR_RUSTBORO_CITY_STATE 0x405A -#define VAR_FORTREE_CITY_STATE 0x405B // Unused Var -#define VAR_LILYCOVE_CITY_STATE 0x405C // Unused Var -#define VAR_MOSSDEEP_CITY_STATE 0x405D -#define VAR_SOOTOPOLIS_CITY_STATE 0x405E -#define VAR_EVER_GRANDE_CITY_STATE 0x405F // Unused Var -#define VAR_ROUTE101_STATE 0x4060 -#define VAR_ROUTE102_STATE 0x4061 // Unused Var -#define VAR_ROUTE103_STATE 0x4062 // Unused Var -#define VAR_ROUTE104_STATE 0x4063 -#define VAR_ROUTE105_STATE 0x4064 // Unused Var -#define VAR_ROUTE106_STATE 0x4065 // Unused Var -#define VAR_ROUTE107_STATE 0x4066 // Unused Var -#define VAR_ROUTE108_STATE 0x4067 // Unused Var -#define VAR_ROUTE109_STATE 0x4068 // Unused Var -#define VAR_ROUTE110_STATE 0x4069 -#define VAR_ROUTE111_STATE 0x406A // Unused Var -#define VAR_ROUTE112_STATE 0x406B // Unused Var -#define VAR_ROUTE113_STATE 0x406C // Unused Var -#define VAR_ROUTE114_STATE 0x406D // Unused Var -#define VAR_ROUTE115_STATE 0x406E // Unused Var -#define VAR_ROUTE116_STATE 0x406F -#define VAR_ROUTE117_STATE 0x4070 // Unused Var -#define VAR_ROUTE118_STATE 0x4071 -#define VAR_ROUTE119_STATE 0x4072 -#define VAR_ROUTE120_STATE 0x4073 // Unused Var -#define VAR_ROUTE121_STATE 0x4074 -#define VAR_ROUTE122_STATE 0x4075 // Unused Var -#define VAR_ROUTE123_STATE 0x4076 // Unused Var -#define VAR_ROUTE124_STATE 0x4077 // Unused Var -#define VAR_ROUTE125_STATE 0x4078 // Unused Var -#define VAR_ROUTE126_STATE 0x4079 // Unused Var -#define VAR_ROUTE127_STATE 0x407A // Unused Var -#define VAR_ROUTE128_STATE 0x407B -#define VAR_ROUTE129_STATE 0x407C // Unused Var -#define VAR_ROUTE130_STATE 0x407D // Unused Var -#define VAR_ROUTE131_STATE 0x407E // Unused Var -#define VAR_ROUTE132_STATE 0x407F // Unused Var -#define VAR_ROUTE133_STATE 0x4080 // Unused Var -#define VAR_ROUTE134_STATE 0x4081 // Unused Var -#define VAR_LITTLEROOT_HOUSES_STATE_MAY 0x4082 -#define VAR_UNUSED_0x4083 0x4083 // Unused Var -#define VAR_BIRCH_LAB_STATE 0x4084 -#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman -#define VAR_CONTEST_HALL_STATE 0x4086 -#define VAR_CABLE_CLUB_STATE 0x4087 -#define VAR_CONTEST_TYPE 0x4088 -#define VAR_SECRET_BASE_INITIALIZED 0x4089 -#define VAR_CONTEST_PRIZE_PICKUP 0x408A -#define VAR_UNUSED_0x408B 0x408B // Unused Var -#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN 0x408C -#define VAR_LITTLEROOT_RIVAL_STATE 0x408D -#define VAR_BOARD_BRINEY_BOAT_STATE 0x408E -#define VAR_DEVON_CORP_3F_STATE 0x408F -#define VAR_BRINEY_HOUSE_STATE 0x4090 -#define VAR_UNUSED_0x4091 0x4091 // Unused Var -#define VAR_LITTLEROOT_INTRO_STATE 0x4092 -#define VAR_MAUVILLE_GYM_STATE 0x4093 -#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094 -#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095 -#define VAR_BRINEY_LOCATION 0x4096 -#define VAR_INIT_SECRET_BASE 0x4097 -#define VAR_PETALBURG_WOODS_STATE 0x4098 -#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099 -#define VAR_RUSTURF_TUNNEL_STATE 0x409A -#define VAR_UNUSED_0x409B 0x409B // Unused Var -#define VAR_ELITE_4_STATE 0x409C -#define VAR_UNUSED_0x409D 0x409D // Unused Var -#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E -#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F -#define VAR_SLATEPORT_HARBOR_STATE 0x40A0 -#define VAR_UNUSED_0x40A1 0x40A1 // Unused var -#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 -#define VAR_CABLE_CAR_STATION_STATE 0x40A3 -#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ -#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE 0x40A5 -#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER 0x40A6 -#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A7 -#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var -#define VAR_CYCLING_CHALLENGE_STATE 0x40A9 -#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA -#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB -#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC -#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD -#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE -#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF -#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0 -#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1 -#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2 -#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 -#define VAR_SS_TIDAL_STATE 0x40B4 -#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR 0x40B5 -#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 // Leftover from RS, never set -#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7 -#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var -#define VAR_MT_PYRE_STATE 0x40B9 -#define VAR_NEW_MAUVILLE_STATE 0x40BA -#define VAR_UNUSED_0x40BB 0x40BB // Unused Var -#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC -#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD -#define VAR_GLASS_WORKSHOP_STATE 0x40BE -#define VAR_METEOR_FALLS_STATE 0x40BF -#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE 0x40C0 -#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1 -#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2 -#define VAR_VICTORY_ROAD_1F_STATE 0x40C3 -#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4 -#define VAR_WHICH_FOSSIL_REVIVED 0x40C5 -#define VAR_STEVENS_HOUSE_STATE 0x40C6 -#define VAR_OLDALE_RIVAL_STATE 0x40C7 -#define VAR_JAGGED_PASS_STATE 0x40C8 -#define VAR_SCOTT_PETALBURG_ENCOUNTER 0x40C9 -#define VAR_SKY_PILLAR_STATE 0x40CA -#define VAR_MIRAGE_TOWER_STATE 0x40CB -#define VAR_FOSSIL_MANIAC_STATE 0x40CC -#define VAR_CABLE_CLUB_TUTORIAL_STATE 0x40CD -#define VAR_FRONTIER_BATTLE_MODE 0x40CE -#define VAR_FRONTIER_FACILITY 0x40CF -#define VAR_HAS_ENTERED_BATTLE_FRONTIER 0x40D0 // Var is used like a flag. -#define VAR_SCOTT_STATE 0x40D1 -#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE 0x40D2 -#define VAR_DEX_UPGRADE_JOHTO_STARTER_STATE 0x40D3 -#define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL -#define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios -#define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6 -#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7 -#define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8 +#define VAR_DEOXYS_ROCK_STEP_COUNT 0x4034 +#define VAR_DEOXYS_ROCK_LEVEL 0x4035 +#define VAR_PC_BOX_TO_SEND_MON 0x4036 +#define VAR_ABNORMAL_WEATHER_LOCATION 0x4037 +#define VAR_ABNORMAL_WEATHER_STEP_COUNTER 0x4038 +#define VAR_SHOULD_END_ABNORMAL_WEATHER 0x4039 +#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A +#define VAR_REGICE_STEPS_1 0x403B +#define VAR_REGICE_STEPS_2 0x403C +#define VAR_REGICE_STEPS_3 0x403D +#define VAR_ALTERING_CAVE_WILD_SET 0x403E +#define VAR_DISTRIBUTE_EON_TICKET 0x403F // This var is read and written, but is always zero. The only way to obtain the Eon Ticket in Emerald is via Record Mixing +#define VAR_DAYS 0x4040 +#define VAR_FANCLUB_FAN_COUNTER 0x4041 +#define VAR_FANCLUB_LOSE_FAN_TIMER 0x4042 +#define VAR_DEPT_STORE_FLOOR 0x4043 +#define VAR_TRICK_HOUSE_LEVEL 0x4044 +#define VAR_POKELOT_PRIZE_ITEM 0x4045 +#define VAR_NATIONAL_DEX 0x4046 +#define VAR_SEEDOT_SIZE_RECORD 0x4047 +#define VAR_ASH_GATHER_COUNT 0x4048 +#define VAR_BIRCH_STATE 0x4049 +#define VAR_CRUISE_STEP_COUNT 0x404A +#define VAR_POKELOT_RND1 0x404B +#define VAR_POKELOT_RND2 0x404C +#define VAR_POKELOT_PRIZE_PLACE 0x404D +#define VAR_UNUSED_0x404E 0x404E // Unused Var +#define VAR_LOTAD_SIZE_RECORD 0x404F +#define VAR_LITTLEROOT_TOWN_STATE 0x4050 +#define VAR_OLDALE_TOWN_STATE 0x4051 +#define VAR_DEWFORD_TOWN_STATE 0x4052 // Unused Var +#define VAR_LAVARIDGE_TOWN_STATE 0x4053 +#define VAR_CURRENT_SECRET_BASE 0x4054 // was probably allocated for VAR_FALLARBOR_TOWN_STATE at one point +#define VAR_VERDANTURF_TOWN_STATE 0x4055 // Unused Var +#define VAR_PACIFIDLOG_TOWN_STATE 0x4056 // Unused Var +#define VAR_PETALBURG_CITY_STATE 0x4057 +#define VAR_SLATEPORT_CITY_STATE 0x4058 +#define VAR_MAUVILLE_CITY_STATE 0x4059 // Unused Var +#define VAR_RUSTBORO_CITY_STATE 0x405A +#define VAR_FORTREE_CITY_STATE 0x405B // Unused Var +#define VAR_LILYCOVE_CITY_STATE 0x405C // Unused Var +#define VAR_MOSSDEEP_CITY_STATE 0x405D +#define VAR_SOOTOPOLIS_CITY_STATE 0x405E +#define VAR_EVER_GRANDE_CITY_STATE 0x405F // Unused Var +#define VAR_ROUTE101_STATE 0x4060 +#define VAR_ROUTE102_STATE 0x4061 // Unused Var +#define VAR_ROUTE103_STATE 0x4062 // Unused Var +#define VAR_ROUTE104_STATE 0x4063 +#define VAR_ROUTE105_STATE 0x4064 // Unused Var +#define VAR_ROUTE106_STATE 0x4065 // Unused Var +#define VAR_ROUTE107_STATE 0x4066 // Unused Var +#define VAR_ROUTE108_STATE 0x4067 // Unused Var +#define VAR_ROUTE109_STATE 0x4068 // Unused Var +#define VAR_ROUTE110_STATE 0x4069 +#define VAR_ROUTE111_STATE 0x406A // Unused Var +#define VAR_ROUTE112_STATE 0x406B // Unused Var +#define VAR_ROUTE113_STATE 0x406C // Unused Var +#define VAR_ROUTE114_STATE 0x406D // Unused Var +#define VAR_ROUTE115_STATE 0x406E // Unused Var +#define VAR_ROUTE116_STATE 0x406F +#define VAR_ROUTE117_STATE 0x4070 // Unused Var +#define VAR_ROUTE118_STATE 0x4071 +#define VAR_ROUTE119_STATE 0x4072 +#define VAR_ROUTE120_STATE 0x4073 // Unused Var +#define VAR_ROUTE121_STATE 0x4074 +#define VAR_ROUTE122_STATE 0x4075 // Unused Var +#define VAR_ROUTE123_STATE 0x4076 // Unused Var +#define VAR_ROUTE124_STATE 0x4077 // Unused Var +#define VAR_ROUTE125_STATE 0x4078 // Unused Var +#define VAR_ROUTE126_STATE 0x4079 // Unused Var +#define VAR_ROUTE127_STATE 0x407A // Unused Var +#define VAR_ROUTE128_STATE 0x407B +#define VAR_ROUTE129_STATE 0x407C // Unused Var +#define VAR_ROUTE130_STATE 0x407D // Unused Var +#define VAR_ROUTE131_STATE 0x407E // Unused Var +#define VAR_ROUTE132_STATE 0x407F // Unused Var +#define VAR_ROUTE133_STATE 0x4080 // Unused Var +#define VAR_ROUTE134_STATE 0x4081 // Unused Var +#define VAR_LITTLEROOT_HOUSES_STATE_MAY 0x4082 +#define VAR_UNUSED_0x4083 0x4083 // Unused Var +#define VAR_BIRCH_LAB_STATE 0x4084 +#define VAR_PETALBURG_GYM_STATE 0x4085 // 0-1: Wally tutorial, 2-6: 0-4 badges, 7: Defeated Norman, 8: Rematch Norman +#define VAR_CONTEST_HALL_STATE 0x4086 +#define VAR_CABLE_CLUB_STATE 0x4087 +#define VAR_CONTEST_TYPE 0x4088 +#define VAR_SECRET_BASE_INITIALIZED 0x4089 +#define VAR_CONTEST_PRIZE_PICKUP 0x408A +#define VAR_UNUSED_0x408B 0x408B // Unused Var +#define VAR_LITTLEROOT_HOUSES_STATE_BRENDAN 0x408C +#define VAR_LITTLEROOT_RIVAL_STATE 0x408D +#define VAR_BOARD_BRINEY_BOAT_STATE 0x408E +#define VAR_DEVON_CORP_3F_STATE 0x408F +#define VAR_BRINEY_HOUSE_STATE 0x4090 +#define VAR_UNUSED_0x4091 0x4091 // Unused Var +#define VAR_LITTLEROOT_INTRO_STATE 0x4092 +#define VAR_MAUVILLE_GYM_STATE 0x4093 +#define VAR_LILYCOVE_MUSEUM_2F_STATE 0x4094 +#define VAR_LILYCOVE_FAN_CLUB_STATE 0x4095 +#define VAR_BRINEY_LOCATION 0x4096 +#define VAR_INIT_SECRET_BASE 0x4097 +#define VAR_PETALBURG_WOODS_STATE 0x4098 +#define VAR_LILYCOVE_CONTEST_LOBBY_STATE 0x4099 +#define VAR_RUSTURF_TUNNEL_STATE 0x409A +#define VAR_UNUSED_0x409B 0x409B // Unused Var +#define VAR_ELITE_4_STATE 0x409C +#define VAR_UNUSED_0x409D 0x409D // Unused Var +#define VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE 0x409E +#define VAR_MOSSDEEP_SPACE_CENTER_STATE 0x409F +#define VAR_SLATEPORT_HARBOR_STATE 0x40A0 +#define VAR_UNUSED_0x40A1 0x40A1 // Unused var +#define VAR_SEAFLOOR_CAVERN_STATE 0x40A2 +#define VAR_CABLE_CAR_STATION_STATE 0x40A3 +#define VAR_SAFARI_ZONE_STATE 0x40A4 // 0: In or out of SZ, 1: Player exiting SZ, 2: Player entering SZ +#define VAR_TRICK_HOUSE_BEING_WATCHED_STATE 0x40A5 +#define VAR_TRICK_HOUSE_FOUND_TRICK_MASTER 0x40A6 +#define VAR_TRICK_HOUSE_ENTRANCE_STATE 0x40A7 +#define VAR_UNUSED_0x40A8 0x40A8 // Unused Var +#define VAR_CYCLING_CHALLENGE_STATE 0x40A9 +#define VAR_SLATEPORT_MUSEUM_1F_STATE 0x40AA +#define VAR_TRICK_HOUSE_PUZZLE_1_STATE 0x40AB +#define VAR_TRICK_HOUSE_PUZZLE_2_STATE 0x40AC +#define VAR_TRICK_HOUSE_PUZZLE_3_STATE 0x40AD +#define VAR_TRICK_HOUSE_PUZZLE_4_STATE 0x40AE +#define VAR_TRICK_HOUSE_PUZZLE_5_STATE 0x40AF +#define VAR_TRICK_HOUSE_PUZZLE_6_STATE 0x40B0 +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE 0x40B1 +#define VAR_TRICK_HOUSE_PUZZLE_8_STATE 0x40B2 +#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 +#define VAR_SS_TIDAL_STATE 0x40B4 +#define VAR_TRICK_HOUSE_ENTER_FROM_CORRIDOR 0x40B5 +#define VAR_TRICK_HOUSE_PUZZLE_7_STATE_2 0x40B6 // Leftover from RS, never set +#define VAR_SLATEPORT_FAN_CLUB_STATE 0x40B7 +#define VAR_UNUSED_0x40B8 0x40B8 // Unused Var +#define VAR_MT_PYRE_STATE 0x40B9 +#define VAR_NEW_MAUVILLE_STATE 0x40BA +#define VAR_UNUSED_0x40BB 0x40BB // Unused Var +#define VAR_BRAVO_TRAINER_BATTLE_TOWER_ON 0x40BC +#define VAR_JAGGED_PASS_ASH_WEATHER 0x40BD +#define VAR_GLASS_WORKSHOP_STATE 0x40BE +#define VAR_METEOR_FALLS_STATE 0x40BF +#define VAR_SOOTOPOLIS_MYSTERY_EVENTS_STATE 0x40C0 +#define VAR_TRICK_HOUSE_PRIZE_PICKUP 0x40C1 +#define VAR_PACIFIDLOG_TM_RECEIVED_DAY 0x40C2 +#define VAR_VICTORY_ROAD_1F_STATE 0x40C3 +#define VAR_FOSSIL_RESURRECTION_STATE 0x40C4 +#define VAR_WHICH_FOSSIL_REVIVED 0x40C5 +#define VAR_STEVENS_HOUSE_STATE 0x40C6 +#define VAR_OLDALE_RIVAL_STATE 0x40C7 +#define VAR_JAGGED_PASS_STATE 0x40C8 +#define VAR_SCOTT_PETALBURG_ENCOUNTER 0x40C9 +#define VAR_SKY_PILLAR_STATE 0x40CA +#define VAR_MIRAGE_TOWER_STATE 0x40CB +#define VAR_FOSSIL_MANIAC_STATE 0x40CC +#define VAR_CABLE_CLUB_TUTORIAL_STATE 0x40CD +#define VAR_FRONTIER_BATTLE_MODE 0x40CE +#define VAR_FRONTIER_FACILITY 0x40CF +#define VAR_HAS_ENTERED_BATTLE_FRONTIER 0x40D0 // Var is used like a flag. +#define VAR_SCOTT_STATE 0x40D1 +#define VAR_SLATEPORT_OUTSIDE_MUSEUM_STATE 0x40D2 +#define VAR_DEX_UPGRADE_JOHTO_STARTER_STATE 0x40D3 +#define VAR_SS_TIDAL_SCOTT_STATE 0x40D4 // Always equal to FLAG_MET_SCOTT_ON_SS_TIDAL +#define VAR_ROAMER_POKEMON 0x40D5 // 0 = Latias, 1 = Latios +#define VAR_TRAINER_HILL_IS_ACTIVE 0x40D6 +#define VAR_SKY_PILLAR_RAYQUAZA_CRY_DONE 0x40D7 +#define VAR_SOOTOPOLIS_WALLACE_STATE 0x40D8 #define VAR_HAS_TALKED_TO_SEAFLOOR_CAVERN_ENTRANCE_GRUNT 0x40D9 -#define VAR_REGISTER_BIRCH_STATE 0x40DA -#define VAR_UNUSED_0x40DB 0x40DB // Unused Var -#define VAR_UNUSED_0x40DC 0x40DC // Unused Var -#define VAR_GIFT_PICHU_SLOT 0x40DD -#define VAR_GIFT_UNUSED_1 0x40DE // Var is written to, but never read -#define VAR_GIFT_UNUSED_2 0x40DF // Var is written to, but never read -#define VAR_GIFT_UNUSED_3 0x40E0 // Var is written to, but never read -#define VAR_GIFT_UNUSED_4 0x40E1 // Var is written to, but never read -#define VAR_GIFT_UNUSED_5 0x40E2 // Var is written to, but never read -#define VAR_GIFT_UNUSED_6 0x40E3 // Var is written to, but never read -#define VAR_GIFT_UNUSED_7 0x40E4 // var is written to, but never read -#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var -#define VAR_DAILY_SLOTS 0x40E6 -#define VAR_DAILY_WILDS 0x40E7 -#define VAR_DAILY_BLENDER 0x40E8 -#define VAR_DAILY_PLANTED_BERRIES 0x40E9 -#define VAR_DAILY_PICKED_BERRIES 0x40EA -#define VAR_DAILY_ROULETTE 0x40EB -#define VAR_SECRET_BASE_STEP_COUNTER 0x40EC // Used by Secret Base TV programs -#define VAR_SECRET_BASE_LAST_ITEM_USED 0x40ED // Used by Secret Base TV programs -#define VAR_SECRET_BASE_LOW_TV_FLAGS 0x40EE // Used by Secret Base TV programs -#define VAR_SECRET_BASE_HIGH_TV_FLAGS 0x40EF // Used by Secret Base TV programs -#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base. -#define VAR_DAILY_BP 0x40F1 -#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2 -#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER 0x40F3 -#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4 -#define VAR_SCOTT_BF_CALL_STEP_COUNTER 0x40F5 -#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6 -#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var -#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var -#define VAR_UNUSED_0x40F9 0x40F9 // Unused Var -#define VAR_UNUSED_0x40FA 0x40FA // Unused Var -#define VAR_UNUSED_0x40FB 0x40FB // Unused Var -#define VAR_UNUSED_0x40FC 0x40FC // Unused Var -#define VAR_UNUSED_0x40FD 0x40FD // Unused Var -#define VAR_UNUSED_0x40FE 0x40FE // Unused Var -#define VAR_UNUSED_0x40FF 0x40FF // Unused Var +#define VAR_REGISTER_BIRCH_STATE 0x40DA +#define VAR_UNUSED_0x40DB 0x40DB // Unused Var +#define VAR_UNUSED_0x40DC 0x40DC // Unused Var +#define VAR_GIFT_PICHU_SLOT 0x40DD +#define VAR_GIFT_UNUSED_1 0x40DE // Var is written to, but never read +#define VAR_GIFT_UNUSED_2 0x40DF // Var is written to, but never read +#define VAR_GIFT_UNUSED_3 0x40E0 // Var is written to, but never read +#define VAR_GIFT_UNUSED_4 0x40E1 // Var is written to, but never read +#define VAR_GIFT_UNUSED_5 0x40E2 // Var is written to, but never read +#define VAR_GIFT_UNUSED_6 0x40E3 // Var is written to, but never read +#define VAR_GIFT_UNUSED_7 0x40E4 // var is written to, but never read +#define VAR_UNUSED_0x40E5 0x40E5 // Unused Var +#define VAR_DAILY_SLOTS 0x40E6 +#define VAR_DAILY_WILDS 0x40E7 +#define VAR_DAILY_BLENDER 0x40E8 +#define VAR_DAILY_PLANTED_BERRIES 0x40E9 +#define VAR_DAILY_PICKED_BERRIES 0x40EA +#define VAR_DAILY_ROULETTE 0x40EB +#define VAR_SECRET_BASE_STEP_COUNTER 0x40EC // Used by Secret Base TV programs +#define VAR_SECRET_BASE_LAST_ITEM_USED 0x40ED // Used by Secret Base TV programs +#define VAR_SECRET_BASE_LOW_TV_FLAGS 0x40EE // Used by Secret Base TV programs +#define VAR_SECRET_BASE_HIGH_TV_FLAGS 0x40EF // Used by Secret Base TV programs +#define VAR_SECRET_BASE_IS_NOT_LOCAL 0x40F0 // Set to TRUE while in another player's secret base. +#define VAR_DAILY_BP 0x40F1 +#define VAR_WALLY_CALL_STEP_COUNTER 0x40F2 +#define VAR_SCOTT_FORTREE_CALL_STEP_COUNTER 0x40F3 +#define VAR_ROXANNE_CALL_STEP_COUNTER 0x40F4 +#define VAR_SCOTT_BF_CALL_STEP_COUNTER 0x40F5 +#define VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER 0x40F6 +#define VAR_UNUSED_0x40F7 0x40F7 // Unused Var +#define VAR_UNUSED_0x40F8 0x40F8 // Unused Var +#define VAR_UNUSED_0x40F9 0x40F9 // Unused Var +#define VAR_UNUSED_0x40FA 0x40FA // Unused Var +#define VAR_UNUSED_0x40FB 0x40FB // Unused Var +#define VAR_UNUSED_0x40FC 0x40FC // Unused Var +#define VAR_UNUSED_0x40FD 0x40FD // Unused Var +#define VAR_UNUSED_0x40FE 0x40FE // Unused Var +#define VAR_UNUSED_0x40FF 0x40FF // Unused Var -#define VARS_END 0x40FF -#define VARS_COUNT (VARS_END - VARS_START + 1) +#define VARS_END 0x40FF +#define VARS_COUNT (VARS_END - VARS_START + 1) #define SPECIAL_VARS_START 0x8000 // special vars From 96d190f5ad3e36a6fdebb28a0316b40c55d22732 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Mon, 12 Sep 2022 20:39:21 -0600 Subject: [PATCH 252/271] Updated Toxic Status Counter --- src/battle_ai_switch_items.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f72459e8d5..184cea1c65 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -337,7 +337,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) { //Toxic moduloChance = 2; //50% - if (gBattleMons[gActiveBattler].status1 & (STATUS1_TOXIC_COUNTER > 2) + if (((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) >= STATUS1_TOXIC_TURN(2)) && gBattleMons[gActiveBattler].hp >= (gBattleMons[gActiveBattler].maxHP / 3) && (Random() % (moduloChance*chanceReducer)) == 0) switchMon = TRUE; From 2d841a25f96854ffa449650cc1f04d7154883d0b Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 13 Sep 2022 15:45:01 -0300 Subject: [PATCH 253/271] Removed unused extern declaration of old gUnknown func --- src/item.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/item.c b/src/item.c index 0f5746027b..acb00acc75 100644 --- a/src/item.c +++ b/src/item.c @@ -15,8 +15,6 @@ #include "constants/items.h" #include "constants/hold_effects.h" -extern u16 gUnknown_0203CF30[]; - // this file's functions static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count); static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count); From de32940fdf9e00d3f7c2b6a748219658f78a3a81 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Tue, 13 Sep 2022 16:26:36 -0300 Subject: [PATCH 254/271] Further removed trailing whitespaces --- asm/macros/battle_anim_script.inc | 6 +- asm/macros/battle_frontier/battle_tower.inc | 20 +- asm/macros/music_voice.inc | 4 +- data/battle_anim_scripts.s | 18 +- data/battle_scripts_1.s | 10 +- include/constants/battle_anim.h | 2 +- include/constants/battle_string_ids.h | 2 +- sound/direct_sound_data.inc | 2 +- src/battle_ai_switch_items.c | 14 +- src/battle_ai_util.c | 36 +- src/battle_anim.c | 2 +- src/battle_anim_effects_1.c | 2 +- src/battle_anim_ghost.c | 4 +- src/battle_anim_new.c | 472 +++++++++--------- src/battle_debug.c | 8 +- src/battle_interface.c | 2 +- src/battle_message.c | 6 +- src/battle_z_move.c | 58 +-- src/data/battle_moves.h | 6 +- src/data/pokemon/base_stats.h | 10 +- src/data/pokemon/form_change_table_pointers.h | 2 +- .../pokemon/form_species_table_pointers.h | 10 +- src/data/pokemon/level_up_learnsets.h | 30 +- src/data/pokemon/pokedex_orders.h | 28 +- src/data/text/move_descriptions.h | 70 +-- src/data/text/move_names.h | 2 +- src/daycare.c | 4 +- src/debug.c | 4 +- src/evolution_scene.c | 2 +- src/item_use.c | 2 +- src/pokemon.c | 14 +- src/pokemon_debug.c | 38 +- src/pokemon_summary_screen.c | 2 +- src/scrcmd.c | 2 +- src/start_menu.c | 2 +- src/wild_encounter.c | 2 +- tools/aif2pcm/main.c | 14 +- tools/gbagfx/font.c | 6 +- tools/jsonproc/inja.hpp | 2 +- tools/mapjson/mapjson.cpp | 14 +- tools/preproc/c_file.cpp | 4 +- tools/preproc/charmap.cpp | 2 +- tools/scaninc/source_file.cpp | 4 +- 43 files changed, 472 insertions(+), 472 deletions(-) diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index bdc1197486..a98a344fa1 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -283,7 +283,7 @@ .macro jumpretfalse ptr:req jumpreteq FALSE, \ptr .endm - + .macro jumpifdoublebattle ptr:req createvisualtask AnimTask_IsDoubleBattle, 0 jumprettrue \ptr @@ -305,7 +305,7 @@ .hword \launchtemplatearg7 .hword \launchtemplatearg8 .endm - + .macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8 .byte 0x3 .word \launchtaskPtr @@ -321,7 +321,7 @@ .hword \launchtaskarg7 .hword \launchtaskarg8 .endm - + .macro setblends setblends_value .byte 0xC .hword \setblends_value diff --git a/asm/macros/battle_frontier/battle_tower.inc b/asm/macros/battle_frontier/battle_tower.inc index 46bbc392f6..49e72e7446 100644 --- a/asm/macros/battle_frontier/battle_tower.inc +++ b/asm/macros/battle_frontier/battle_tower.inc @@ -89,15 +89,15 @@ setvar VAR_0x8004, BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA special CallBattleTowerFunc .endm - + @Custom multi-battle commands - + .macro choose_mons fadescreen 1 special ChooseHalfPartyForBattle @ choose 3 mons for battle waitstate .endm - + .macro multi_do type:req, partnerId:req, partnerPicId:req special ReducePlayerPartyToSelectedMons setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA @@ -113,26 +113,26 @@ special CallFrontierUtilFunc special LoadPlayerParty .endm - + .macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req special SavePlayerParty trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons multi_do MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId .endm - + .macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req special SavePlayerParty trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons multi_do MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId .endm - + @ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out. .macro multi_wild partnerId:req, partnerPicId:req special SavePlayerParty multi_do MULTI_BATTLE_2_VS_WILD, \partnerId, \partnerPicId .endm - + .macro multi_do_fixed type:req, partnerId:req, partnerPicId:req setvar VAR_0x8004, SPECIAL_BATTLE_MULTI setvar VAR_0x8005, \type @@ -144,20 +144,20 @@ special CallFrontierUtilFunc special LoadPlayerParty .endm - + .macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req special SavePlayerParty trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId .endm - + .macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req special SavePlayerParty trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId .endm - + @ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out. .macro multi_fixed_wild partnerId:req, partnerPicId:req special SavePlayerParty diff --git a/asm/macros/music_voice.inc b/asm/macros/music_voice.inc index 1460efe9e3..a4bbbcba63 100644 --- a/asm/macros/music_voice.inc +++ b/asm/macros/music_voice.inc @@ -150,13 +150,13 @@ .4byte \sample .byte 0xff, 0, 0xff, 0 .endm - + .macro cry_uncomp sample @ not compressed .byte 0x0, 60, 0, 0 .4byte \sample .byte 0xff, 0, 0xff, 0 .endm - + .macro cry_reverse_uncomp sample @ not compressed .byte 0x10, 60, 0, 0 .4byte \sample diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index f83d437a5d..a36eddb162 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -14196,7 +14196,7 @@ TerrainPulseElectric: createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(27, 27, 0) goto TerrainPulseEnd - + TerrainPulseGrass: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(11, 26, 11) waitforvisualfinish @@ -14218,7 +14218,7 @@ TerrainPulseFairy: createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 24, 31) goto TerrainPulseEnd - + TerrainPulsePsychic: createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(27, 0, 13) waitforvisualfinish @@ -24740,7 +24740,7 @@ General_RestoreBg: restorebg waitbgfadein end - + end General_ZMoveActivate: @@ -25263,8 +25263,8 @@ FinishSupersonicSkystrike: call UnsetPsychicBg waitforvisualfinish end - - + + Move_ACID_DOWNPOUR: loadspritegfx ANIM_TAG_BLUE_ORB @ reversal loadspritegfx ANIM_TAG_POISON_JAB @ poison jab @@ -25951,7 +25951,7 @@ NeverendingNightmareGeyser: createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10 return - + Move_CORKSCREW_CRASH:: loadspritegfx ANIM_TAG_SPIKES @metal bits loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge @@ -26669,7 +26669,7 @@ HavocSpearSparkTarget: @ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000 launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000 return - + Move_SHATTERED_PSYCHE:: loadspritegfx ANIM_TAG_IMPACT @hit @@ -29127,7 +29127,7 @@ OceanicOperettaExplosion: launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x10 0x10 ANIM_TARGET 0x1 delay 0x6 return - + Move_SPLINTERED_STORMSHARDS:: loadspritegfx ANIM_TAG_ROCKS @rock @@ -29388,7 +29388,7 @@ SplinteredStormshardsFinishFadeReturn: return -Move_LETS_SNUGGLE_FOREVER:: +Move_LETS_SNUGGLE_FOREVER:: loadspritegfx ANIM_TAG_MAGENTA_HEART @sharm loadspritegfx ANIM_TAG_MUSIC_NOTES @music note loadspritegfx ANIM_TAG_SMALL_BUBBLES @fake tears diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 31c284e7dc..3c4b0ef2b7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -511,7 +511,7 @@ BattleScript_BeakBlastSetUp:: setbeakblast BS_ATTACKER printstring STRINGID_EMPTYSTRING3 waitmessage 1 - playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL + playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL printstring STRINGID_HEATUPBEAK waitmessage B_WAIT_TIME_LONG end2 @@ -601,7 +601,7 @@ BattleScript_ScaleShotEnd:: moveendcase MOVEEND_SYNCHRONIZE_TARGET moveendfrom MOVEEND_STATUS_IMMUNITY_ABILITIES end - + BattleScript_EffectSkyDrop: jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2 attackcanceler @@ -5648,7 +5648,7 @@ BattleScript_EffectRolePlay:: pause 20 destroyabilitypopup pause 40 -.endif +.endif printstring STRINGID_PKMNCOPIEDFOE waitmessage B_WAIT_TIME_LONG switchinabilities BS_ATTACKER @@ -9625,7 +9625,7 @@ BattleScript_StatUpZMove:: waitmessage B_WAIT_TIME_LONG BattleScript_StatUpZMoveEnd: return - + BattleScript_HealReplacementZMove:: playanimation BS_SCRIPTING B_ANIM_WISH_HEAL 0x0 printfromtable gZEffectStringIds @@ -9836,7 +9836,7 @@ BattleScript_NeutralizingGasExitsLoop: jumpifbytenotequal gBattlerTarget, sByteFour, BattleScript_NeutralizingGasExitsLoop @ SOMEHOW, comparing to gBattlersCount is problematic. restoretarget return - + BattleScript_MagicianActivates:: call BattleScript_AbilityPopUp call BattleScript_ItemSteal diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index db2efd8d05..0cdb878dfa 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -461,7 +461,7 @@ #define BG_WATER_2 41 #define BG_POISON 42 #define BG_AEROBLAST 43 -#define BG_HURRICANE 44 +#define BG_HURRICANE 44 #define BG_ELECTRIC_TERRAIN 45 #define BG_GRASSY_TERRAIN 46 #define BG_MISTY_TERRAIN 47 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 4ef2a3a82d..4bce51a455 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -379,7 +379,7 @@ #define STRINGID_PKMNBOXLANETTESPCFULL 378 #define STRINGID_TRAINER1WINTEXT 379 #define STRINGID_TRAINER2WINTEXT 380 - + #define STRINGID_ENDUREDSTURDY 381 #define STRINGID_POWERHERB 382 #define STRINGID_HURTBYITEM 383 diff --git a/sound/direct_sound_data.inc b/sound/direct_sound_data.inc index 4ce03dbedd..95c96fc1ec 100644 --- a/sound/direct_sound_data.inc +++ b/sound/direct_sound_data.inc @@ -3978,7 +3978,7 @@ Cry_Spectrier:: .align 2 Cry_Calyrex:: .incbin "sound/direct_sound_samples/cries/calyrex.bin" -/* +/* .align 2 Cry_Wyrdeer:: .incbin "sound/direct_sound_samples/cries/wyrdeer.bin" diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f2a2efe557..69ba581228 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -793,17 +793,17 @@ static bool32 AiExpectsToFaintPlayer(void) bool32 canFaintPlayer; u32 i; u8 target = gBattleStruct->aiChosenTarget[gActiveBattler]; - + if (gBattleStruct->aiMoveOrAction[gActiveBattler] > 3) return FALSE; // AI not planning to use move - + if (GetBattlerSide(target) != GetBattlerSide(gActiveBattler) && CanIndexMoveFaintTarget(gActiveBattler, target, gBattleStruct->aiMoveOrAction[gActiveBattler], 0) && AI_WhoStrikesFirst(gActiveBattler, target, GetAIChosenMove(gActiveBattler)) == AI_IS_FASTER) { // We expect to faint the target and move first -> dont use an item return TRUE; } - + return FALSE; } @@ -818,10 +818,10 @@ static bool8 ShouldUseItem(void) if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT) || gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED) return FALSE; - + if (gStatuses3[gActiveBattler] & STATUS3_EMBARGO) return FALSE; - + if (AiExpectsToFaintPlayer()) return FALSE; @@ -948,14 +948,14 @@ static bool8 ShouldUseItem(void) static bool32 AI_ShouldHeal(u32 healAmount) { bool32 shouldHeal = FALSE; - + if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4 || gBattleMons[gActiveBattler].hp == 0 || (healAmount != 0 && gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > healAmount)) { // We have low enough HP to consider healing shouldHeal = !AI_OpponentCanFaintAiWithMod(healAmount); // if target can kill us even after we heal, why bother } - + return shouldHeal; } diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 75964664e3..e1654eb30c 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -793,7 +793,7 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness, dmg *= 2; else if (move == MOVE_SURGING_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH)) dmg *= 3; - + if (dmg == 0) dmg = 1; } @@ -804,7 +804,7 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness, RestoreBattlerData(battlerAtk); RestoreBattlerData(battlerDef); - + // convert multiper to AI_EFFECTIVENESS_xX *typeEffectiveness = AI_GetEffectiveness(effectivenessMultiplier); @@ -1159,11 +1159,11 @@ bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability) s32 AI_GetAbility(u32 battlerId) { u32 knownAbility = GetBattlerAbility(battlerId); - + // The AI knows its own ability. if (IsBattlerAIControlled(battlerId)) return knownAbility; - + // Check neutralizing gas, gastro acid if (knownAbility == ABILITY_NONE) return knownAbility; @@ -1183,10 +1183,10 @@ s32 AI_GetAbility(u32 battlerId) { abilityGuess = gBaseStats[gBattleMons[battlerId].species].abilities[Random() % NUM_ABILITY_SLOTS]; } - + return abilityGuess; } - + return ABILITY_NONE; // Unknown. } @@ -2691,7 +2691,7 @@ static bool32 AI_CanPoisonType(u8 battlerAttacker, u8 battlerTarget) static bool32 AI_CanBePoisoned(u8 battlerAtk, u8 battlerDef) { u16 ability = AI_DATA->abilities[battlerDef]; - + if (!(AI_CanPoisonType(battlerAtk, battlerDef)) || gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD || gBattleMons[battlerDef].status1 & STATUS1_ANY @@ -3042,7 +3042,7 @@ bool32 IsValidDoubleBattle(u8 battlerAtk) u16 GetAllyChosenMove(u8 battlerId) { u8 partnerBattler = BATTLE_PARTNER(battlerId); - + if (!IsBattlerAlive(partnerBattler) || !IsBattlerAIControlled(partnerBattler)) return MOVE_NONE; else if (partnerBattler > battlerId) // Battler with the lower id chooses the move first. @@ -3444,7 +3444,7 @@ void IncreaseStatUpScore(u8 battlerAtk, u8 battlerDef, u8 statId, s16 *score) if (AI_DATA->hpPercents[battlerAtk] < 80 && AI_RandLessThan(128)) return; - + if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; // Damaging moves would get a score boost from AI_TryToFaint or PreferStrongestMove so we don't consider them here @@ -3563,7 +3563,7 @@ void IncreaseParalyzeScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) { if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; - + if (AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) { u8 atkSpeed = GetBattlerTotalSpeedStat(battlerAtk); @@ -3584,7 +3584,7 @@ void IncreaseSleepScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) { if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; - + if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) *score += 2; else @@ -3602,7 +3602,7 @@ void IncreaseConfusionScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score) { if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; - + if (AI_CanConfuse(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_CONFUSION && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_STATUS) @@ -3633,26 +3633,26 @@ bool32 ShouldUseZMove(u8 battlerAtk, u8 battlerDef, u16 chosenMove) return FALSE; //don't use z move on partner if (gBattleStruct->zmove.used[battlerAtk]) return FALSE; //cant use z move twice - + if (IsViableZMove(battlerAtk, chosenMove)) { u8 effectiveness; - + if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU) return FALSE; // Don't waste a Z-Move busting disguise if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove)) return FALSE; // Don't waste a Z-Move busting Ice Face - + if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) return FALSE; else if (!IS_MOVE_STATUS(chosenMove) && IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove)) return FALSE; - + if (!IS_MOVE_STATUS(chosenMove) && AI_CalcDamage(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE) >= gBattleMons[battlerDef].hp) return FALSE; // don't waste damaging z move if can otherwise faint target - + return TRUE; } - + return FALSE; } diff --git a/src/battle_anim.c b/src/battle_anim.c index 2806160149..509369789c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -219,7 +219,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo { s32 i; bool32 hideHpBoxes = (tableId == MOVE_TRANSFORM) ? FALSE : TRUE; - + if (!isMoveAnim) { switch (tableId) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 048b37c660..93bb495241 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -6798,7 +6798,7 @@ static const union AffineAnimCmd sCompressTargetHorizontallyAffineAnimCmds[] = static void AnimTask_CompressTargetStep(u8 taskId) { struct Task* task = &gTasks[taskId]; - + if (!RunAffineAnimFromTaskData(task)) DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 81cc6760c9..f21654e3e8 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -888,7 +888,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void else spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond - + if (spriteId != MAX_SPRITES) { x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); @@ -914,7 +914,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void else spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond - + if (spriteId != MAX_SPRITES) { x = 48; diff --git a/src/battle_anim_new.c b/src/battle_anim_new.c index 0a3d433b46..2134a8914d 100644 --- a/src/battle_anim_new.c +++ b/src/battle_anim_new.c @@ -85,7 +85,7 @@ static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] = // GEN 4 // shadow sneak -const struct SpriteTemplate gShadowSneakImpactSpriteTemplate = +const struct SpriteTemplate gShadowSneakImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -97,7 +97,7 @@ const struct SpriteTemplate gShadowSneakImpactSpriteTemplate = }; // power trick -const struct SpriteTemplate gPowerTrickSpriteTemplate = +const struct SpriteTemplate gPowerTrickSpriteTemplate = { .tileTag = ANIM_TAG_POWER_TRICK, .paletteTag = ANIM_TAG_POWER_TRICK, @@ -111,7 +111,7 @@ const struct SpriteTemplate gPowerTrickSpriteTemplate = //// GEN 5 //shell smash -const struct SpriteTemplate gShellSmashLeftShellSpriteTemplate = +const struct SpriteTemplate gShellSmashLeftShellSpriteTemplate = { .tileTag = ANIM_TAG_SHELL_RIGHT, .paletteTag = ANIM_TAG_SHELL_RIGHT, @@ -122,7 +122,7 @@ const struct SpriteTemplate gShellSmashLeftShellSpriteTemplate = .callback = AnimBite }; -const struct SpriteTemplate gShellSmashRightShellSpriteTemplate = +const struct SpriteTemplate gShellSmashRightShellSpriteTemplate = { .tileTag = ANIM_TAG_SHELL_LEFT, .paletteTag = ANIM_TAG_SHELL_LEFT, @@ -133,7 +133,7 @@ const struct SpriteTemplate gShellSmashRightShellSpriteTemplate = .callback = AnimBite }; -const struct SpriteTemplate gShellSmashPurpleRocksSpriteTemplate = +const struct SpriteTemplate gShellSmashPurpleRocksSpriteTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_SHELL_RIGHT, @@ -352,7 +352,7 @@ const struct SpriteTemplate gSimpleBeamBrownTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = TranslateAnimSpriteToTargetMonLocation }; - + const struct SpriteTemplate gSimpleBeamPinkTemplate = { .tileTag = ANIM_TAG_GOLD_RING, @@ -411,12 +411,12 @@ const struct SpriteTemplate gQuickGuardArmImpactTemplate = }; //sky drop -static const union AffineAnimCmd sSkyDropFlyBallAffineAnimCmd_0[] = +static const union AffineAnimCmd sSkyDropFlyBallAffineAnimCmd_0[] = { - AFFINEANIMCMD_FRAME(0xa0, 0x100, 0x50, 0x0), + AFFINEANIMCMD_FRAME(0xa0, 0x100, 0x50, 0x0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const sSkyDropFlyBallAffineAnimCmds[] = +static const union AffineAnimCmd *const sSkyDropFlyBallAffineAnimCmds[] = { sSkyDropFlyBallAffineAnimCmd_0 }; @@ -604,7 +604,7 @@ const struct SpriteTemplate gHornLeechHornTemplate = }; //dual chop -const struct SpriteTemplate gDualChopImpactTemplate = +const struct SpriteTemplate gDualChopImpactTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -971,7 +971,7 @@ const struct SpriteTemplate gTechnoBlastIceBlastTemplate = .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = TranslateAnimSpriteToTargetMonLocation -}; +}; const struct SpriteTemplate gTechnoBlastIceSparkTemplate = { .tileTag = ANIM_TAG_SPARK_2, @@ -1202,7 +1202,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_DrakeStrikePlayer[] = AFFINEANIMCMD_FRAME(0, 0, 0xb9, 1), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sSpriteAffineAnim_DrakeStrikeOpponent[] = +static const union AffineAnimCmd sSpriteAffineAnim_DrakeStrikeOpponent[] = { AFFINEANIMCMD_FRAME(0, 0, 0x50, 1), AFFINEANIMCMD_END, @@ -1270,15 +1270,15 @@ const struct SpriteTemplate gForestsCurseIngrainTemplate = }; //petal blizzard -static const union AnimCmd sAnimCmd_PetalBlizzard1_0[] = +static const union AnimCmd sAnimCmd_PetalBlizzard1_0[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_JUMP(0), }; -static const union AnimCmd *const sAnimCmdTable_PetalBlizzard1[] = +static const union AnimCmd *const sAnimCmdTable_PetalBlizzard1[] = { sAnimCmd_PetalBlizzard1_0, -}; +}; const struct SpriteTemplate gPetalBlizzardTwister1Template = { .tileTag = ANIM_TAG_FLOWER, @@ -1290,13 +1290,13 @@ const struct SpriteTemplate gPetalBlizzardTwister1Template = .callback = AnimMoveTwisterParticle }; static const u16 sPetalBlizzardFlowerOam[] = {0x0, 0x2000,0x0800,0x0}; //todo: convert to oam data -static const union AnimCmd sAnimCmd_PetalBlizzard2_0[] = +static const union AnimCmd sAnimCmd_PetalBlizzard2_0[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(4, 0), ANIMCMD_END, }; -static const union AnimCmd *const sAnimCmdTable_PetalBlizzard2[] = +static const union AnimCmd *const sAnimCmdTable_PetalBlizzard2[] = { sAnimCmd_PetalBlizzard2_0, }; @@ -2040,7 +2040,7 @@ const struct SpriteTemplate gPrecipiceBladesPlumeTemplate = }; //dragon ascent -static const union AffineAnimCmd sAffineAnimCmd_Drake[] = +static const union AffineAnimCmd sAffineAnimCmd_Drake[] = { AFFINEANIMCMD_FRAME(0, 0, 0, 1), //drake faces up AFFINEANIMCMD_END, @@ -2837,7 +2837,7 @@ const struct SpriteTemplate gCoreEnforcerBeamTemplate = .callback = SpriteCB_CoreEnforcerBeam }; -const struct SpriteTemplate gCoreEnforcerExplosionTemplate = +const struct SpriteTemplate gCoreEnforcerExplosionTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_EXPLOSION, @@ -3009,7 +3009,7 @@ const struct SpriteTemplate gPrismaticLaserChargeTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; - + const struct SpriteTemplate gPrismaticLaserYellowOutwardTemplate = { .tileTag = ANIM_TAG_GREEN_SPIKE, @@ -4111,7 +4111,7 @@ const struct SpriteTemplate gSteelBeamSpikeShardTemplate = // Z MOVES //activate -const struct SpriteTemplate gZMoveSymbolSpriteTemplate = +const struct SpriteTemplate gZMoveSymbolSpriteTemplate = { .tileTag = ANIM_TAG_Z_MOVE_SYMBOL, .paletteTag = ANIM_TAG_Z_MOVE_SYMBOL, @@ -4152,7 +4152,7 @@ const struct SpriteTemplate gYellowZMoveEnergySpriteTemplate = .callback = AnimEndureEnergy, }; // breakneck blitz -const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate = +const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate = { .tileTag = ANIM_TAG_HOLLOW_ORB, .paletteTag = ANIM_TAG_FLAT_ROCK, @@ -4162,7 +4162,7 @@ const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimDragonDanceOrb }; -const struct SpriteTemplate gBreakneckBlitzHitSpriteTemplate = +const struct SpriteTemplate gBreakneckBlitzHitSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_FLAT_ROCK, @@ -4173,7 +4173,7 @@ const struct SpriteTemplate gBreakneckBlitzHitSpriteTemplate = .callback = AnimHitSplatBasic }; // all out pummelling -const struct SpriteTemplate gAllOutPummelingOnslaughtSpriteTemplate = +const struct SpriteTemplate gAllOutPummelingOnslaughtSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_IMPACT, @@ -4196,7 +4196,7 @@ static const union AffineAnimCmd* const sSupersonicSkystrikeAffineAnimTable[] = sSupersonicSkystrikeAffinePlayerSide, sSupersonicSkystrikeAffineOpponentSide, }; -const struct SpriteTemplate gSupersonicSkystrikeFlySpriteTemplate = +const struct SpriteTemplate gSupersonicSkystrikeFlySpriteTemplate = { .tileTag = ANIM_TAG_BIRD, .paletteTag = ANIM_TAG_BIRD, @@ -4207,7 +4207,7 @@ const struct SpriteTemplate gSupersonicSkystrikeFlySpriteTemplate = .callback = AnimFlyBallAttack }; //acid downpour -const struct SpriteTemplate gAcidDownpourReversalSpriteTemplate = +const struct SpriteTemplate gAcidDownpourReversalSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4217,7 +4217,7 @@ const struct SpriteTemplate gAcidDownpourReversalSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimReversalOrb }; -const struct SpriteTemplate gAcidDownpourAuraSpriteTemplate = +const struct SpriteTemplate gAcidDownpourAuraSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4228,7 +4228,7 @@ const struct SpriteTemplate gAcidDownpourAuraSpriteTemplate = .callback = AnimParticleInVortex }; //tectonic rage -const struct SpriteTemplate gTectonicRageBlastBurnSpriteTemplate = +const struct SpriteTemplate gTectonicRageBlastBurnSpriteTemplate = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_FIRE_PLUME, @@ -4238,7 +4238,7 @@ const struct SpriteTemplate gTectonicRageBlastBurnSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBlastBurnTargetPlume }; -const struct SpriteTemplate gTectonicRageExplosionSpriteTemplate = +const struct SpriteTemplate gTectonicRageExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -4250,7 +4250,7 @@ const struct SpriteTemplate gTectonicRageExplosionSpriteTemplate = }; // continental crush -const struct SpriteTemplate gContinentalCrushNeedleArmSpriteTemplate = +const struct SpriteTemplate gContinentalCrushNeedleArmSpriteTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, @@ -4260,7 +4260,7 @@ const struct SpriteTemplate gContinentalCrushNeedleArmSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimNeedleArmSpike }; -const struct SpriteTemplate gContinentalCrushBigRockStompSpriteTemplate = +const struct SpriteTemplate gContinentalCrushBigRockStompSpriteTemplate = { .tileTag = ANIM_TAG_REALLY_BIG_ROCK, .paletteTag = ANIM_TAG_REALLY_BIG_ROCK, @@ -4270,7 +4270,7 @@ const struct SpriteTemplate gContinentalCrushBigRockStompSpriteTemplate = .affineAnims = sSpriteAffineAnimTable_LargeHailRock, .callback = SpriteCB_FallingObject }; -const struct SpriteTemplate gContinentalCrushFocusEnergySpriteTemplate = +const struct SpriteTemplate gContinentalCrushFocusEnergySpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_ROCKS, @@ -4280,7 +4280,7 @@ const struct SpriteTemplate gContinentalCrushFocusEnergySpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gContinentalCrushGrowingRockSpriteTemplate = +const struct SpriteTemplate gContinentalCrushGrowingRockSpriteTemplate = { .tileTag = ANIM_TAG_REALLY_BIG_ROCK, .paletteTag = ANIM_TAG_REALLY_BIG_ROCK, @@ -4290,7 +4290,7 @@ const struct SpriteTemplate gContinentalCrushGrowingRockSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gContinentalCrushEruptionSpriteTemplate = +const struct SpriteTemplate gContinentalCrushEruptionSpriteTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, @@ -4302,7 +4302,7 @@ const struct SpriteTemplate gContinentalCrushEruptionSpriteTemplate = }; // savage spin out -const struct SpriteTemplate gSavageSpinOutStringBlastSpriteTemplate = +const struct SpriteTemplate gSavageSpinOutStringBlastSpriteTemplate = { .tileTag = ANIM_TAG_STRING, .paletteTag = ANIM_TAG_STRING, @@ -4312,7 +4312,7 @@ const struct SpriteTemplate gSavageSpinOutStringBlastSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimAirWaveCrescent }; -const struct SpriteTemplate gSavageSpinOutCacoonSpriteTemplate = +const struct SpriteTemplate gSavageSpinOutCacoonSpriteTemplate = { .tileTag = ANIM_TAG_COCOON, .paletteTag = ANIM_TAG_COCOON, @@ -4322,7 +4322,7 @@ const struct SpriteTemplate gSavageSpinOutCacoonSpriteTemplate = .affineAnims = gAffineAnims_Bite, .callback = AnimBite }; -const struct SpriteTemplate gSavageSpinOutGreenChargeSpriteTemplate = +const struct SpriteTemplate gSavageSpinOutGreenChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4332,7 +4332,7 @@ const struct SpriteTemplate gSavageSpinOutGreenChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gSavageSpinOutGreenCutSpriteTemplate = +const struct SpriteTemplate gSavageSpinOutGreenCutSpriteTemplate = { .tileTag = ANIM_TAG_CUT, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4342,7 +4342,7 @@ const struct SpriteTemplate gSavageSpinOutGreenCutSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCuttingSlice }; -const struct SpriteTemplate gSavageSpinOutWhiteExplosionSpriteTemplate = +const struct SpriteTemplate gSavageSpinOutWhiteExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_AIR_WAVE_2, @@ -4354,7 +4354,7 @@ const struct SpriteTemplate gSavageSpinOutWhiteExplosionSpriteTemplate = }; // never ending nightmare -const struct SpriteTemplate gNeverEndingNightmareRingAttackerSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareRingAttackerSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4364,7 +4364,7 @@ const struct SpriteTemplate gNeverEndingNightmareRingAttackerSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gNeverEndingNightmareRingTargetSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareRingTargetSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4374,7 +4374,7 @@ const struct SpriteTemplate gNeverEndingNightmareRingTargetSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gNeverEndingNightmareFocusEnergySpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareFocusEnergySpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4384,7 +4384,7 @@ const struct SpriteTemplate gNeverEndingNightmareFocusEnergySpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gNeverEndingNightmareHandSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareHandSpriteTemplate = { .tileTag = ANIM_TAG_ASSURANCE_HAND, .paletteTag = ANIM_TAG_ASSURANCE_HAND, @@ -4394,7 +4394,7 @@ const struct SpriteTemplate gNeverEndingNightmareHandSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimNeedleArmSpike }; -const struct SpriteTemplate gNeverEndingNightmareBlastBurnSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareBlastBurnSpriteTemplate = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4404,7 +4404,7 @@ const struct SpriteTemplate gNeverEndingNightmareBlastBurnSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBlastBurnTargetPlume }; -const struct SpriteTemplate gNeverEndingNightmareGeyserHexSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareGeyserHexSpriteTemplate = { .tileTag = ANIM_TAG_VERTICAL_HEX, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4414,7 +4414,7 @@ const struct SpriteTemplate gNeverEndingNightmareGeyserHexSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_GeyserTarget }; -const struct SpriteTemplate gNeverEndingNightmareExplosionSpriteTemplate = +const struct SpriteTemplate gNeverEndingNightmareExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4426,7 +4426,7 @@ const struct SpriteTemplate gNeverEndingNightmareExplosionSpriteTemplate = }; // corkscrew crash -const struct SpriteTemplate gCorkscrewCrashMetalBitSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashMetalBitSpriteTemplate = { .tileTag = ANIM_TAG_SPIKES, .paletteTag = ANIM_TAG_SPIKES, @@ -4436,7 +4436,7 @@ const struct SpriteTemplate gCorkscrewCrashMetalBitSpriteTemplate = .affineAnims = gAffineAnims_TearDrop, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gCorkscrewCrashChargeSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashChargeSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4446,7 +4446,7 @@ const struct SpriteTemplate gCorkscrewCrashChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gCorkscrewCrashCorkscrewFlyUpSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashCorkscrewFlyUpSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4463,7 +4463,7 @@ static const union AffineAnimCmd sCorkscrewCrashFlyDownAffineOpponentSide[] = { static const union AffineAnimCmd* const sCorkscrewCrashFlyDownAffineAnimTable[] = { sCorkscrewCrashFlyDownAffineOpponentSide, }; -const struct SpriteTemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashCorkscrewFlyDownSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4485,7 +4485,7 @@ static const union AffineAnimCmd* const sCorkscrewCrashStrikeAffineAnimTable[] = sCorkscrewCrashStrikePlayerAffineAnims, sCorkscrewCrashStrikeTargetAffineAnims, }; -const struct SpriteTemplate gCorkscrewCrashStrikeSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashStrikeSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4502,7 +4502,7 @@ static const union AffineAnimCmd sCorkscrewCrashLeftAffineAnims[] = { static const union AffineAnimCmd* const sCorkscrewCrashLeftAffineAnimTable[] = { sCorkscrewCrashLeftAffineAnims, }; -const struct SpriteTemplate gCorkscrewCrashLeftUpSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashLeftUpSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4512,7 +4512,7 @@ const struct SpriteTemplate gCorkscrewCrashLeftUpSpriteTemplate = .affineAnims = sCorkscrewCrashLeftAffineAnimTable, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gCorkscrewCrashLeftDownSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashLeftDownSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4529,7 +4529,7 @@ static const union AffineAnimCmd sCorkscrewCrashRightUpAffineAnims[] = { static const union AffineAnimCmd* const sCorkscrewCrashRightUpAffineAnimTable[] = { sCorkscrewCrashRightUpAffineAnims, }; -const struct SpriteTemplate gCorkscrewCrashRightUpSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashRightUpSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4546,7 +4546,7 @@ static const union AffineAnimCmd sCorkscrewCrashRightDownAffineAnims[] = { static const union AffineAnimCmd* const sCorkscrewCrashRightDownAffineAnimTable[] = { sCorkscrewCrashRightDownAffineAnims, }; -const struct SpriteTemplate gCorkscrewCrashRightDownSpriteTemplate = +const struct SpriteTemplate gCorkscrewCrashRightDownSpriteTemplate = { .tileTag = ANIM_TAG_CORKSCREW, .paletteTag = ANIM_TAG_CORKSCREW, @@ -4558,7 +4558,7 @@ const struct SpriteTemplate gCorkscrewCrashRightDownSpriteTemplate = }; // inferno overdrive -const struct SpriteTemplate gInfernoOverdriveSuperpowerSpriteTemplate = +const struct SpriteTemplate gInfernoOverdriveSuperpowerSpriteTemplate = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4568,7 +4568,7 @@ const struct SpriteTemplate gInfernoOverdriveSuperpowerSpriteTemplate = .affineAnims = sSpriteAffineAnimTable_GrowingSuperpower, .callback = SpriteCB_GrowingSuperpower }; -const struct SpriteTemplate gInfernoOverdriveChargeSpriteTemplate = +const struct SpriteTemplate gInfernoOverdriveChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -4578,7 +4578,7 @@ const struct SpriteTemplate gInfernoOverdriveChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gInfernoOverdriveExplosionSpriteTemplate = +const struct SpriteTemplate gInfernoOverdriveExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -4590,7 +4590,7 @@ const struct SpriteTemplate gInfernoOverdriveExplosionSpriteTemplate = }; // hydro vortex -const struct SpriteTemplate gHydroVortexSuperpowerSpriteTemplate = +const struct SpriteTemplate gHydroVortexSuperpowerSpriteTemplate = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_WATER_ORB, @@ -4600,7 +4600,7 @@ const struct SpriteTemplate gHydroVortexSuperpowerSpriteTemplate = .affineAnims = sSpriteAffineAnimTable_GrowingSuperpower, .callback = SpriteCB_GrowingSuperpower }; -const struct SpriteTemplate gHydroVortexHurricaneSpriteTemplate = +const struct SpriteTemplate gHydroVortexHurricaneSpriteTemplate = { .tileTag = ANIM_TAG_GUST, .paletteTag = ANIM_TAG_WATER_ORB, @@ -4610,7 +4610,7 @@ const struct SpriteTemplate gHydroVortexHurricaneSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEllipticalGust }; -const struct SpriteTemplate gHydroVortexImpactSpriteTemplate = +const struct SpriteTemplate gHydroVortexImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -4622,7 +4622,7 @@ const struct SpriteTemplate gHydroVortexImpactSpriteTemplate = }; // bloom doom -const struct SpriteTemplate gBloomDoomPetalSpinSpriteTemplate = +const struct SpriteTemplate gBloomDoomPetalSpinSpriteTemplate = { .tileTag = ANIM_TAG_FLOWER, .paletteTag = ANIM_TAG_FLOWER, @@ -4632,7 +4632,7 @@ const struct SpriteTemplate gBloomDoomPetalSpinSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFireSpiralOutward }; -const struct SpriteTemplate gBloomDoomGreenChargeSpriteTemplate = +const struct SpriteTemplate gBloomDoomGreenChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4642,7 +4642,7 @@ const struct SpriteTemplate gBloomDoomGreenChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gBloomDoomHurricaneSpriteTemplate = +const struct SpriteTemplate gBloomDoomHurricaneSpriteTemplate = { .tileTag = ANIM_TAG_GUST, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4652,7 +4652,7 @@ const struct SpriteTemplate gBloomDoomHurricaneSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEllipticalGustAttacker, }; -const struct SpriteTemplate gBloomDoomFlowerGeyserSpriteTemplate = +const struct SpriteTemplate gBloomDoomFlowerGeyserSpriteTemplate = { .tileTag = ANIM_TAG_FLOWER, .paletteTag = ANIM_TAG_FLOWER, @@ -4662,7 +4662,7 @@ const struct SpriteTemplate gBloomDoomFlowerGeyserSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_Geyser }; -const struct SpriteTemplate gBloomDoomGreenBeamSpriteTemplate = +const struct SpriteTemplate gBloomDoomGreenBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4672,7 +4672,7 @@ const struct SpriteTemplate gBloomDoomGreenBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate gBloomDoomPetalStarSpriteTemplate = +const struct SpriteTemplate gBloomDoomPetalStarSpriteTemplate = { .tileTag = ANIM_TAG_FLOWER, .paletteTag = ANIM_TAG_FLOWER, @@ -4682,7 +4682,7 @@ const struct SpriteTemplate gBloomDoomPetalStarSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimNeedleArmSpike }; -const struct SpriteTemplate gBloomDoomExplosionSpriteTemplate = +const struct SpriteTemplate gBloomDoomExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_RAZOR_LEAF, @@ -4694,7 +4694,7 @@ const struct SpriteTemplate gBloomDoomExplosionSpriteTemplate = }; // gigavolt havoc -const struct SpriteTemplate gGigavoltHavocChargingSpearSpriteTemplate = +const struct SpriteTemplate gGigavoltHavocChargingSpearSpriteTemplate = { .tileTag = ANIM_TAG_HAVOC_SPEAR, .paletteTag = ANIM_TAG_HAVOC_SPEAR, @@ -4704,7 +4704,7 @@ const struct SpriteTemplate gGigavoltHavocChargingSpearSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gGigavoltHavocLaunchSpearSpriteTemplate = +const struct SpriteTemplate gGigavoltHavocLaunchSpearSpriteTemplate = { .tileTag = ANIM_TAG_HAVOC_SPEAR, .paletteTag = ANIM_TAG_HAVOC_SPEAR, @@ -4714,7 +4714,7 @@ const struct SpriteTemplate gGigavoltHavocLaunchSpearSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSuperpowerFireball }; -const struct SpriteTemplate gGigavoltHavocRingsSpriteTemplate = +const struct SpriteTemplate gGigavoltHavocRingsSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -4724,7 +4724,7 @@ const struct SpriteTemplate gGigavoltHavocRingsSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gGigavoltHavocGeyserSpriteTemplate = +const struct SpriteTemplate gGigavoltHavocGeyserSpriteTemplate = { .tileTag = ANIM_TAG_VERTICAL_HEX, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -4736,7 +4736,7 @@ const struct SpriteTemplate gGigavoltHavocGeyserSpriteTemplate = }; // shattered psyche -const struct SpriteTemplate gShatteredPsycheReflectHitSpriteTemplate = +const struct SpriteTemplate gShatteredPsycheReflectHitSpriteTemplate = { .tileTag = ANIM_TAG_BLUE_LIGHT_WALL, .paletteTag = ANIM_TAG_BLUE_LIGHT_WALL, @@ -4746,7 +4746,7 @@ const struct SpriteTemplate gShatteredPsycheReflectHitSpriteTemplate = .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatBasic }; -const struct SpriteTemplate gShatteredPsychePinkChargeSpriteTemplate = +const struct SpriteTemplate gShatteredPsychePinkChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_PINK_PETAL, @@ -4756,7 +4756,7 @@ const struct SpriteTemplate gShatteredPsychePinkChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gShatteredPsycheRingSpriteTemplate = +const struct SpriteTemplate gShatteredPsycheRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_PINK_PETAL, @@ -4768,7 +4768,7 @@ const struct SpriteTemplate gShatteredPsycheRingSpriteTemplate = }; // subzero slammer -const struct SpriteTemplate gSubzeroSlammerIceSpinSpriteTemplate = +const struct SpriteTemplate gSubzeroSlammerIceSpinSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -4778,7 +4778,7 @@ const struct SpriteTemplate gSubzeroSlammerIceSpinSpriteTemplate = .affineAnims = gAffineAnims_IceCrystalHit, .callback = AnimFireSpiralOutward }; -const struct SpriteTemplate gSubzeroSlammerExplosionSpriteTemplate = +const struct SpriteTemplate gSubzeroSlammerExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -4788,7 +4788,7 @@ const struct SpriteTemplate gSubzeroSlammerExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSubzeroSlammerIceSwirlSpriteTemplate = +const struct SpriteTemplate gSubzeroSlammerIceSwirlSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -4836,7 +4836,7 @@ static const union AffineAnimCmd* const sDevastatingDrakeLeftAffineAnimTable[] = sDevastatingDrakeLeftAffineAnims, sDevastatingDrakeLeftAffineAnims, }; -const struct SpriteTemplate gDevastatingDrakePurpleEnergySpriteTemplate = +const struct SpriteTemplate gDevastatingDrakePurpleEnergySpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4846,7 +4846,7 @@ const struct SpriteTemplate gDevastatingDrakePurpleEnergySpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gDevastatingDrakeShockwaveSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeShockwaveSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -4856,7 +4856,7 @@ const struct SpriteTemplate gDevastatingDrakeShockwaveSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingShockWaveOrb }; -const struct SpriteTemplate gDevastatingDrakeDrakeUpSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeDrakeUpSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_DRAKE, .paletteTag = ANIM_TAG_PURPLE_DRAKE, @@ -4866,7 +4866,7 @@ const struct SpriteTemplate gDevastatingDrakeDrakeUpSpriteTemplate = .affineAnims = sDevastatingDrakeFlyUpAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gDevastatingDrakeRightSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeRightSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_DRAKE, .paletteTag = ANIM_TAG_PURPLE_DRAKE, @@ -4876,7 +4876,7 @@ const struct SpriteTemplate gDevastatingDrakeRightSpriteTemplate = .affineAnims = sDevastatingDrakeRightAffineAnimTable, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gDevastatingDrakeLeftSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeLeftSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_DRAKE, .paletteTag = ANIM_TAG_PURPLE_DRAKE, @@ -4886,7 +4886,7 @@ const struct SpriteTemplate gDevastatingDrakeLeftSpriteTemplate = .affineAnims = sDevastatingDrakeLeftAffineAnimTable, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gDevastatingDrakeStrikeSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeStrikeSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_DRAKE, .paletteTag = ANIM_TAG_PURPLE_DRAKE, @@ -4896,7 +4896,7 @@ const struct SpriteTemplate gDevastatingDrakeStrikeSpriteTemplate = .affineAnims = sDevastatingDrakeStrikeAffineAnimTable, .callback = AnimFlyBallAttack }; -const struct SpriteTemplate gDevastatingDrakePurpleBlastSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakePurpleBlastSpriteTemplate = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_FIRE_PLUME, @@ -4906,7 +4906,7 @@ const struct SpriteTemplate gDevastatingDrakePurpleBlastSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBlastBurnTargetPlume }; -const struct SpriteTemplate gDevastatingDrakeHexSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeHexSpriteTemplate = { .tileTag = ANIM_TAG_VERTICAL_HEX, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4916,7 +4916,7 @@ const struct SpriteTemplate gDevastatingDrakeHexSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_Geyser }; -const struct SpriteTemplate gDevastatingDrakeExplosionSpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_EXPLOSION, @@ -4926,7 +4926,7 @@ const struct SpriteTemplate gDevastatingDrakeExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gDevastatingDrakeExplosion2SpriteTemplate = +const struct SpriteTemplate gDevastatingDrakeExplosion2SpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -4938,7 +4938,7 @@ const struct SpriteTemplate gDevastatingDrakeExplosion2SpriteTemplate = }; // black hole eclipse -const struct SpriteTemplate gBlackHoleEclipseShockwaveSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseShockwaveSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_BLACK_BALL_2, @@ -4948,7 +4948,7 @@ const struct SpriteTemplate gBlackHoleEclipseShockwaveSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingShockWaveOrb }; -const struct SpriteTemplate gBlackHoleEclipseBlueRingSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseBlueRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_ICE_CHUNK, @@ -4958,7 +4958,7 @@ const struct SpriteTemplate gBlackHoleEclipseBlueRingSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gBlackHoleEclipseBlackRingSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseBlackRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -4968,7 +4968,7 @@ const struct SpriteTemplate gBlackHoleEclipseBlackRingSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gBlackHoleEclipseRedExplosionSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseRedExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4978,7 +4978,7 @@ const struct SpriteTemplate gBlackHoleEclipseRedExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gBlackHoleEclipseWispSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseWispSpriteTemplate = { .tileTag = ANIM_TAG_WISP_ORB, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -4988,7 +4988,7 @@ const struct SpriteTemplate gBlackHoleEclipseWispSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWillOWispOrb }; -const struct SpriteTemplate gBlackHoleEclipseRedRingSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseRedRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -4998,7 +4998,7 @@ const struct SpriteTemplate gBlackHoleEclipseRedRingSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_ICE_CHUNK, @@ -5008,7 +5008,7 @@ const struct SpriteTemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5026,7 +5026,7 @@ static const union AffineAnimCmd gGrowingBackHoleTargetAffineCmds[] = { static const union AffineAnimCmd *const gGrowingBlackHoleTargetAffineAnimTable[] = { gGrowingBackHoleTargetAffineCmds, }; -const struct SpriteTemplate gBlackHoleEclipseHoleSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseHoleSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5044,7 +5044,7 @@ static const union AffineAnimCmd gShrinkingBlackHoleAffineCmds[] = { static const union AffineAnimCmd *const gShrinkingBlackHoleAffineAnimTable[] = { gShrinkingBlackHoleAffineCmds, }; -const struct SpriteTemplate gBlackHoleEclipseHoleShrinkSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseHoleShrinkSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5062,7 +5062,7 @@ static const union AffineAnimCmd gGrowingBackHoleAffineCmds[] = { static const union AffineAnimCmd *const gGrowingBlackHoleAffineAnimTable[] = { gGrowingBackHoleAffineCmds, }; -const struct SpriteTemplate gBlackHoleEclipseHoleUserSpriteTemplate = +const struct SpriteTemplate gBlackHoleEclipseHoleUserSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -5072,7 +5072,7 @@ const struct SpriteTemplate gBlackHoleEclipseHoleUserSpriteTemplate = .affineAnims = gGrowingBlackHoleAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gTargetTwinkleSpriteTemplate = +const struct SpriteTemplate gTargetTwinkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, @@ -5098,7 +5098,7 @@ static const union AffineAnimCmd *const sTwinkleTackleStarAffineAnimTable[] = { sTwinkleTackleStarPlayerAffineAnims, sTwinkleTackleStarOpponentAffineAnims }; -const struct SpriteTemplate gTwinkleTacklePinkStarSpriteTemplate = +const struct SpriteTemplate gTwinkleTacklePinkStarSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_2, .paletteTag = ANIM_TAG_PINK_PETAL, @@ -5108,7 +5108,7 @@ const struct SpriteTemplate gTwinkleTacklePinkStarSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimGrantingStars }; -const struct SpriteTemplate gTwinkleTacklePinkRingSpriteTemplate = +const struct SpriteTemplate gTwinkleTacklePinkRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_PINK_PETAL, @@ -5118,7 +5118,7 @@ const struct SpriteTemplate gTwinkleTacklePinkRingSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gTwinkleTackleStarGrowSpriteTemplate = +const struct SpriteTemplate gTwinkleTackleStarGrowSpriteTemplate = { .tileTag = ANIM_TAG_YELLOW_STAR, .paletteTag = ANIM_TAG_YELLOW_STAR, @@ -5128,7 +5128,7 @@ const struct SpriteTemplate gTwinkleTackleStarGrowSpriteTemplate = .affineAnims = sTwinkleTackleStarAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gTwinkleTackleTwinkleSpriteTemplate = +const struct SpriteTemplate gTwinkleTackleTwinkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, @@ -5138,7 +5138,7 @@ const struct SpriteTemplate gTwinkleTackleTwinkleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCB_TwinkleOnBattler }; -const struct SpriteTemplate gTwinkleTackleDigStarSpriteTemplate = +const struct SpriteTemplate gTwinkleTackleDigStarSpriteTemplate = { .tileTag = ANIM_TAG_YELLOW_STAR, .paletteTag = ANIM_TAG_YELLOW_STAR, @@ -5148,7 +5148,7 @@ const struct SpriteTemplate gTwinkleTackleDigStarSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimDirtPlumeParticle }; -const struct SpriteTemplate gTwinkleTackleYellowImpactSpriteTemplate = +const struct SpriteTemplate gTwinkleTackleYellowImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_YELLOW_STAR, @@ -5158,7 +5158,7 @@ const struct SpriteTemplate gTwinkleTackleYellowImpactSpriteTemplate = .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatBasic }; -const struct SpriteTemplate gTwinkleTackleImpactStarsSpriteTemplate = +const struct SpriteTemplate gTwinkleTackleImpactStarsSpriteTemplate = { .tileTag = ANIM_TAG_PAIN_SPLIT, .paletteTag = ANIM_TAG_YELLOW_STAR, @@ -5170,7 +5170,7 @@ const struct SpriteTemplate gTwinkleTackleImpactStarsSpriteTemplate = }; // catastrokpika -const struct SpriteTemplate gCatastrokpikaSuperpowerSpriteTemplate = +const struct SpriteTemplate gCatastrokpikaSuperpowerSpriteTemplate = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -5182,7 +5182,7 @@ const struct SpriteTemplate gCatastrokpikaSuperpowerSpriteTemplate = }; // 10e6 volt thunderbolt -const struct SpriteTemplate g10MillionVoltBoltYellowFlySpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltYellowFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_SPARK_2, @@ -5192,7 +5192,7 @@ const struct SpriteTemplate g10MillionVoltBoltYellowFlySpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate g10MillionVoltBoltShockwaveSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltShockwaveSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -5202,7 +5202,7 @@ const struct SpriteTemplate g10MillionVoltBoltShockwaveSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingShockWaveOrbOnTarget, }; -const struct SpriteTemplate g10MillionVoltBoltRedBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltRedBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5212,7 +5212,7 @@ const struct SpriteTemplate g10MillionVoltBoltRedBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate g10MillionVoltBoltBlueBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltBlueBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5222,7 +5222,7 @@ const struct SpriteTemplate g10MillionVoltBoltBlueBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate g10MillionVoltBoltPinkBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltPinkBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_BERRY_EATEN, @@ -5232,7 +5232,7 @@ const struct SpriteTemplate g10MillionVoltBoltPinkBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate g10MillionVoltBoltYellowBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltYellowBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_ELECTRIC_ORBS, @@ -5242,7 +5242,7 @@ const struct SpriteTemplate g10MillionVoltBoltYellowBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate g10MillionVoltBoltGreenBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltGreenBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_LEAF, @@ -5252,7 +5252,7 @@ const struct SpriteTemplate g10MillionVoltBoltGreenBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate g10MillionVoltBoltPurpleBeamSpriteTemplate = +const struct SpriteTemplate g10MillionVoltBoltPurpleBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -5264,7 +5264,7 @@ const struct SpriteTemplate g10MillionVoltBoltPurpleBeamSpriteTemplate = }; // stoked sparksurfer -const struct SpriteTemplate gStokedSparksurferFlySpriteTemplate = +const struct SpriteTemplate gStokedSparksurferFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_SPARK_2, @@ -5276,7 +5276,7 @@ const struct SpriteTemplate gStokedSparksurferFlySpriteTemplate = }; // extreme evoboost -const struct SpriteTemplate gExtremeEvoboostRedChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostRedChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5286,7 +5286,7 @@ const struct SpriteTemplate gExtremeEvoboostRedChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostPinkChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPinkChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_BERRY_EATEN, @@ -5296,7 +5296,7 @@ const struct SpriteTemplate gExtremeEvoboostPinkChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostIceChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostIceChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_ICE_CHUNK, @@ -5306,7 +5306,7 @@ const struct SpriteTemplate gExtremeEvoboostIceChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostBlackChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlackChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WISP_ORB, @@ -5316,7 +5316,7 @@ const struct SpriteTemplate gExtremeEvoboostBlackChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostBlueChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlueChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5326,7 +5326,7 @@ const struct SpriteTemplate gExtremeEvoboostBlueChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostPurpleChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPurpleChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -5336,7 +5336,7 @@ const struct SpriteTemplate gExtremeEvoboostPurpleChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostYellowChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostYellowChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -5346,7 +5346,7 @@ const struct SpriteTemplate gExtremeEvoboostYellowChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostGreenChargeUpSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostGreenChargeUpSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_LEAF, @@ -5356,7 +5356,7 @@ const struct SpriteTemplate gExtremeEvoboostGreenChargeUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gExtremeEvoboostRedChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostRedChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5366,7 +5366,7 @@ const struct SpriteTemplate gExtremeEvoboostRedChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostPinkChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPinkChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_BERRY_EATEN, @@ -5376,7 +5376,7 @@ const struct SpriteTemplate gExtremeEvoboostPinkChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostIceChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostIceChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_ICE_CHUNK, @@ -5386,7 +5386,7 @@ const struct SpriteTemplate gExtremeEvoboostIceChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostBlackChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlackChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WISP_ORB, @@ -5396,7 +5396,7 @@ const struct SpriteTemplate gExtremeEvoboostBlackChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostBlueChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlueChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5406,7 +5406,7 @@ const struct SpriteTemplate gExtremeEvoboostBlueChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostPurpleChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPurpleChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -5416,7 +5416,7 @@ const struct SpriteTemplate gExtremeEvoboostPurpleChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostYellowChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostYellowChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -5426,7 +5426,7 @@ const struct SpriteTemplate gExtremeEvoboostYellowChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostGreenChargeCircleSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostGreenChargeCircleSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_LEAF, @@ -5436,7 +5436,7 @@ const struct SpriteTemplate gExtremeEvoboostGreenChargeCircleSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimExtremeEvoboostCircle }; -const struct SpriteTemplate gExtremeEvoboostRedStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostRedStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5446,7 +5446,7 @@ const struct SpriteTemplate gExtremeEvoboostRedStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostPinkStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPinkStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_BERRY_EATEN, @@ -5456,7 +5456,7 @@ const struct SpriteTemplate gExtremeEvoboostPinkStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostIceStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostIceStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_ICE_CHUNK, @@ -5466,7 +5466,7 @@ const struct SpriteTemplate gExtremeEvoboostIceStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostBlackStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlackStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_WISP_ORB, @@ -5476,7 +5476,7 @@ const struct SpriteTemplate gExtremeEvoboostBlackStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostBlueStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostBlueStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5486,7 +5486,7 @@ const struct SpriteTemplate gExtremeEvoboostBlueStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostPurpleStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostPurpleStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -5496,7 +5496,7 @@ const struct SpriteTemplate gExtremeEvoboostPurpleStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostYellowStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostYellowStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -5506,7 +5506,7 @@ const struct SpriteTemplate gExtremeEvoboostYellowStockpileSpriteTemplate = .affineAnims = gStockpileAbsorptionOrbAffineAnimTable, .callback = AnimPowerAbsorptionOrb }; -const struct SpriteTemplate gExtremeEvoboostGreenStockpileSpriteTemplate = +const struct SpriteTemplate gExtremeEvoboostGreenStockpileSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_LEAF, @@ -5518,7 +5518,7 @@ const struct SpriteTemplate gExtremeEvoboostGreenStockpileSpriteTemplate = }; // pulverizing pancake -const struct SpriteTemplate gPulverizingPancakeRedDetectSpriteTemplate = +const struct SpriteTemplate gPulverizingPancakeRedDetectSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5528,7 +5528,7 @@ const struct SpriteTemplate gPulverizingPancakeRedDetectSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpinningSparkle }; -const struct SpriteTemplate gPulverizingPancakeExplosionSpriteTemplate = +const struct SpriteTemplate gPulverizingPancakeExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_ELECTRIC_ORBS, @@ -5538,7 +5538,7 @@ const struct SpriteTemplate gPulverizingPancakeExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gPulverizingPancakeYellowRingSpriteTemplate = +const struct SpriteTemplate gPulverizingPancakeYellowRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_ELECTRIC_ORBS, @@ -5550,7 +5550,7 @@ const struct SpriteTemplate gPulverizingPancakeYellowRingSpriteTemplate = }; // genesis supernova -const struct SpriteTemplate gGenesisSupernovaOrbRiseSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaOrbRiseSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_JAB, @@ -5560,7 +5560,7 @@ const struct SpriteTemplate gGenesisSupernovaOrbRiseSpriteTemplate = .affineAnims = gAffineAnims_Bubble, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gGenesisSupernovaReversalSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaReversalSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_JAB, @@ -5570,7 +5570,7 @@ const struct SpriteTemplate gGenesisSupernovaReversalSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimReversalOrb }; -const struct SpriteTemplate gGenesisSupernovaSpinUpSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaSpinUpSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_JAB, @@ -5580,7 +5580,7 @@ const struct SpriteTemplate gGenesisSupernovaSpinUpSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gGenesisSupernovaChargeSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_JAB, @@ -5590,7 +5590,7 @@ const struct SpriteTemplate gGenesisSupernovaChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gGenesisSupernovaSuperpowerSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaSuperpowerSpriteTemplate = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_WISP_ORB, @@ -5600,7 +5600,7 @@ const struct SpriteTemplate gGenesisSupernovaSuperpowerSpriteTemplate = .affineAnims = sSpriteAffineAnimTable_GrowingSuperpower, .callback = SpriteCB_GrowingSuperpower }; -const struct SpriteTemplate gGenesisSupernovaBubbleSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaBubbleSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_POISON_JAB, @@ -5610,7 +5610,7 @@ const struct SpriteTemplate gGenesisSupernovaBubbleSpriteTemplate = .affineAnims = gAffineAnims_Bubble, .callback = AnimBubbleEffect }; -const struct SpriteTemplate gGenesisSupernovaExplosionSpriteTemplate = +const struct SpriteTemplate gGenesisSupernovaExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_WISP_ORB, @@ -5650,7 +5650,7 @@ static const union AffineAnimCmd *const sArrowRaidFlyLeftAffineAnimTable[] = { sArrowRaidFlyLeftAffineAnims, sArrowRaidFlyLeftAffineAnims }; -const struct SpriteTemplate gArrowRaidExplosionSpriteTemplate = +const struct SpriteTemplate gArrowRaidExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -5660,7 +5660,7 @@ const struct SpriteTemplate gArrowRaidExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gArrowRaidFlyUpSpriteTemplate = +const struct SpriteTemplate gArrowRaidFlyUpSpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_LEAF, @@ -5670,7 +5670,7 @@ const struct SpriteTemplate gArrowRaidFlyUpSpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate gArrowRaidFlyRightSpriteTemplate = +const struct SpriteTemplate gArrowRaidFlyRightSpriteTemplate = { .tileTag = ANIM_TAG_BIRD, .paletteTag = ANIM_TAG_LEAF, @@ -5680,7 +5680,7 @@ const struct SpriteTemplate gArrowRaidFlyRightSpriteTemplate = .affineAnims = sArrowRaidFlyRightAffineAnimTable, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gArrowRaidFlyLeftSpriteTemplate = +const struct SpriteTemplate gArrowRaidFlyLeftSpriteTemplate = { .tileTag = ANIM_TAG_BIRD, .paletteTag = ANIM_TAG_LEAF, @@ -5690,7 +5690,7 @@ const struct SpriteTemplate gArrowRaidFlyLeftSpriteTemplate = .affineAnims = sArrowRaidFlyLeftAffineAnimTable, .callback = AnimAssistPawprint }; -const struct SpriteTemplate gArrowRaidFlyStrikeSpriteTemplate = +const struct SpriteTemplate gArrowRaidFlyStrikeSpriteTemplate = { .tileTag = ANIM_TAG_BIRD, .paletteTag = ANIM_TAG_LEAF, @@ -5707,7 +5707,7 @@ static const union AffineAnimCmd sArrowRaidArrowUpAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidArrowUpAffineAnimTable[] = { sArrowRaidArrowUpAffineAnims, }; -const struct SpriteTemplate gArrowRaidArrowUpSpriteTemplate = +const struct SpriteTemplate gArrowRaidArrowUpSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5724,7 +5724,7 @@ static const union AffineAnimCmd sArrowRaidArrowRightUpAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidArrowRightUpAffineAnimTable[] = { sArrowRaidArrowRightUpAffineAnims, }; -const struct SpriteTemplate gArrowRaidRightUpSpriteTemplate = +const struct SpriteTemplate gArrowRaidRightUpSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5741,7 +5741,7 @@ static const union AffineAnimCmd sArrowRaidRightDownAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidRightDownAffineAnimTable[] = { sArrowRaidRightDownAffineAnims, }; -const struct SpriteTemplate gArrowRaidRightDownSpriteTemplate = +const struct SpriteTemplate gArrowRaidRightDownSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5758,7 +5758,7 @@ static const union AffineAnimCmd sArrowRaidArrowLeftUpAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidLeftUpAffineAnimTable[] = { sArrowRaidArrowLeftUpAffineAnims, }; -const struct SpriteTemplate gArrowRaidLeftUpSpriteTemplate = +const struct SpriteTemplate gArrowRaidLeftUpSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5775,7 +5775,7 @@ static const union AffineAnimCmd sArrowRaidFaceUpLeftAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidFaceUpLeftAffineAnimTable[] = { sArrowRaidFaceUpLeftAffineAnims, }; -const struct SpriteTemplate gArrowRaidFaceUpLeftSpriteTemplate = +const struct SpriteTemplate gArrowRaidFaceUpLeftSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5792,7 +5792,7 @@ static const union AffineAnimCmd sArrowRaidArrowFaceRightAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidArrowFaceRightAffineAnimTable[] = { sArrowRaidArrowFaceRightAffineAnims }; -const struct SpriteTemplate gArrowRaidRightSpriteTemplate = +const struct SpriteTemplate gArrowRaidRightSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5809,7 +5809,7 @@ static const union AffineAnimCmd sArrowRaidLeftDownAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidLeftDownAffineAnimTable[] = { sArrowRaidLeftDownAffineAnims }; -const struct SpriteTemplate gArrowRaidLeftDownSpriteTemplate = +const struct SpriteTemplate gArrowRaidLeftDownSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5826,7 +5826,7 @@ static const union AffineAnimCmd sArrowRaidOnslaughtAffineAnims[] = { static const union AffineAnimCmd *const sArrowRaidOnslaughtAffineAnimTable[] = { sArrowRaidOnslaughtAffineAnims }; -const struct SpriteTemplate gArrowRaidArrowOnslaughtSpriteTemplate = +const struct SpriteTemplate gArrowRaidArrowOnslaughtSpriteTemplate = { .tileTag = ANIM_TAG_SPIRIT_ARROW, .paletteTag = ANIM_TAG_SPIRIT_ARROW, @@ -5838,7 +5838,7 @@ const struct SpriteTemplate gArrowRaidArrowOnslaughtSpriteTemplate = }; // malicious moonsault -const struct SpriteTemplate gMaliciousMoonsaultRedFlySpriteTemplate = +const struct SpriteTemplate gMaliciousMoonsaultRedFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5848,7 +5848,7 @@ const struct SpriteTemplate gMaliciousMoonsaultRedFlySpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate gMaliciousMoonsaultRedBounceSpriteTemplate = +const struct SpriteTemplate gMaliciousMoonsaultRedBounceSpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5858,7 +5858,7 @@ const struct SpriteTemplate gMaliciousMoonsaultRedBounceSpriteTemplate = .affineAnims = gAffineAnims_BounceBallLand, .callback = AnimBounceBallLand }; -const struct SpriteTemplate gMaliciousMoonsaultRedImpactSpriteTemplate = +const struct SpriteTemplate gMaliciousMoonsaultRedImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5868,7 +5868,7 @@ const struct SpriteTemplate gMaliciousMoonsaultRedImpactSpriteTemplate = .affineAnims = gAffineAnims_HitSplat, .callback = AnimHitSplatBasic }; -const struct SpriteTemplate gMaliciousMoonsaultFireblastSpriteTemplate = +const struct SpriteTemplate gMaliciousMoonsaultFireblastSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -5878,7 +5878,7 @@ const struct SpriteTemplate gMaliciousMoonsaultFireblastSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFireCross }; -const struct SpriteTemplate gMaliciousMoonsaultExplosionSpriteTemplate = +const struct SpriteTemplate gMaliciousMoonsaultExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -5900,7 +5900,7 @@ const struct SpriteTemplate gOceanOperaSpotlightSpriteTemplate = .affineAnims = gSpotlightAffineAnimTable, .callback = AnimOceanicOperettaSpotlight, }; -const struct SpriteTemplate gOceanOperaBlueFlareSpriteTemplate = +const struct SpriteTemplate gOceanOperaBlueFlareSpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5910,7 +5910,7 @@ const struct SpriteTemplate gOceanOperaBlueFlareSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gOceanOperaBlueChargeSpriteTemplate = +const struct SpriteTemplate gOceanOperaBlueChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5920,7 +5920,7 @@ const struct SpriteTemplate gOceanOperaBlueChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gOceanOperaBlueRingSpriteTemplate = +const struct SpriteTemplate gOceanOperaBlueRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5930,7 +5930,7 @@ const struct SpriteTemplate gOceanOperaBlueRingSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gOceanOperaMovingOrbsSpriteTemplate = +const struct SpriteTemplate gOceanOperaMovingOrbsSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5940,7 +5940,7 @@ const struct SpriteTemplate gOceanOperaMovingOrbsSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimThrowMistBall }; -const struct SpriteTemplate gOceanOperaBlueOrbsSpriteTemplate = +const struct SpriteTemplate gOceanOperaBlueOrbsSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5950,7 +5950,7 @@ const struct SpriteTemplate gOceanOperaBlueOrbsSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBite }; -const struct SpriteTemplate gOceanOperaExpandingRingSpriteTemplate = +const struct SpriteTemplate gOceanOperaExpandingRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5960,7 +5960,7 @@ const struct SpriteTemplate gOceanOperaExpandingRingSpriteTemplate = .affineAnims = gThinRingExpandingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gOceanOperaExplosionSpriteTemplate = +const struct SpriteTemplate gOceanOperaExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5970,7 +5970,7 @@ const struct SpriteTemplate gOceanOperaExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gOceanOperaSparkleSpriteTemplate = +const struct SpriteTemplate gOceanOperaSparkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_2, .paletteTag = ANIM_TAG_WATER_ORB, @@ -5982,7 +5982,7 @@ const struct SpriteTemplate gOceanOperaSparkleSpriteTemplate = }; // splintered stormshards -const struct SpriteTemplate gSplinteredShardsFlySpriteTemplate = +const struct SpriteTemplate gSplinteredShardsFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_ROCKS, @@ -5992,7 +5992,7 @@ const struct SpriteTemplate gSplinteredShardsFlySpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate gSplinteredShardsExplosionSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_ROCKS, @@ -6002,7 +6002,7 @@ const struct SpriteTemplate gSplinteredShardsExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSplinteredShardsRisingSpearSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsRisingSpearSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ROCKS, @@ -6019,7 +6019,7 @@ static const union AffineAnimCmd sSplinteredShardsOpponentSteepAffineAnims[] = { static const union AffineAnimCmd *const sSplinteredShardsOpponentSteepAffineAnimTable[] = { sSplinteredShardsOpponentSteepAffineAnims, }; -const struct SpriteTemplate gSplinteredShardsSplinterOpponentSteepSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsSplinterOpponentSteepSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ROCKS, @@ -6036,7 +6036,7 @@ static const union AffineAnimCmd sSplinteredShardsOpponentShallowAffineAnims[] = static const union AffineAnimCmd *const sSplinteredShardsOpponentShallowAffineAnimTable[] = { sSplinteredShardsOpponentShallowAffineAnims }; -const struct SpriteTemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsSplinterOpponentShallowSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ROCKS, @@ -6053,7 +6053,7 @@ static const union AffineAnimCmd sSplinteredShardsPlayerSteepAffineAnims[] = { static const union AffineAnimCmd *const sSplinteredShardsPlayerSteepAffineAnimTable[] = { sSplinteredShardsPlayerSteepAffineAnims }; -const struct SpriteTemplate gSplinteredShardsSplinterPlayerSteepSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsSplinterPlayerSteepSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ROCKS, @@ -6070,7 +6070,7 @@ static const union AffineAnimCmd sSplinteredShardsPlayerShallowAffineAnims[] = { static const union AffineAnimCmd *const sSplinteredShardsPlayerShallowAffineAnimTable[] = { sSplinteredShardsPlayerShallowAffineAnims }; -const struct SpriteTemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate = +const struct SpriteTemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate = { .tileTag = ANIM_TAG_ICICLE_SPEAR, .paletteTag = ANIM_TAG_ROCKS, @@ -6082,7 +6082,7 @@ const struct SpriteTemplate gSplinteredShardsSplinterPlayerShallowSpriteTemplate }; // lets snuggle forever -const struct SpriteTemplate gSnuggleForeverEyesSpriteTemplate = +const struct SpriteTemplate gSnuggleForeverEyesSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -6092,7 +6092,7 @@ const struct SpriteTemplate gSnuggleForeverEyesSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpinningSparkle }; -const struct SpriteTemplate gSnuggleForeverStarSpriteTemplate = +const struct SpriteTemplate gSnuggleForeverStarSpriteTemplate = { .tileTag = ANIM_TAG_PAIN_SPLIT, .paletteTag = ANIM_TAG_DUCK, @@ -6102,7 +6102,7 @@ const struct SpriteTemplate gSnuggleForeverStarSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimDizzyPunchDuck }; -const struct SpriteTemplate gSnuggleForeverHeartSpriteTemplate = +const struct SpriteTemplate gSnuggleForeverHeartSpriteTemplate = { .tileTag = ANIM_TAG_MAGENTA_HEART, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -6114,7 +6114,7 @@ const struct SpriteTemplate gSnuggleForeverHeartSpriteTemplate = }; // clangorous soulblaze -const struct SpriteTemplate gClangoorousSoulblazeWhiteFlySpriteTemplate = +const struct SpriteTemplate gClangoorousSoulblazeWhiteFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_AIR_WAVE_2, @@ -6124,7 +6124,7 @@ const struct SpriteTemplate gClangoorousSoulblazeWhiteFlySpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate = +const struct SpriteTemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate = { .tileTag = ANIM_TAG_WATER_ORB, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6134,7 +6134,7 @@ const struct SpriteTemplate gClangoorousSoulblazePurpleSwirlSpriteTemplate = .affineAnims = gAffineAnims_Whirlpool, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gClangoorousSoulblazePurpleChargeSpriteTemplate = +const struct SpriteTemplate gClangoorousSoulblazePurpleChargeSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6144,7 +6144,7 @@ const struct SpriteTemplate gClangoorousSoulblazePurpleChargeSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gClangoorousSoulblazePulseSpriteTemplate = +const struct SpriteTemplate gClangoorousSoulblazePulseSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6155,8 +6155,8 @@ const struct SpriteTemplate gClangoorousSoulblazePulseSpriteTemplate = .callback = TranslateAnimSpriteToTargetMonLocation }; -// guardian of alola -const struct SpriteTemplate gGuardianOfAlolaFistSpriteTemplate = +// guardian of alola +const struct SpriteTemplate gGuardianOfAlolaFistSpriteTemplate = { .tileTag = ANIM_TAG_HORSESHOE_SIDE_FIST, .paletteTag = ANIM_TAG_HORSESHOE_SIDE_FIST, @@ -6166,7 +6166,7 @@ const struct SpriteTemplate gGuardianOfAlolaFistSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimStompFoot }; -const struct SpriteTemplate gGuardianOfAlolaDirtGeyserSpriteTemplate = +const struct SpriteTemplate gGuardianOfAlolaDirtGeyserSpriteTemplate = { .tileTag = ANIM_TAG_MUD_SAND, .paletteTag = ANIM_TAG_MUD_SAND, @@ -6186,7 +6186,7 @@ static const union AffineAnimCmd sSearingSunrazeSmashWormholeGrowingAffineAnims[ static const union AffineAnimCmd *const sSearingSunrazeSmashWormholeGrowingAffineAnimTable[] = { sSearingSunrazeSmashWormholeGrowingAffineAnims }; -const struct SpriteTemplate gSearingSunrazeSmashGrowWormholeSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashGrowWormholeSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_WATER_ORB, @@ -6196,7 +6196,7 @@ const struct SpriteTemplate gSearingSunrazeSmashGrowWormholeSpriteTemplate = .affineAnims = sSearingSunrazeSmashWormholeGrowingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_WATER_ORB, @@ -6206,7 +6206,7 @@ const struct SpriteTemplate gSearingSunrazeSmashBlueRingInwardsSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_AIR_WAVE_2, @@ -6216,7 +6216,7 @@ const struct SpriteTemplate gSearingSunrazeSmashWhiteRingInwardsSpriteTemplate = .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSearingSunrazeSmashCrossImpactSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashCrossImpactSpriteTemplate = { .tileTag = ANIM_TAG_CROSS_IMPACT, .paletteTag = ANIM_TAG_AIR_WAVE_2, @@ -6226,7 +6226,7 @@ const struct SpriteTemplate gSearingSunrazeSmashCrossImpactSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCrossImpact }; -const struct SpriteTemplate gSearingSunrazeSmashWhiteCutSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashWhiteCutSpriteTemplate = { .tileTag = ANIM_TAG_CUT, .paletteTag = ANIM_TAG_AIR_WAVE_2, @@ -6236,7 +6236,7 @@ const struct SpriteTemplate gSearingSunrazeSmashWhiteCutSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCuttingSlice }; -const struct SpriteTemplate gSearingSunrazeSmashInfernoOrbSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashInfernoOrbSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -6246,7 +6246,7 @@ const struct SpriteTemplate gSearingSunrazeSmashInfernoOrbSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingChargeOrb }; -const struct SpriteTemplate gSearingSunrazeSmashShockwaveSpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashShockwaveSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -6256,7 +6256,7 @@ const struct SpriteTemplate gSearingSunrazeSmashShockwaveSpriteTemplate = .affineAnims = gAffineAnims_GrowingElectricOrb, .callback = AnimGrowingShockWaveOrbOnTarget }; -const struct SpriteTemplate gSearingSunrazeSmashRedFlySpriteTemplate = +const struct SpriteTemplate gSearingSunrazeSmashRedFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_VERTICAL_HEX, @@ -6268,7 +6268,7 @@ const struct SpriteTemplate gSearingSunrazeSmashRedFlySpriteTemplate = }; // menacing moonraze maelstrom -const struct SpriteTemplate gMoonrazeMaelstromBlueBuffSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBlueBuffSpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_WATER_ORB, @@ -6278,7 +6278,7 @@ const struct SpriteTemplate gMoonrazeMaelstromBlueBuffSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gMoonrazeMaelstromBlackBuffSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBlackBuffSpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -6288,7 +6288,7 @@ const struct SpriteTemplate gMoonrazeMaelstromBlackBuffSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6298,7 +6298,7 @@ const struct SpriteTemplate gMoonrazeMaelstromPurpleBuffSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gMoonrazeMaelstromBlackSparklesSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBlackSparklesSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_2, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -6308,27 +6308,27 @@ const struct SpriteTemplate gMoonrazeMaelstromBlackSparklesSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimGrantingStars }; -const struct SpriteTemplate gMoonrazeMaelstromBlueRingSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBlueRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_WATER_ORB, .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, - .images = NULL, + .images = NULL, .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gMoonrazeMaelstromWhiteRingSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromWhiteRingSpriteTemplate = { .tileTag = ANIM_TAG_THIN_RING, .paletteTag = ANIM_TAG_AIR_WAVE_2, .oam = &gOamData_AffineDouble_ObjBlend_64x64, .anims = gDummySpriteAnimTable, - .images = NULL, + .images = NULL, .affineAnims = gThinRingShrinkingAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gMoonrazeMaelstromSuperpowerSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromSuperpowerSpriteTemplate = { .tileTag = ANIM_TAG_METEOR, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -6338,7 +6338,7 @@ const struct SpriteTemplate gMoonrazeMaelstromSuperpowerSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSuperpowerFireball }; -const struct SpriteTemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate = { .tileTag = ANIM_TAG_POISON_BUBBLE, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -6348,7 +6348,7 @@ const struct SpriteTemplate gMoonrazeMaelstromBlackOrbsSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimParticleInVortex }; -const struct SpriteTemplate gMoonrazeMaelstromBeamSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromBeamSpriteTemplate = { .tileTag = ANIM_TAG_ORBS, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6358,7 +6358,7 @@ const struct SpriteTemplate gMoonrazeMaelstromBeamSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimHyperBeamOrb }; -const struct SpriteTemplate gMoonrazeMaelstromExplosionSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6368,7 +6368,7 @@ const struct SpriteTemplate gMoonrazeMaelstromExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gMoonrazeMaelstromShockwaveSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromShockwaveSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_POISON_BUBBLE, @@ -6386,7 +6386,7 @@ static const union AffineAnimCmd sMoonrazeMaelstromWormholeAffineAnims[] = { static const union AffineAnimCmd *const sMoonrazeMaelstromWormholeAffineAnimTable[] = { sMoonrazeMaelstromWormholeAffineAnims }; -const struct SpriteTemplate gMoonrazeMaelstromWormholeSpriteTemplate = +const struct SpriteTemplate gMoonrazeMaelstromWormholeSpriteTemplate = { .tileTag = ANIM_TAG_SHADOW_BALL, .paletteTag = ANIM_TAG_WATER_ORB, @@ -6398,7 +6398,7 @@ const struct SpriteTemplate gMoonrazeMaelstromWormholeSpriteTemplate = }; // light that burns the sky -const struct SpriteTemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate = +const struct SpriteTemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_LEAF, @@ -6408,7 +6408,7 @@ const struct SpriteTemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate = .affineAnims = gAffineAnims_FlashingSpark, .callback = AnimSparkElectricityFlashing }; -const struct SpriteTemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate = +const struct SpriteTemplate gLightThatBurnsTheSkyBlastBurnSpriteTemplate = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -6426,7 +6426,7 @@ static const struct OamData sGeyserOam = .size = SPRITE_SIZE(32x32), .priority = 1, //Above sprites }; -const struct SpriteTemplate gLightThatBurnsTheSkyExplosionSpriteTemplate = +const struct SpriteTemplate gLightThatBurnsTheSkyExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_2, .paletteTag = ANIM_TAG_EXPLOSION_2, @@ -6438,7 +6438,7 @@ const struct SpriteTemplate gLightThatBurnsTheSkyExplosionSpriteTemplate = }; // soul stealing 7star strike -const struct SpriteTemplate gSoulStealBlackFlySpriteTemplate = +const struct SpriteTemplate gSoulStealBlackFlySpriteTemplate = { .tileTag = ANIM_TAG_ROUND_SHADOW, .paletteTag = ANIM_TAG_HANDS_AND_FEET, @@ -6448,7 +6448,7 @@ const struct SpriteTemplate gSoulStealBlackFlySpriteTemplate = .affineAnims = gAffineAnims_FlyBallUp, .callback = AnimFlyBallUp }; -const struct SpriteTemplate gSoulStealIceBuffSpriteTemplate = +const struct SpriteTemplate gSoulStealIceBuffSpriteTemplate = { .tileTag = ANIM_TAG_FOCUS_ENERGY, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -6458,7 +6458,7 @@ const struct SpriteTemplate gSoulStealIceBuffSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimEndureEnergy }; -const struct SpriteTemplate gSoulStealBlueFistSpriteTemplate = +const struct SpriteTemplate gSoulStealBlueFistSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -6468,7 +6468,7 @@ const struct SpriteTemplate gSoulStealBlueFistSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimJumpKick }; -const struct SpriteTemplate gSoulStealBlueStarSpriteTemplate = +const struct SpriteTemplate gSoulStealBlueStarSpriteTemplate = { .tileTag = ANIM_TAG_PAIN_SPLIT, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -6478,7 +6478,7 @@ const struct SpriteTemplate gSoulStealBlueStarSpriteTemplate = .affineAnims = gAffineAnims_Bite, .callback = AnimSoulStealingStar }; -const struct SpriteTemplate gSoulStealBlueParalyzeSpriteTemplate = +const struct SpriteTemplate gSoulStealBlueParalyzeSpriteTemplate = { .tileTag = ANIM_TAG_SPARK_2, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -6488,7 +6488,7 @@ const struct SpriteTemplate gSoulStealBlueParalyzeSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimElectricity }; -const struct SpriteTemplate gSoulStealBlastburnSpriteTemplate = +const struct SpriteTemplate gSoulStealBlastburnSpriteTemplate = { .tileTag = ANIM_TAG_FIRE_PLUME, .paletteTag = ANIM_TAG_WISP_FIRE, @@ -6498,7 +6498,7 @@ const struct SpriteTemplate gSoulStealBlastburnSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFirePlume }; -const struct SpriteTemplate gSoulStealExplosionSpriteTemplate = +const struct SpriteTemplate gSoulStealExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION, .paletteTag = ANIM_TAG_WISP_FIRE, @@ -6508,7 +6508,7 @@ const struct SpriteTemplate gSoulStealExplosionSpriteTemplate = .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpriteOnMonPos }; -const struct SpriteTemplate gSoulStealZStarSpriteTemplate = +const struct SpriteTemplate gSoulStealZStarSpriteTemplate = { .tileTag = ANIM_TAG_SNORE_Z, .paletteTag = ANIM_TAG_SNORE_Z, @@ -6572,7 +6572,7 @@ void AnimTask_AllBanksInvisibleExceptAttackerAndTarget(u8 taskId) static u8 LoadBattleAnimTarget(u8 arg) { u8 battler; - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { switch (gBattleAnimArgs[arg]) @@ -6598,7 +6598,7 @@ static u8 LoadBattleAnimTarget(u8 arg) else battler = gBattleAnimTarget; } - + return battler; } @@ -7276,7 +7276,7 @@ static void SpriteCB_PyroBallRockBounceStep(struct Sprite *sprite) { s8 initialVerticalVelocity; s8 initialHorizontalVelocity; - + if (sprite->y2 > 0) //Rock returned back down { if (gBattleAnimArgs[2] || sMovingBackHorizontally) //Finished moving from left to right @@ -7357,7 +7357,7 @@ static void SpriteCB_PyroBallLaunch(struct Sprite *sprite) static void SpriteCB_AcidLaunchSingleTarget(struct Sprite *sprite) { s16 l1, l2; - + if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); @@ -7550,7 +7550,7 @@ static void AnimHappyHourCoinShower(struct Sprite *sprite) { if (gBattleAnimArgs[3] != 0) SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y); //coin shower on attacker - + sprite->x += gBattleAnimArgs[0]; sprite->y += 14; StartSpriteAnim(sprite, gBattleAnimArgs[1]); @@ -7707,7 +7707,7 @@ void AnimTask_GetTimeOfDay(u8 taskId) gBattleAnimArgs[0] = 1; else if (gLocalTime.hours >= 17 && gLocalTime.hours < 20) gBattleAnimArgs[0] = 2; - + DestroyAnimVisualTask(taskId); } @@ -7717,7 +7717,7 @@ void AnimTask_GetLycanrocForm(u8 taskId) gBattleAnimArgs[0] = 1; else gBattleAnimArgs[0] = 0; - + gBattleAnimArgs[0] = 0; DestroyAnimVisualTask(taskId); } @@ -7766,7 +7766,7 @@ static void AnimOceanicOperettaSpotlight(struct Sprite *sprite) static void AnimTask_WaitAffineAnim(u8 taskId) { struct Task* task = &gTasks[taskId]; - + if (!RunAffineAnimFromTaskData(task)) DestroyAnimVisualTask(taskId); } @@ -7775,7 +7775,7 @@ void AnimTask_SquishTarget(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); - + PrepareAffineAnimInTaskData(task, spriteId, sSquishTargetAffineAnimCmds); task->func = AnimTask_WaitAffineAnim; } diff --git a/src/battle_debug.c b/src/battle_debug.c index 9911154022..8e869df9cb 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -817,7 +817,7 @@ static void SwitchToAiPointsView(u8 taskId) GetStructPtr(taskId)->aiViewState = 0; } -static const u8 *const sAiInfoItemNames[] = +static const u8 *const sAiInfoItemNames[] = { sText_Ability, sText_HeldItem, @@ -829,13 +829,13 @@ static void PutAiInfoText(struct BattleDebugMenu *data) u8 *text = malloc(0x50); FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); - + // item names for (i = 0; i < ARRAY_COUNT(sAiInfoItemNames); i++) { AddTextPrinterParameterized(data->aiMovesWindowId, 1, sAiInfoItemNames[i], 3, i * 15, 0, NULL); } - + // items info for (i = 0; i < gBattlersCount; i++) { @@ -2004,7 +2004,7 @@ static const u8 sText_HoldEffectRoomService[] = _("Room Service"); static const u8 sText_HoldEffectBlunderPolicy[] = _("Blunder Policy"); static const u8 sText_HoldEffectHeavyDutyBoots[] = _("Heavy Duty Boots"); static const u8 sText_HoldEffectThroatSpray[] = _("Throat Spray"); -static const u8 *const sHoldEffectNames[] = +static const u8 *const sHoldEffectNames[] = { [HOLD_EFFECT_NONE] = sText_HoldEffectNone, [HOLD_EFFECT_RESTORE_HP] = sText_HoldEffectRestoreHp, diff --git a/src/battle_interface.c b/src/battle_interface.c index 5be969105f..7eea5f3564 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3123,7 +3123,7 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle) const s16 (*coords)[2]; u8 spriteId1, spriteId2, battlerPosition, taskId; - + return; if (gBattleScripting.abilityPopupOverwrite != 0) diff --git a/src/battle_message.c b/src/battle_message.c index 8298accf1f..e56269eb5f 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1383,7 +1383,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = [STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy, }; -const u16 gZEffectStringIds[] = +const u16 gZEffectStringIds[] = { [B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS, [B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP, @@ -1394,7 +1394,7 @@ const u16 gZEffectStringIds[] = [B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP, }; -const u16 gMentalHerbCureStringIds[] = +const u16 gMentalHerbCureStringIds[] = { [B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION, [B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS, @@ -1409,7 +1409,7 @@ const u16 gTerrainStringIds[] = STRINGID_TERRAINBECOMESMISTY, STRINGID_TERRAINBECOMESGRASSY, STRINGID_TERRAINBECOMESELECTRIC, STRINGID_TERRAINBECOMESPSYCHIC, STRINGID_TERRAINREMOVED, }; -const u16 gTerrainEndingStringIds[] = +const u16 gTerrainEndingStringIds[] = { STRINGID_MISTYTERRAINENDS, STRINGID_GRASSYTERRAINENDS, STRINGID_ELECTRICTERRAINENDS, STRINGID_PSYCHICTERRAINENDS }; diff --git a/src/battle_z_move.c b/src/battle_z_move.c index d41e28ac23..c257df5990 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -165,23 +165,23 @@ bool32 IsViableZMove(u8 battlerId, u16 move) u32 item; u16 holdEffect; u16 species; - + if (gBattleStruct->zmove.used[battlerId]) return FALSE; - + species = gBattleMons[battlerId].species; item = gBattleMons[battlerId].item; if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FRONTIER)) return FALSE; - + #ifdef ITEM_Z_RING if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_RING, 1)) return FALSE; #endif - + if (mega->alreadyEvolved[battlerPosition]) return FALSE; // Trainer has mega evolved - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { if (IsPartnerMonFromSameTrainer(battlerId) && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battlerId)]))) @@ -194,10 +194,10 @@ bool32 IsViableZMove(u8 battlerId, u16 move) else #endif if (item == ITEM_ENIGMA_BERRY) - return FALSE; // HoldEffect = gEnigmaBerries[battlerId].holdEffect; + return FALSE; // HoldEffect = gEnigmaBerries[battlerId].holdEffect; else holdEffect = ItemId_GetHoldEffect(item); - + #ifdef ITEM_ULTRANECROZIUM_Z if (holdEffect == HOLD_EFFECT_Z_CRYSTAL || item == ITEM_ULTRANECROZIUM_Z) #else @@ -210,18 +210,18 @@ bool32 IsViableZMove(u8 battlerId, u16 move) gBattleStruct->zmove.chosenZMove = zMove; // Signature z move exists return TRUE; } - + if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gBattleMoves[move].type == ItemId_GetSecondaryId(item)) { if (IS_MOVE_STATUS(move)) gBattleStruct->zmove.chosenZMove = move; else gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battlerId); - + return TRUE; } } - + return FALSE; } @@ -248,7 +248,7 @@ bool32 IsZMoveUsable(u8 battlerId, u16 moveIndex) bool32 TryChangeZIndicator(u8 battlerId, u8 moveIndex) { bool32 viableZMove = IsZMoveUsable(battlerId, moveIndex); - + if (gBattleStruct->zmove.viable && !viableZMove) HideZMoveTriggerSprite(); // Was a viable z move, now is not -> slide out else if (!gBattleStruct->zmove.viable && viableZMove) @@ -271,11 +271,11 @@ bool32 TryChangeZIndicator(u8 battlerId, u8 moveIndex) void CreateZMoveTriggerSprite(u8 battlerId, bool8 viable) { s16 x, y; - + LoadSpritePalette(&sSpritePalette_ZMoveTrigger); if (GetSpriteTileStartByTag(TAG_ZMOVE_TRIGGER_TILE) == 0xFFFF) LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_ZMoveTrigger); - + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { x = gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_Z_TRIGGER_POS_X_SLIDE; @@ -286,10 +286,10 @@ void CreateZMoveTriggerSprite(u8 battlerId, bool8 viable) x = gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_Z_TRIGGER_POS_X_SLIDE; y = gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF, 0; } - + if (gBattleStruct->zmove.triggerSpriteId == 0xFF) gBattleStruct->zmove.triggerSpriteId = CreateSprite(&sSpriteTemplate_ZMoveTrigger, x, y, 0); - + gSprites[gBattleStruct->zmove.triggerSpriteId].tBattler = battlerId; gSprites[gBattleStruct->zmove.triggerSpriteId].tHide = (viable == TRUE) ? FALSE : TRUE; } @@ -375,14 +375,14 @@ void DestroyZMoveTriggerSprite(void) FreeSpriteTilesByTag(TAG_ZMOVE_TRIGGER_TILE); if (gBattleStruct->zmove.triggerSpriteId != 0xFF) DestroySprite(&gSprites[gBattleStruct->zmove.triggerSpriteId]); - + gBattleStruct->zmove.triggerSpriteId = 0xFF; } static u16 GetSignatureZMove(u16 move, u16 species, u16 item) { u32 i; - + // Check signature z move for (i = 0; i < ARRAY_COUNT(sSignatureZMoves); ++i) { @@ -396,7 +396,7 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item) static u16 GetTypeBasedZMove(u16 move, u8 battler) { u8 moveType = gBattleMoves[move].type; - + // Get z move from type if (moveType < TYPE_FIRE) return MOVE_BREAKNECK_BLITZ + moveType; @@ -411,7 +411,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) u32 i; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]); u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]; - + PlaySE(SE_SELECT); gBattleStruct->zmove.viewing = TRUE; if (zmove != MOVE_NONE) @@ -421,15 +421,15 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) { MoveSelectionDestroyCursorAt(i); StringCopy(gDisplayedStringBattle, gText_EmptyString2); - BattlePutTextOnWindow(gDisplayedStringBattle, i + 3); + BattlePutTextOnWindow(gDisplayedStringBattle, i + 3); } if (IS_MOVE_STATUS(move)) { u8 zEffect = gBattleMoves[move].zMoveEffect; - + gDisplayedStringBattle[0] = EOS; - + if (zEffect == Z_EFFECT_CURSE) { if (moveInfo->monType1 == TYPE_GHOST || moveInfo->monType2 == TYPE_GHOST || moveInfo->monType3 == TYPE_GHOST) @@ -437,7 +437,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) else zEffect = Z_EFFECT_ATK_UP_1; } - + switch (zEffect) { case Z_EFFECT_RESET_STATS: @@ -501,7 +501,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gDisplayedStringBattle + 4); break; } - + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_3); gDisplayedStringBattle[0] = CHAR_Z; gDisplayedStringBattle[1] = CHAR_HYPHEN; @@ -584,11 +584,11 @@ void SetZEffect(void) else gBattleStruct->zmove.effect = Z_EFFECT_ATK_UP_1; } - + gBattleScripting.savedStatChanger = gBattleScripting.statChanger; // Save used move's stat changer (e.g. for Z-Growl) gBattleScripting.battler = gBattlerAttacker; - - switch (gBattleStruct->zmove.effect) + + switch (gBattleStruct->zmove.effect) { case Z_EFFECT_RESET_STATS: for (i = 0; i < NUM_BATTLE_STATS - 1; i++) @@ -645,7 +645,7 @@ void SetZEffect(void) gBattlescriptCurrInstr = BattleScript_ZEffectPrintString; break; case Z_EFFECT_ATK_UP_1 ... Z_EFFECT_EVSN_UP_1: - SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE); + SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE); BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH); gBattlescriptCurrInstr = BattleScript_StatUpZMove; break; @@ -663,7 +663,7 @@ void SetZEffect(void) gBattlescriptCurrInstr += 3; break; } - + gBattleStruct->zmove.zStatusActive = FALSE; } diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 4b5cde44c0..89e1a042c6 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -11881,7 +11881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 180, .zMoveEffect = Z_EFFECT_NONE, }, - + [MOVE_ZIPPY_ZAP] = { #if B_UPDATED_MOVE_DATA >= GEN_8 @@ -12193,7 +12193,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 120, .zMoveEffect = Z_EFFECT_NONE, }, - + [MOVE_DYNAMAX_CANNON] = { .effect = EFFECT_DYNAMAX_DOUBLE_DMG, @@ -13105,7 +13105,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = .zMovePower = 100, .zMoveEffect = Z_EFFECT_NONE, }, - + [MOVE_THUNDER_CAGE] = { .effect = EFFECT_TRAP, diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 41b5143cf1..6b866e92ef 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -859,7 +859,7 @@ .bodyColor = color, \ .noFlip = FALSE, \ } - + #define MORPEKO_BASE_STATS \ { \ .baseHP = 58, \ @@ -883,7 +883,7 @@ .bodyColor = BODY_COLOR_YELLOW, \ .noFlip = FALSE, \ } - + #define ZARUDE_BASE_STATS \ { \ .baseHP = 105, \ @@ -22755,7 +22755,7 @@ const struct BaseStats gBaseStats[] = .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, }, - + [SPECIES_BASCULEGION] = { .baseHP = 120, @@ -26464,7 +26464,7 @@ const struct BaseStats gBaseStats[] = [SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE), [SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE), [SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_BASE_STATS(BODY_COLOR_PURPLE), - + [SPECIES_MIMIKYU_BUSTED] = MIMIKYU_BASE_STATS, [SPECIES_NECROZMA_DUSK_MANE] = @@ -26563,7 +26563,7 @@ const struct BaseStats gBaseStats[] = [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW), [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_BROWN), [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW), - + [SPECIES_EISCUE_NOICE_FACE] = { .baseHP = 75, diff --git a/src/data/pokemon/form_change_table_pointers.h b/src/data/pokemon/form_change_table_pointers.h index 85685e50ef..0668855cc4 100644 --- a/src/data/pokemon/form_change_table_pointers.h +++ b/src/data/pokemon/form_change_table_pointers.h @@ -1,4 +1,4 @@ -const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = +const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] = { #if P_NEW_POKEMON == TRUE [SPECIES_GIRATINA] = sGiratinaFormChangeTable, diff --git a/src/data/pokemon/form_species_table_pointers.h b/src/data/pokemon/form_species_table_pointers.h index 71a210e402..dee4e5813f 100644 --- a/src/data/pokemon/form_species_table_pointers.h +++ b/src/data/pokemon/form_species_table_pointers.h @@ -19,8 +19,8 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_MEOWTH] = sMeowthFormSpeciesIdTable, [SPECIES_PERSIAN] = sPersianFormSpeciesIdTable, [SPECIES_ALAKAZAM] = sAlakazamFormSpeciesIdTable, - [SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable, - [SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable, + [SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable, + [SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable, [SPECIES_GEODUDE] = sGeodudeFormSpeciesIdTable, [SPECIES_GRAVELER] = sGravelerFormSpeciesIdTable, [SPECIES_GOLEM] = sGolemFormSpeciesIdTable, @@ -113,7 +113,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable, [SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable, [SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable, - [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, + [SPECIES_YAMASK] = sYamaskFormSpeciesIdTable, [SPECIES_ZORUA] = sZoruaFormSpeciesIdTable, [SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable, [SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable, @@ -139,7 +139,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_GOODRA] = sGoodraFormSpeciesIdTable, [SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable, [SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable, - [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, + [SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable, [SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable, [SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable, [SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable, @@ -394,7 +394,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] = [SPECIES_TORNADUS_THERIAN] = sTornadusFormSpeciesIdTable, [SPECIES_THUNDURUS_THERIAN] = sThundurusFormSpeciesIdTable, [SPECIES_LANDORUS_THERIAN] = sLandorusFormSpeciesIdTable, - [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, + [SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable, // Kyurem [SPECIES_KYUREM_WHITE] = sKyuremFormSpeciesIdTable, [SPECIES_KYUREM_BLACK] = sKyuremFormSpeciesIdTable, diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index a8c696f1f4..d06e4d00be 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -18095,8 +18095,8 @@ static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = { LEVEL_UP_MOVE(15, MOVE_CALM_MIND), //LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH), LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY), - //LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; @@ -18105,7 +18105,7 @@ static const struct LevelUpMove sKleavorLevelUpLearnset[] = { LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND), LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE), LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT), - //LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK), + //LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK), //LEVEL_UP_MOVE(18, MOVE_AIR_SLASH), LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), //LEVEL_UP_MOVE(29, MOVE_STONE_AXE), @@ -18121,8 +18121,8 @@ static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = { LEVEL_UP_MOVE(18, MOVE_SLASH), //LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH), //LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), - //LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + //LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH), LEVEL_UP_END }; @@ -18135,7 +18135,7 @@ static const struct LevelUpMove sBasculegionLevelUpLearnset[] = { LEVEL_UP_MOVE(25, MOVE_CRUNCH), LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL), //LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH), - LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE), LEVEL_UP_END }; @@ -18145,9 +18145,9 @@ static const struct LevelUpMove sSneaslerLevelUpLearnset[] = { //LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW), LEVEL_UP_MOVE(11, MOVE_SWIFT), LEVEL_UP_MOVE(18, MOVE_SLASH), - //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), + //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; @@ -18938,7 +18938,7 @@ static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = { LEVEL_UP_MOVE( 9, MOVE_BITE), //LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_CRUNCH), + LEVEL_UP_MOVE(29, MOVE_CRUNCH), LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), //LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), LEVEL_UP_END @@ -18951,7 +18951,7 @@ static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = { //LEVEL_UP_MOVE(15, MOVE_FIRE_FANG), LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE), LEVEL_UP_MOVE(29, MOVE_CRUNCH), - //LEVEL_UP_MOVE(29, MOVE_RAGING_FURY), + //LEVEL_UP_MOVE(29, MOVE_RAGING_FURY), LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), //LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ), LEVEL_UP_END @@ -19015,9 +19015,9 @@ static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = { LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), LEVEL_UP_MOVE(11, MOVE_SWIFT), LEVEL_UP_MOVE(18, MOVE_SLASH), - //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), - LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), - //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), + //LEVEL_UP_MOVE(25, MOVE_POISON_JAB), + LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE), + //LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT), LEVEL_UP_END }; @@ -19116,7 +19116,7 @@ static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = { }; static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = { - //LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), + //LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE), LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW), //LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD), diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index 0ca5ccb417..e1d8cc4792 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -1423,7 +1423,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ESPEON, NATIONAL_DEX_FROSLASS, NATIONAL_DEX_UMBREON, - //NATIONAL_DEX_SNEASEL, //Hisuian Form + //NATIONAL_DEX_SNEASEL, //Hisuian Form NATIONAL_DEX_HUNTAIL, NATIONAL_DEX_CARNIVINE, NATIONAL_DEX_WATCHOG, @@ -1577,7 +1577,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_GLISCOR, NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_SNEASLER, - //NATIONAL_DEX_BRAVIARY, //Hisuian Form + //NATIONAL_DEX_BRAVIARY, //Hisuian Form NATIONAL_DEX_PURUGLY, //NATIONAL_DEX_MANECTRIC, // Mega NATIONAL_DEX_GOTHITELLE, @@ -1600,7 +1600,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_HAKAMO_O, NATIONAL_DEX_ALAKAZAM, NATIONAL_DEX_HITMONTOP, - NATIONAL_DEX_ENAMORUS, + NATIONAL_DEX_ENAMORUS, NATIONAL_DEX_GARDEVOIR, NATIONAL_DEX_KELDEO, NATIONAL_DEX_GRANBULL, @@ -1660,7 +1660,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_HEATMOR, //NATIONAL_DEX_LURANTIS, // Totem-sized //NATIONAL_DEX_ZAPDOS, // Galarian Form - //NATIONAL_DEX_SAMUROTT, // Hisuian Form + //NATIONAL_DEX_SAMUROTT, // Hisuian Form NATIONAL_DEX_MR_RIME, NATIONAL_DEX_WHIRLIPEDE, //NATIONAL_DEX_PINSIR, // Mega @@ -1823,7 +1823,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_FERROTHORN, NATIONAL_DEX_MUDBRAY, NATIONAL_DEX_ZACIAN, // Hero of Many Battles - NATIONAL_DEX_BASCULEGION, + NATIONAL_DEX_BASCULEGION, //NATIONAL_DEX_CHARIZARD, // Mega X NATIONAL_DEX_SHELGON, //NATIONAL_DEX_SALAMENCE, // Mega @@ -1933,7 +1933,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_AVALUGG, //Hisuian Form NATIONAL_DEX_TYRANTRUM, NATIONAL_DEX_RHYPERIOR, - NATIONAL_DEX_URSALUNA, + NATIONAL_DEX_URSALUNA, NATIONAL_DEX_MAMOSWINE, // 661.4 - 667.0 lbs / 300.0 - 307.1 kg NATIONAL_DEX_GOLEM, @@ -2642,7 +2642,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GURDURR, NATIONAL_DEX_LEAVANNY, NATIONAL_DEX_WHIRLIPEDE, - //NATIONAL_DEX_LILLIGANT, //Hisuian Form + //NATIONAL_DEX_LILLIGANT, //Hisuian Form NATIONAL_DEX_CARRACOSTA, NATIONAL_DEX_FRILLISH, NATIONAL_DEX_ALOMOMOLA, @@ -2697,7 +2697,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_DUBWOOL, NATIONAL_DEX_BARRASKEWDA, NATIONAL_DEX_FROSMOTH, - NATIONAL_DEX_SNEASLER, + NATIONAL_DEX_SNEASLER, // 4'07" / 1.4m //NATIONAL_DEX_BEEDRILL, // Mega //NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized @@ -2734,7 +2734,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_ZWEILOUS, //NATIONAL_DEX_TORNADUS, // Therian Forme NATIONAL_DEX_KELDEO, - //NATIONAL_DEX_AVALUGG, // Hisuian Form + //NATIONAL_DEX_AVALUGG, // Hisuian Form //NATIONAL_DEX_GUMSHOOS, // Totem-sized NATIONAL_DEX_CINDERACE, NATIONAL_DEX_EISCUE, @@ -2805,7 +2805,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_HYPNO, NATIONAL_DEX_ZAPDOS, //NATIONAL_DEX_ZAPDOS, // Galarian Form - //NATIONAL_DEX_TYPHLOSION, // Hisuian Form + //NATIONAL_DEX_TYPHLOSION, // Hisuian Form NATIONAL_DEX_NOCTOWL, NATIONAL_DEX_GARDEVOIR, //NATIONAL_DEX_GARDEVOIR, // Mega @@ -2818,15 +2818,15 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_EMBOAR, NATIONAL_DEX_ZEBSTRIKA, NATIONAL_DEX_ZOROARK, - //NATIONAL_DEX_ZOROARK, // Hisuian Form + //NATIONAL_DEX_ZOROARK, // Hisuian Form NATIONAL_DEX_DRUDDIGON, NATIONAL_DEX_BISHARP, NATIONAL_DEX_BOUFFALANT, - //NATIONAL_DEX_BRAVIARY, // Hisuian Form + //NATIONAL_DEX_BRAVIARY, // Hisuian Form NATIONAL_DEX_VOLCARONA, NATIONAL_DEX_CHESNAUGHT, NATIONAL_DEX_DECIDUEYE, - //NATIONAL_DEX_DECIDUEYE, // Hisuian Form + //NATIONAL_DEX_DECIDUEYE, // Hisuian Form NATIONAL_DEX_KOMMO_O, NATIONAL_DEX_TOXTRICITY, NATIONAL_DEX_GRAPPLOCT, @@ -3010,7 +3010,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_MUDSDALE, NATIONAL_DEX_MELMETAL, NATIONAL_DEX_STONJOURNER, - NATIONAL_DEX_OVERQWIL, + NATIONAL_DEX_OVERQWIL, // 8'06" / 2.6m NATIONAL_DEX_BEARTIC, //NATIONAL_DEX_VIKAVOLT, // Totem-sized diff --git a/src/data/text/move_descriptions.h b/src/data/text/move_descriptions.h index ac7c910d7e..a4a1941adc 100644 --- a/src/data/text/move_descriptions.h +++ b/src/data/text/move_descriptions.h @@ -2691,144 +2691,144 @@ static const u8 sVeeveeVolleyDescription[] = _( static const u8 sDoubleIronBashDescription[] = _( "The user spins and hits with\n" "its arms. May cause flinch."); - + // GEN 8 static const u8 sDynamaxCannonDescription[] = _( "Fires a strong beam. Deals\n" "2x damage to Dynamaxed foes."); - + static const u8 sSnipeShotDescription[] = _( "The user ignores effects\n" "that draw in moves."); - + static const u8 sJawLockDescription[] = _( "Prevents the user and\n" "the target from escaping."); - + static const u8 sStuffCheeksDescription[] = _( "Consumes the user's Berry,\n" "then sharply raises Def."); - + static const u8 sNoRetreatDescription[] = _( "Raises all of the user's\n" "stats but prevents escape."); - + static const u8 sTarShotDescription[] = _( "Lowers the foe's Speed and\n" "makes it weak to Fire."); - + static const u8 sMagicPowderDescription[] = _( "Magic powder changes the\n" "target into a Psychic-type."); - + static const u8 sDragonDartsDescription[] = _( "The user attacks twice. Two\n" "targets are hit once each."); - + static const u8 sTeatimeDescription[] = _( "All Pokémon have teatime\n" "and eat their Berries."); - + static const u8 sOctolockDescription[] = _( "Traps the foe to lower Def\n" "and Sp. Def fall each turn."); - + static const u8 sBoltBeakDescription[] = _( "Double power if the user\n" "moves before the target."); - + static const u8 sFishiousRendDescription[] = _( "Double power if the user\n" "moves before the target."); - + static const u8 sCourtChangeDescription[] = _( "The user swaps effects on\n" "either side of the field."); - + static const u8 sClangorousSoulDescription[] = _( "The user uses some of its\n" "HP to raise all its stats."); - + static const u8 sBodyPressDescription[] = _( "Does more damage the\n" "higher the user's Def."); - + static const u8 sDecorateDescription[] = _( "The user sharply raises\n" "the target's Atk and Sp.Atk"); - + static const u8 sDrumBeatingDescription[] = _( "Plays a drum to attack.\n" "The foe's Speed is lowered."); - + static const u8 sSnapTrapDescription[] = _( "Snares the target in a snap\n" "trap for four to five turns."); - + static const u8 sPyroBallDescription[] = _( "Launches a fiery ball at the\n" "target. It may cause a burn."); - + static const u8 sBehemothBladeDescription[] = _( "Strikes as a sword. Deals 2x\n" "damage to Dynamaxed foes."); - + static const u8 sBehemothBashDescription[] = _( "Attacks as a shield. Deals 2x\n" "damage to Dynamaxed foes."); - + static const u8 sAuraWheelDescription[] = _( "Raises Speed to attack. The\n" "Type is based on its form."); - + static const u8 sBreakingSwipeDescription[] = _( "Swings its tail to attack.\n" "Lowers the Atk of those hit."); - + static const u8 sBranchPokeDescription[] = _( "The user pokes the target\n" "with a pointed branch."); - + static const u8 sOverdriveDescription[] = _( "The user twangs its guitar,\n" "causing strong vibrations."); - + static const u8 sAppleAcidDescription[] = _( "Attacks with tart apple acid\n" "to lower the foe's Sp. Def."); - + static const u8 sGravAppleDescription[] = _( "Drops an apple from above.\n" "Lowers the foe's Defense."); - + static const u8 sSpiritBreakDescription[] = _( "Attacks with spirit-breaking\n" "force. Lowers Sp. Atk."); - + static const u8 sStrangeSteamDescription[] = _( "Emits a strange steam to\n" "potentially confuse the foe."); - + static const u8 sLifeDewDescription[] = _( "Scatters water to restore\n" "the HP of itself and allies."); - + static const u8 sObstructDescription[] = _( "Protects itself, harshly\n" "lowering Def on contact."); - + static const u8 sFalseSurrenderDescription[] = _( "Bows to stab the foe\n" "with hair. It never misses."); - + static const u8 sMeteorAssaultDescription[] = _( "Attacks with a thick leek.\n" "The user must then rest."); - + static const u8 sEternabeamDescription[] = _( "Eternatus' strongest move.\n" "The user rests next turn."); - + static const u8 sSteelBeamDescription[] = _( "Fires a beam of steel from\n" "its body. It hurts the user."); diff --git a/src/data/text/move_names.h b/src/data/text/move_names.h index ffa00e3f63..5f0a741cb4 100644 --- a/src/data/text/move_names.h +++ b/src/data/text/move_names.h @@ -1604,7 +1604,7 @@ static const u8 sText_Menacing_Moonraze_Maelstrom[] = _("Menacing Moonraze Maels static const u8 sText_Light_That_Burns_The_Sky[] = _("Light That Burns The Sky"); static const u8 sText_Soul_Stealing_7_Star_Strike[] = _("Soul Stealing 7 Star Strike"); -const u8 *const gZMoveNames[] = +const u8 *const gZMoveNames[] = { [MOVE_BREAKNECK_BLITZ - FIRST_Z_MOVE] = sText_Breakneck_Blitz, [MOVE_ALL_OUT_PUMMELING - FIRST_Z_MOVE] = sText_All_Out_Pummeling, diff --git a/src/daycare.c b/src/daycare.c index 6108c6daa8..18bc45eb01 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -261,7 +261,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon) CalculateMonStats(&pokemon); species = newSpecies; } - + if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { experience = GetMonData(&pokemon, MON_DATA_EXP) + daycareMon->steps; @@ -1359,7 +1359,7 @@ static u8 ModifyBreedingScoreForOvalCharm(u8 score) return 88; } } - + return score; } diff --git a/src/debug.c b/src/debug.c index 4cc1ac6168..950c82c8d7 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1493,7 +1493,7 @@ static void DebugAction_Flags_CatchingOnOff(u8 taskId) FlagToggle(B_FLAG_NO_CATCHING); #endif } - + // ******************************* // Actions Variables static void DebugAction_Vars_Vars(u8 taskId) @@ -2589,7 +2589,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu } //Pokedex entry - nationalDexNum = SpeciesToNationalPokedexNum(species); + nationalDexNum = SpeciesToNationalPokedexNum(species); switch(sentToPc) { case MON_GIVEN_TO_PARTY: diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 91a3122226..39cf8e4c23 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -565,7 +565,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); - + #if P_SHEDINJA_BALL >= GEN_4 SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); RemoveBagItem(ball, 1); diff --git a/src/item_use.c b/src/item_use.c index 44da679857..913c0700fa 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1188,7 +1188,7 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) } } -void ItemUseOutOfBattle_FormChange(u8 taskId) +void ItemUseOutOfBattle_FormChange(u8 taskId) { gItemUseCB = ItemUseCB_FormChange; gTasks[taskId].data[0] = FALSE; diff --git a/src/pokemon.c b/src/pokemon.c index f36f8acf25..c04d9236bf 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3307,7 +3307,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24); - + if (CheckBagHasItem(ITEM_SHINY_CHARM, 1)) { u32 shinyValue; @@ -3415,7 +3415,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, } } #endif - + } if (gBaseStats[species].abilities[1]) @@ -5292,7 +5292,7 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum) gLastUsedAbility = gBaseStats[species].abilities[abilityNum]; else gLastUsedAbility = ABILITY_NONE; - + if (abilityNum >= NUM_NORMAL_ABILITY_SLOTS) // if abilityNum is empty hidden ability, look for other hidden abilities { for (i = NUM_NORMAL_ABILITY_SLOTS; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) @@ -5300,12 +5300,12 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum) gLastUsedAbility = gBaseStats[species].abilities[i]; } } - + for (i = 0; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) // look for any non-empty ability { gLastUsedAbility = gBaseStats[species].abilities[i]; } - + return gLastUsedAbility; } @@ -6346,7 +6346,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s { partnerSpecies = GetMonData(tradePartner, MON_DATA_SPECIES, 0); partnerHeldItem = GetMonData(tradePartner, MON_DATA_HELD_ITEM, 0); - + if (partnerHeldItem == ITEM_ENIGMA_BERRY) partnerHoldEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; else @@ -7717,7 +7717,7 @@ void SetWildMonHeldItem(void) { if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE) continue; // prevent ovewriting previously set item - + rnd = Random() % 100; species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0); if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE) diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 8775889fdf..4168b75242 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -337,7 +337,7 @@ const u8 gFrontAnimNames[][34] = [ANIM_SHAKE_GLOW_WHITE_SLOW] = _("SHAKE GLOW WHITE SLOW"), [ANIM_SHAKE_GLOW_PURPLE_SLOW] = _("SHAKE GLOW PURPLE SLOW"), }; -const u8 gBattleBackgroundNames[][30] = +const u8 gBattleBackgroundNames[][30] = { [MAP_BATTLE_SCENE_NORMAL] = _("NORMAL "), [MAP_BATTLE_SCENE_GYM] = _("GYM "), @@ -354,7 +354,7 @@ const u8 gBattleBackgroundNames[][30] = [MAP_BATTLE_SCENE_KYOGRE] = _("KYOGRE "), [MAP_BATTLE_SCENE_RAYQUAZA] = _("RAYQUAZA "), }; -const u8 gBattleBackgroundTerrainNames[][26] = +const u8 gBattleBackgroundTerrainNames[][26] = { [BATTLE_TERRAIN_GRASS] = _("NORMAL - GRASS "), [BATTLE_TERRAIN_LONG_GRASS] = _("NORMAL - LONG GRASS "), @@ -403,13 +403,13 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) u8 textInstructionsSubmenuOneGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back {A_BUTTON} Submenu 2$"); u8 textInstructionsSubmenuTwo[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back$"); u8 textInstructionsSubmenuTwoGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back$"); - + u8 textBottom[] = _("BACK:\nFRONT:\nBG:$"); u8 textBottomForms[] = _("BACK:\nFRONT:\nBG:\nFORMS:$"); u8 textBottomSubmenuTwo[] = _("B coords:\nF coords:\nF elev:"); u16 species = data->modifyArrows.currValue; - + u8 textL[] = _("{L_BUTTON}"); u8 textR[] = _("{R_BUTTON}"); @@ -481,7 +481,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data) for (i = 0; i < data->modifyArrows.maxDigits; i++) text[i] = data->modifyArrows.charDigits[i]; - + text[i++] = CHAR_SPACE; text[i++] = CHAR_HYPHEN; @@ -490,7 +490,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data) if (data->isFemale) text[i++] = CHAR_FEMALE; else - text[i++] = CHAR_MALE; + text[i++] = CHAR_MALE; text[i++] = CHAR_HYPHEN; } @@ -641,7 +641,7 @@ static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 mo if (charDigits[modArrows->currentDigit] == CHAR_0) { charDigits[modArrows->currentDigit] = CHAR_9; - + for (i = modArrows->currentDigit - 1; i >= 0; i--) { if (charDigits[i] == CHAR_0) @@ -796,7 +796,7 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off //FrontPicCoords offset = gMonFrontPicCoords[species].y_offset + offset_picCoords; - + //Elevation offset -= GetElevationValue(species) + offset_elevation; @@ -805,7 +805,7 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8) y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8; - + return y; } @@ -839,7 +839,7 @@ static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, data->frontShadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, x, y + 29, 0xC8); gSprites[data->frontShadowSpriteId].data[0] = data->frontspriteId; - + gSprites[data->frontShadowSpriteId].callback = SpriteCB_EnemyShadowCustom; gSprites[data->frontShadowSpriteId].oam.priority = 0; gSprites[data->frontShadowSpriteId].invisible = invisible; @@ -945,7 +945,7 @@ static void LoadBattleBg(u8 battleBgType, u8 battleTerrain) LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2))); LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26))); LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60); - break; + break; } } static void PrintBattleBgName(u8 taskId) @@ -1005,7 +1005,7 @@ static void UpdateBattleBg(u8 taskId, bool8 increment) { if (increment) data->battleBgType += 1; - else + else data->battleBgType -= 1; } @@ -1148,7 +1148,7 @@ void CB2_Debug_Pokemon(void) data->battleBgType = 0; data->battleTerrain = 0; LoadBattleBg(data->battleBgType , data->battleTerrain); - + gMain.state++; break; case 2: @@ -1377,7 +1377,7 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment) data->animIdFront = sMonFrontAnimIdsTable[modArrows->currValue - 1]; UpdateMonAnimNames(taskId); ResetOffsetSpriteValues(data); - + UpdateBattlerValue(data); ReloadPokemonSprites(data); while (!(gMain.intrCheck & INTR_FLAG_VBLANK)); @@ -1486,7 +1486,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) if (JOY_NEW(START_BUTTON)) { data->isShiny = !data->isShiny; - + if(data->isShiny) PlaySE(SE_SHINY); @@ -1641,7 +1641,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) data->submenuYpos[2] += 1; if (data->submenuYpos[2] >= 3) data->submenuYpos[2] = 0; - + data->yPosModifyArrows.currentDigit = data->submenuYpos[2]; gSprites[data->yPosModifyArrows.arrowSpriteId[0]].y = OPTIONS_ARROW_Y + data->yPosModifyArrows.currentDigit * 12; } @@ -1672,7 +1672,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) u16 species = data->currentmonId; s16 offset_y; u8 front_x = sBattlerCoords[0][1].x; - u8 front_y; + u8 front_y; DestroySprite(&gSprites[data->frontspriteId]); DestroySprite(&gSprites[data->backspriteId]); @@ -1706,7 +1706,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) gSprites[data->frontspriteId].oam.priority = 0; //Front Shadow LoadAndCreateEnemyShadowSpriteCustom(data, species); - + //Back HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5); @@ -1720,7 +1720,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) //Icon Sprite data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); gSprites[data->iconspriteId].oam.priority = 0; - + //Modify Arrows LoadSpritePalette(&gSpritePalette_Arrow); data->modifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, MODIFY_DIGITS_ARROW_X + (data->modifyArrows.currentDigit * 6), MODIFY_DIGITS_ARROW1_Y, 0); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 66bfa817cc..a0193ff6e7 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -3742,7 +3742,7 @@ static void PrintMoveDetails(u16 move) ShowSplitIcon(GetBattleMoveSplit(move)); #endif PrintMovePowerAndAccuracy(move); - + if (moveEffect != EFFECT_PLACEHOLDER) PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); else diff --git a/src/scrcmd.c b/src/scrcmd.c index 2813a37f37..e5ea3d5e11 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1885,7 +1885,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx) gIsScriptedWildDouble = FALSE; } else - { + { CreateScriptedDoubleWildMon(species, level, item, species2, level2, item2); gIsScriptedWildDouble = TRUE; } diff --git a/src/start_menu.c b/src/start_menu.c index a0cff087cd..b79b25741b 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -324,7 +324,7 @@ static void BuildNormalStartMenu(void) } static void BuildDebugStartMenu(void) -{ +{ AddStartMenuAction(MENU_ACTION_DEBUG); if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEDEX); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 4e8aceb2b3..8bf8c45e0e 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -1006,7 +1006,7 @@ bool8 TryDoDoubleWildBattle(void) { if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS) return FALSE; -#if B_FLAG_FORCE_DOUBLE_WILD != 0 +#if B_FLAG_FORCE_DOUBLE_WILD != 0 else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD)) return TRUE; #endif diff --git a/tools/aif2pcm/main.c b/tools/aif2pcm/main.c index 720db1acae..0824b92da8 100644 --- a/tools/aif2pcm/main.c +++ b/tools/aif2pcm/main.c @@ -238,7 +238,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { FATAL_ERROR("More than one MARK Chunk in file!\n"); } - + markers = calloc(num_markers, sizeof(struct Marker)); // Read each marker. @@ -289,7 +289,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) // Skip NoLooping sustain loop. pos += 4; } - + // Skip release loop, we don't need it. pos += 6; } @@ -303,7 +303,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t)); memcpy(sample_data, &aif->data[pos], num_samples); - + aif_data->samples8 = sample_data; aif_data->real_num_samples = num_samples; } @@ -316,7 +316,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data) { sample_data_swapped[i] = __builtin_bswap16(sample_data[i]); } - + aif_data->samples16 = sample_data_swapped; aif_data->real_num_samples = num_samples; free(sample_data); @@ -329,12 +329,12 @@ void read_aif(struct Bytes *aif, AifData *aif_data) pos += chunk_size; } } - + if (markers) { // Resolve loop points. struct Marker *cur_marker = markers; - + // Grab loop start point. for (int i = 0; i < num_markers; i++, cur_marker++) { @@ -573,7 +573,7 @@ void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress) struct Bytes *aif = read_bytearray(aif_filename); AifData aif_data = {0}; read_aif(aif, &aif_data); - + // Convert 16-bit to 8-bit if necessary if (aif_data.sample_size == 16) { diff --git a/tools/gbagfx/font.c b/tools/gbagfx/font.c index 0dd6fbc3ee..1251b5c647 100644 --- a/tools/gbagfx/font.c +++ b/tools/gbagfx/font.c @@ -26,7 +26,7 @@ static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsign unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8); for (unsigned int i = 0; i < 8; i++) { - unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; + unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i; unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4); dest[destPixelsOffset] = src[srcPixelsOffset + 1]; @@ -75,7 +75,7 @@ static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char * for (unsigned int i = 0; i < 8; i++) { unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i; unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4); - + dest[destPixelsOffset] = src[srcPixelsOffset + 1]; dest[destPixelsOffset + 1] = src[srcPixelsOffset]; @@ -233,7 +233,7 @@ void ReadHalfwidthJapaneseFont(char *path, struct Image *image) FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize); int numGlyphs = fileSize / glyphSize; - + if (numGlyphs % 16 != 0) FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs); diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp index d5bf5bcba4..21478ea115 100755 --- a/tools/jsonproc/inja.hpp +++ b/tools/jsonproc/inja.hpp @@ -1675,7 +1675,7 @@ class FunctionStorage { #include #include -#include +#include #include // #include "bytecode.hpp" diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp index 8de9ff8d01..9b02350f04 100644 --- a/tools/mapjson/mapjson.cpp +++ b/tools/mapjson/mapjson.cpp @@ -77,8 +77,8 @@ string generate_map_header_text(Json map_data, Json layouts_data, string version ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" + << map_data["name"].string_value() << "/map.json\n@\n\n"; text << map_data["name"].string_value() << ":\n" @@ -128,8 +128,8 @@ string generate_map_connections_text(Json map_data) { ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" + << map_data["name"].string_value() << "/map.json\n@\n\n"; text << map_data["name"].string_value() << "_MapConnectionsList:\n"; @@ -154,8 +154,8 @@ string generate_map_events_text(Json map_data) { ostringstream text; - text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" - << map_data["name"].string_value() + text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/" + << map_data["name"].string_value() << "/map.json\n@\n\n"; string objects_label, warps_label, coords_label, bgs_label; @@ -399,7 +399,7 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) { text << "// " << group.string_value() << "\n"; vector map_ids; size_t max_length = 0; - + int map_count = 0; //DEBUG for (auto &map_name : groups_data[group.string_value()].array_items()) { diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp index 17a08cc9f7..508c628731 100644 --- a/tools/preproc/c_file.cpp +++ b/tools/preproc/c_file.cpp @@ -383,7 +383,7 @@ void CFile::TryConvertIncbin() if (m_buffer[m_pos] == '\\') RaiseError("unexpected escape in path string"); - + m_pos++; } @@ -418,7 +418,7 @@ void CFile::TryConvertIncbin() m_pos++; } - + if (m_buffer[m_pos] != ')') RaiseError("expected ')'"); diff --git a/tools/preproc/charmap.cpp b/tools/preproc/charmap.cpp index a7bedfe26f..a0c631026c 100644 --- a/tools/preproc/charmap.cpp +++ b/tools/preproc/charmap.cpp @@ -119,7 +119,7 @@ Lhs CharmapReader::ReadLhs() break; } } - + if (m_buffer[m_pos] == '\'') { m_pos++; diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp index df31282f80..9d188eb738 100644 --- a/tools/scaninc/source_file.cpp +++ b/tools/scaninc/source_file.cpp @@ -41,7 +41,7 @@ SourceFileType GetFileType(std::string& path) return SourceFileType::Inc; else FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str()); - + // Unreachable return SourceFileType::Cpp; } @@ -84,7 +84,7 @@ SourceFile::SourceFile(std::string path) else incbins.insert(outputPath); } - + new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes}; } } From 2c205140357062d1d1d1c0ec6bb34493cb4255e9 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Wed, 14 Sep 2022 13:39:35 +0200 Subject: [PATCH 255/271] improved debug menu function declaration consistency --- src/debug.c | 62 ++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/debug.c b/src/debug.c index ac5c238313..e40ed4afee 100644 --- a/src/debug.c +++ b/src/debug.c @@ -174,33 +174,33 @@ struct DebugMonData // Define functions static void Debug_ShowMenu(void (*HandleInput)(u8), struct ListMenuTemplate LMtemplate); void Debug_ShowMainMenu(void); -static void Debug_DestroyMenu(u8); -static void Debug_DestroyMenu_Full(u8); -static void DebugAction_Cancel(u8); +static void Debug_DestroyMenu(u8 taskId); +static void Debug_DestroyMenu_Full(u8 taskId); +static void DebugAction_Cancel(u8 taskId); static void DebugAction_DestroyExtraWindow(u8 taskId); -static void DebugAction_Util_Script_1(u8); -static void DebugAction_Util_Script_2(u8); -static void DebugAction_Util_Script_3(u8); -static void DebugAction_Util_Script_4(u8); -static void DebugAction_Util_Script_5(u8); -static void DebugAction_Util_Script_6(u8); -static void DebugAction_Util_Script_7(u8); -static void DebugAction_Util_Script_8(u8); +static void DebugAction_Util_Script_1(u8 taskId); +static void DebugAction_Util_Script_2(u8 taskId); +static void DebugAction_Util_Script_3(u8 taskId); +static void DebugAction_Util_Script_4(u8 taskId); +static void DebugAction_Util_Script_5(u8 taskId); +static void DebugAction_Util_Script_6(u8 taskId); +static void DebugAction_Util_Script_7(u8 taskId); +static void DebugAction_Util_Script_8(u8 taskId); -static void DebugAction_OpenUtilitiesMenu(u8); -static void DebugAction_OpenScriptsMenu(u8); -static void DebugAction_OpenFlagsMenu(u8); -static void DebugAction_OpenVariablesMenu(u8); -static void DebugAction_OpenGiveMenu(u8); -static void DebugAction_OpenSoundMenu(u8); -static void DebugTask_HandleMenuInput_Main(u8); -static void DebugTask_HandleMenuInput_Utilities(u8); -static void DebugTask_HandleMenuInput_Scripts(u8); -static void DebugTask_HandleMenuInput_Flags(u8); -static void DebugTask_HandleMenuInput_Vars(u8); -static void DebugTask_HandleMenuInput_Give(u8); -static void DebugTask_HandleMenuInput_Sound(u8); +static void DebugAction_OpenUtilitiesMenu(u8 taskId); +static void DebugAction_OpenScriptsMenu(u8 taskId); +static void DebugAction_OpenFlagsMenu(u8 taskId); +static void DebugAction_OpenVariablesMenu(u8 taskId); +static void DebugAction_OpenGiveMenu(u8 taskId); +static void DebugAction_OpenSoundMenu(u8 taskId); +static void DebugTask_HandleMenuInput_Main(u8 taskId); +static void DebugTask_HandleMenuInput_Utilities(u8 taskId); +static void DebugTask_HandleMenuInput_Scripts(u8 taskId); +static void DebugTask_HandleMenuInput_Flags(u8 taskId); +static void DebugTask_HandleMenuInput_Vars(u8 taskId); +static void DebugTask_HandleMenuInput_Give(u8 taskId); +static void DebugTask_HandleMenuInput_Sound(u8 taskId); static void DebugAction_Util_HealParty(u8 taskId); static void DebugAction_Util_Fly(u8 taskId); @@ -210,13 +210,13 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId); static void DebugAction_Util_Warp_SelectWarp(u8 taskId); static void DebugAction_Util_RunningShoes(u8 taskId); static void DebugAction_Util_PoisonMons(u8 taskId); -static void DebugAction_Util_CheckSaveBlock(u8); -static void DebugAction_Util_CheckWallClock(u8); -static void DebugAction_Util_SetWallClock(u8); -static void DebugAction_Util_WatchCredits(u8); -static void DebugAction_Util_Trainer_Name(u8); -static void DebugAction_Util_Trainer_Gender(u8); -static void DebugAction_Util_Trainer_Id(u8); +static void DebugAction_Util_CheckSaveBlock(u8 taskId); +static void DebugAction_Util_CheckWallClock(u8 taskId); +static void DebugAction_Util_SetWallClock(u8 taskId); +static void DebugAction_Util_WatchCredits(u8 taskId); +static void DebugAction_Util_Trainer_Name(u8 taskId); +static void DebugAction_Util_Trainer_Gender(u8 taskId); +static void DebugAction_Util_Trainer_Id(u8 taskId); static void DebugAction_Flags_Flags(u8 taskId); static void DebugAction_Flags_FlagsSelect(u8 taskId); From 1e03b4747fa259d735dd958f6ea3b1dd7097f822 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Wed, 14 Sep 2022 13:43:26 +0200 Subject: [PATCH 256/271] debug menu: object events now frozen while open --- src/debug.c | 2 ++ src/field_control_avatar.c | 1 + src/start_menu.c | 1 + 3 files changed, 4 insertions(+) diff --git a/src/debug.c b/src/debug.c index e40ed4afee..38da0696f6 100644 --- a/src/debug.c +++ b/src/debug.c @@ -709,6 +709,7 @@ static void Debug_DestroyMenu_Full(u8 taskId) ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); RemoveWindow(gTasks[taskId].data[1]); DestroyTask(taskId); + UnfreezeObjectEvents(); } static void DebugAction_Cancel(u8 taskId) { @@ -725,6 +726,7 @@ static void DebugAction_DestroyExtraWindow(u8 taskId) DestroyTask(taskId); ScriptContext_Enable(); + UnfreezeObjectEvents(); } diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index d407cc0279..c325b63e5c 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -201,6 +201,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (input->input_field_1_2) { PlaySE(SE_WIN_OPEN); + FreezeObjectEvents(); Debug_ShowMainMenu(); return TRUE; } diff --git a/src/start_menu.c b/src/start_menu.c index a0cff087cd..388b2ce35a 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -761,6 +761,7 @@ static bool8 StartMenuDebugCallback(void) HideStartMenuDebug(); // Hide start menu without enabling movement #if DEBUG_SYSTEM_ENABLE == TRUE + FreezeObjectEvents(); Debug_ShowMainMenu(); #endif From ef4e64c2f7d00053a16cc06672762ba8875c4aa1 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:51:03 +0200 Subject: [PATCH 257/271] -added a submenu to set the weather -lowest flag is 1 --- src/debug.c | 171 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 148 insertions(+), 23 deletions(-) diff --git a/src/debug.c b/src/debug.c index 38da0696f6..464835d3da 100644 --- a/src/debug.c +++ b/src/debug.c @@ -18,6 +18,7 @@ #include "event_scripts.h" #include "field_message_box.h" #include "field_screen_effect.h" +#include "field_weather.h" #include "international_string_util.h" #include "item.h" #include "item_icon.h" @@ -55,6 +56,7 @@ #include "constants/rgb.h" #include "constants/songs.h" #include "constants/species.h" +#include "constants/weather.h" #if DEBUG_SYSTEM_ENABLE == TRUE // ******************************* @@ -76,6 +78,7 @@ enum { // Util DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES, DEBUG_UTIL_MENU_ITEM_POISON_MONS, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK, + DEBUG_UTIL_MENU_ITEM_WEATHER, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS, @@ -135,6 +138,8 @@ enum { //Sound #define DEBUG_NUMBER_DISPLAY_WIDTH 10 #define DEBUG_NUMBER_DISPLAY_HEIGHT 4 +#define DEBUG_NUMBER_DISPLAY_MEDIUM_WIDTH 15 +#define DEBUG_NUMBER_DISPLAY_MEDIUM_HEIGHT 3 #define DEBUG_NUMBER_DISPLAY_SOUND_WIDTH 20 #define DEBUG_NUMBER_DISPLAY_SOUND_HEIGHT 6 @@ -211,6 +216,8 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId); static void DebugAction_Util_RunningShoes(u8 taskId); static void DebugAction_Util_PoisonMons(u8 taskId); static void DebugAction_Util_CheckSaveBlock(u8 taskId); +static void DebugAction_Util_Weather(u8 taskId); +static void DebugAction_Util_Weather_SelectId(u8 taskId); static void DebugAction_Util_CheckWallClock(u8 taskId); static void DebugAction_Util_SetWallClock(u8 taskId); static void DebugAction_Util_WatchCredits(u8 taskId); @@ -317,6 +324,8 @@ static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {S static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); +static const u8 gDebugText_Util_Weather[] = _("Set weather"); +static const u8 gDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); @@ -437,6 +446,7 @@ static const struct ListMenuItem sDebugMenu_Items_Utilities[] = [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = {gDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, @@ -515,6 +525,7 @@ static void (*const sDebugMenu_Actions_Utilities[])(u8) = [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = DebugAction_Util_RunningShoes, [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = DebugAction_Util_PoisonMons, [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, @@ -595,6 +606,16 @@ static const struct WindowTemplate sDebugNumberDisplayWindowTemplate = .paletteNum = 15, .baseBlock = 1, }; +static const struct WindowTemplate sDebugNumberDisplayMediumWindowTemplate = +{ + .bg = 0, + .tilemapLeft = 30 - DEBUG_NUMBER_DISPLAY_MEDIUM_WIDTH - 1, + .tilemapTop = 1, + .width = DEBUG_NUMBER_DISPLAY_MEDIUM_WIDTH, + .height = 2 * DEBUG_NUMBER_DISPLAY_MEDIUM_HEIGHT, + .paletteNum = 15, + .baseBlock = 1, +}; static const struct WindowTemplate sDebugNumberDisplayLargeWindowTemplate = { .bg = 0, @@ -1023,23 +1044,23 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > max_value - 1) + if (gTasks[taskId].data[3] > max_value - 1) gTasks[taskId].data[3] = max_value - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if(gMain.newKeys & DPAD_LEFT) + if (gMain.newKeys & DPAD_LEFT) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } if (gMain.newKeys & DPAD_RIGHT) { - if(gTasks[taskId].data[4] < 2) + if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; } @@ -1075,16 +1096,16 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) if (gMain.newKeys & DPAD_ANY) { PlaySE(SE_SELECT); - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > 10) + if (gTasks[taskId].data[3] > 10) gTasks[taskId].data[3] = 10; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } @@ -1154,6 +1175,110 @@ static void DebugAction_Util_CheckSaveBlock(u8 taskId) LockPlayerFieldControls(); ScriptContext_SetupScript(Debug_ShowFieldMessageStringVar4); } + +static const u8 sWeatherNames[22][24] = { + [WEATHER_NONE] = _("NONE"), + [WEATHER_SUNNY_CLOUDS] = _("SUNNY CLOUDS"), + [WEATHER_SUNNY] = _("SUNNY"), + [WEATHER_RAIN] = _("RAIN"), + [WEATHER_SNOW] = _("SNOW"), + [WEATHER_RAIN_THUNDERSTORM] = _("RAIN THUNDERSTORM"), + [WEATHER_FOG_HORIZONTAL] = _("FOG HORIZONTAL"), + [WEATHER_VOLCANIC_ASH] = _("VOLCANIC ASH"), + [WEATHER_SANDSTORM] = _("SANDSTORM"), + [WEATHER_FOG_DIAGONAL] = _("FOG DIAGONAL"), + [WEATHER_UNDERWATER] = _("UNDERWATER"), + [WEATHER_SHADE] = _("SHADE"), + [WEATHER_DROUGHT] = _("DROUGHT"), + [WEATHER_DOWNPOUR] = _("DOWNPOUR"), + [WEATHER_UNDERWATER_BUBBLES] = _("UNDERWATER BUBBLES"), + [WEATHER_ABNORMAL] = _("ABNORMAL(NOT WORKING)"), + [WEATHER_ROUTE119_CYCLE] = _("ROUTE119 CYCLE"), + [WEATHER_ROUTE123_CYCLE] = _("ROUTE123 CYCLE"), +}; +static const u8 sText_WeatherNotDefined[] = _("NOT DEFINED!!!"); +static void DebugAction_Util_Weather(u8 taskId) +{ + u8 windowId; + + ClearStdWindowAndFrame(gTasks[taskId].data[1], TRUE); + RemoveWindow(gTasks[taskId].data[1]); + + HideMapNamePopUpWindow(); + LoadMessageBoxAndBorderGfx(); + windowId = AddWindow(&sDebugNumberDisplayMediumWindowTemplate); + DrawStdWindowFrame(windowId, FALSE); + + CopyWindowToVram(windowId, 3); + + //Display initial ID + StringCopy(gStringVar2, gText_DigitIndicator[0]); + ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopyPadded(gStringVar1, sWeatherNames[0], CHAR_SPACE, 30); + StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Util_Weather_SelectId; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[3] = 0; //Current ID + gTasks[taskId].data[4] = 0; //Digit Selected +} +static void DebugAction_Util_Weather_SelectId(u8 taskId) +{ + if (gMain.newKeys & DPAD_ANY) + { + PlaySE(SE_SELECT); + + if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; + if (gTasks[taskId].data[3] > WEATHER_ROUTE123_CYCLE) + gTasks[taskId].data[3] = WEATHER_ROUTE123_CYCLE; + } + if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; + if (gTasks[taskId].data[3] < WEATHER_NONE) + gTasks[taskId].data[3] = WEATHER_NONE; + } + if (gMain.newKeys & DPAD_LEFT) + { + if (gTasks[taskId].data[4] > 0) + gTasks[taskId].data[4] -= 1; + } + if (gMain.newKeys & DPAD_RIGHT) + { + if (gTasks[taskId].data[4] < 2) + gTasks[taskId].data[4] += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); + + if (gTasks[taskId].data[3] <= 15 || gTasks[taskId].data[3] >= 20) + StringCopyPadded(gStringVar1, sWeatherNames[gTasks[taskId].data[3]], CHAR_SPACE, 30); + else + StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); + + StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); + } + + if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].data[3] <= 14 || gTasks[taskId].data[3] >= 20) + { + gTasks[taskId].data[5] = gTasks[taskId].data[3]; + SetWeather(gTasks[taskId].data[5]); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + DebugAction_DestroyExtraWindow(taskId); + } +} + static void DebugAction_Util_CheckWallClock(u8 taskId) { Debug_DestroyMenu_Full(taskId); @@ -1179,7 +1304,7 @@ static void DebugAction_Util_Trainer_Name(u8 taskId) } static void DebugAction_Util_Trainer_Gender(u8 taskId) { - if(gSaveBlock2Ptr->playerGender == 0) // 0 Male, 1 Female + if (gSaveBlock2Ptr->playerGender == 0) // 0 Male, 1 Female gSaveBlock2Ptr->playerGender = 1; else gSaveBlock2Ptr->playerGender = 0; @@ -1262,10 +1387,10 @@ static void DebugAction_Flags_Flags(u8 taskId) CopyWindowToVram(windowId, 3); //Display initial Flag - ConvertIntToDecimalStringN(gStringVar1, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); - ConvertIntToHexStringN(gStringVar2, 0, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); + ConvertIntToHexStringN(gStringVar2, 1, STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); - if (FlagGet(0) == TRUE) + if (FlagGet(FLAG_TEMP_1) == TRUE) StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); else StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); @@ -1275,8 +1400,8 @@ static void DebugAction_Flags_Flags(u8 taskId) gTasks[taskId].func = DebugAction_Flags_FlagsSelect; gTasks[taskId].data[2] = windowId; - gTasks[taskId].data[3] = 0; //Current Flag - gTasks[taskId].data[4] = 0; //Digit Selected + gTasks[taskId].data[3] = FLAG_TEMP_1; //Current Flag + gTasks[taskId].data[4] = 0; //Digit Selected } static void DebugAction_Flags_FlagsSelect(u8 taskId) { @@ -1301,8 +1426,8 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) { PlaySE(SE_SELECT); gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if (gTasks[taskId].data[3] < 0){ - gTasks[taskId].data[3] = 0; + if (gTasks[taskId].data[3] < 1){ + gTasks[taskId].data[3] = 1; } } if (gMain.newKeys & DPAD_LEFT) @@ -1541,7 +1666,7 @@ static void DebugAction_Vars_Select(u8 taskId) if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] > VARS_END) + if (gTasks[taskId].data[3] > VARS_END) gTasks[taskId].data[3] = VARS_END; } if (gMain.newKeys & DPAD_DOWN) @@ -1553,7 +1678,7 @@ static void DebugAction_Vars_Select(u8 taskId) if (gMain.newKeys & DPAD_LEFT) { gTasks[taskId].data[4] -= 1; - if(gTasks[taskId].data[4] < 0) + if (gTasks[taskId].data[4] < 0) gTasks[taskId].data[4] = 0; } if (gMain.newKeys & DPAD_RIGHT) @@ -1613,7 +1738,7 @@ static void DebugAction_Vars_Select(u8 taskId) } static void DebugAction_Vars_SetValue(u8 taskId) { - if(gMain.newKeys & DPAD_UP) + if (gMain.newKeys & DPAD_UP) { if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].data[4]] <= 32000) gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; @@ -1623,7 +1748,7 @@ static void DebugAction_Vars_SetValue(u8 taskId) if (gTasks[taskId].data[6] >= 32000) gTasks[taskId].data[6] = 32000 - 1; } - if(gMain.newKeys & DPAD_DOWN) + if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[6] < 0){ @@ -1719,7 +1844,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) if (gMain.newKeys & DPAD_UP) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] >= ITEMS_COUNT) + if (gTasks[taskId].data[3] >= ITEMS_COUNT) gTasks[taskId].data[3] = ITEMS_COUNT - 1; } if (gMain.newKeys & DPAD_DOWN) @@ -1730,7 +1855,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) } if (gMain.newKeys & DPAD_LEFT) { - if(gTasks[taskId].data[4] > 0) + if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } if (gMain.newKeys & DPAD_RIGHT) @@ -2150,7 +2275,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) if (gMain.newKeys & DPAD_DOWN) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; - if(gTasks[taskId].data[3] < 0) + if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } From 20190ac85a7f5b744a799567033459052c151f7f Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Thu, 15 Sep 2022 18:34:15 -0400 Subject: [PATCH 258/271] fix ai switch semi invulnerable --- src/battle_ai_switch_items.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 4948113a21..f6ce4622f1 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -370,7 +370,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) //Pass Wish Heal //Semi-Invulnerable - if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) + if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) { if (FindMonThatAbsorbsOpponentsMove()) //If find absorber default to switch switchMon = TRUE; if (!AI_OpponentCanFaintAiWithMod(0) @@ -380,6 +380,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) && !WillAIStrikeFirst() && !AI_OpponentCanFaintAiWithMod(0)) switchMon = FALSE; + } } if (switchMon) From 95a3ead254a27afcc1054418f056a660f95d35bf Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Thu, 15 Sep 2022 22:10:39 -0400 Subject: [PATCH 259/271] styling fix --- src/battle_ai_switch_items.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f6ce4622f1..3c3410e30b 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -370,7 +370,8 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) //Pass Wish Heal //Semi-Invulnerable - if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) { + if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) + { if (FindMonThatAbsorbsOpponentsMove()) //If find absorber default to switch switchMon = TRUE; if (!AI_OpponentCanFaintAiWithMod(0) From 672f572ff8b288a7a421032ed7a36e6596c229b4 Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Fri, 16 Sep 2022 11:04:30 -0300 Subject: [PATCH 260/271] Config to limit the moves called by Metronome (by generation) --- include/constants/battle_config.h | 1 + src/battle_script_commands.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index b8d7c9f8ae..4b6c0cc1ec 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -86,6 +86,7 @@ #define B_HEAL_BLOCKING GEN_LATEST // In Gen5+, Heal Block prevents healing by Black Sludge, Leftovers, Shell Bell. Affected Pokémon will not consume held HP-restoring Berries or Berry Juice. // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. #define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded. +#define B_METRONOME_MOVES GEN_LATEST // This config will determine up to which generation will Metronome pull moves from. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b03220066d..f5884d206d 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11472,9 +11472,23 @@ static void Cmd_mimicattackcopy(void) static void Cmd_metronome(void) { +#if B_METRONOME_MOVES >= GEN_8 + u16 moveCount = MOVES_COUNT_GEN8; +#elif B_METRONOME_MOVES >= GEN_7 + u16 moveCount = MOVES_COUNT_GEN7; +#elif B_METRONOME_MOVES >= GEN_6 + u16 moveCount = MOVES_COUNT_GEN6; +#elif B_METRONOME_MOVES >= GEN_5 + u16 moveCount = MOVES_COUNT_GEN5; +#elif B_METRONOME_MOVES >= GEN_4 + u16 moveCount = MOVES_COUNT_GEN4; +#elif B_METRONOME_MOVES >= GEN_3 + u16 moveCount = MOVES_COUNT_GEN3; +#endif + while (TRUE) { - gCurrentMove = (Random() % (MOVES_COUNT - 1)) + 1; + gCurrentMove = (Random() % (moveCount - 1)) + 1; if (gBattleMoves[gCurrentMove].effect == EFFECT_PLACEHOLDER) continue; From 5f74781a7d540036e2ba20d7cc7b028bccb80b40 Mon Sep 17 00:00:00 2001 From: Ct11217 Date: Sat, 17 Sep 2022 17:44:50 -0600 Subject: [PATCH 261/271] Remove ACE_POKEMON_FUNCTIONALITY --- include/constants/battle_ai.h | 2 +- src/battle_ai_switch_items.c | 28 ++++++++++++++-------------- src/battle_controller_opponent.c | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index 5dbbccf489..e45ce035c2 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -56,7 +56,7 @@ #define AI_FLAG_STALL (1 << 13) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished #define AI_FLAG_SCREENER (1 << 14) // AI prefers screening effects like reflect, mist, etc. TODO unfinished #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks -#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon. The last Pokemon in the party will not used until last remaining. +//#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon. The last Pokemon in the party will not used until last remaining. // 'other' ai logic flags #define AI_FLAG_ROAMING (1 << 29) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 7493be32b9..6642810cfd 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -109,9 +109,9 @@ static bool8 ShouldSwitchIfWonderGuard(void) continue; if (i == gBattlerPartyIndexes[gActiveBattler]) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue; + continue;*/ for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < MAX_MON_MOVES; j++) { @@ -202,9 +202,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue; + continue;*/ species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -283,9 +283,9 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) for (i = firstId; i < lastId; i++) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - break; + break;*/ //Look for mon in party that is able to be switched into and has ability that sets terrain if (GetMonData(&party[i], MON_DATA_HP) != 0 @@ -574,9 +574,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue; + continue;*/ species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -666,9 +666,9 @@ bool32 ShouldSwitch(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue; + continue;*/ availableToSwitch++; } @@ -756,9 +756,9 @@ void AI_TrySwitchOrUseItem(void) continue; if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && monToSwitchId == (CalculateEnemyPartyCount()-1)) - continue; + continue;*/ break; } @@ -957,8 +957,8 @@ u8 GetMostSuitableMonToSwitchInto(void) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler)) // While not really invalid per say, not really wise to switch into this mon. - || (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1))) //Save Ace Pokemon for last + /*|| (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + && i == (CalculateEnemyPartyCount()-1))*/) //Save Ace Pokemon for last invalidMons |= gBitTable[i]; else aliveCount++; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 07cf95589f..7cd44d7095 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1699,9 +1699,9 @@ static void OpponentHandleChoosePokemon(void) if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 && chosenMonId != gBattlerPartyIndexes[battler1] && chosenMonId != gBattlerPartyIndexes[battler2] - && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + /*&& (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && (!(chosenMonId == (CalculateEnemyPartyCount()-1)) - || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle))) + || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle))*/) { break; } From 293a880238b6e8707f43fd0d5d7dea3eeb4b9c7a Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 18 Sep 2022 00:50:21 -0300 Subject: [PATCH 262/271] Apply suggestions from code review --- include/constants/battle_ai.h | 2 +- src/battle_ai_switch_items.c | 28 ++++++++++++++-------------- src/battle_controller_opponent.c | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h index e45ce035c2..1cfb9cd4dc 100644 --- a/include/constants/battle_ai.h +++ b/include/constants/battle_ai.h @@ -56,7 +56,7 @@ #define AI_FLAG_STALL (1 << 13) // AI stalls battle and prefers secondary damage/trapping/etc. TODO not finished #define AI_FLAG_SCREENER (1 << 14) // AI prefers screening effects like reflect, mist, etc. TODO unfinished #define AI_FLAG_SMART_SWITCHING (1 << 15) // AI includes a lot more switching checks -//#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has Ace Pokemon. The last Pokemon in the party will not used until last remaining. +#define AI_FLAG_ACE_POKEMON (1 << 16) // AI has an Ace Pokemon. The last Pokemon in the party will not be used until it's the last one remaining. // 'other' ai logic flags #define AI_FLAG_ROAMING (1 << 29) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6642810cfd..6f5de84c40 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -109,9 +109,9 @@ static bool8 ShouldSwitchIfWonderGuard(void) continue; if (i == gBattlerPartyIndexes[gActiveBattler]) continue; - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue;*/ + continue; for (opposingBattler = GetBattlerAtPosition(opposingPosition), j = 0; j < MAX_MON_MOVES; j++) { @@ -202,9 +202,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue;*/ + continue; species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -283,9 +283,9 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) for (i = firstId; i < lastId; i++) { - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - break;*/ + break; //Look for mon in party that is able to be switched into and has ability that sets terrain if (GetMonData(&party[i], MON_DATA_HP) != 0 @@ -574,9 +574,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue;*/ + continue; species = GetMonData(&party[i], MON_DATA_SPECIES); @@ -666,9 +666,9 @@ bool32 ShouldSwitch(void) continue; if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && i == (CalculateEnemyPartyCount()-1)) - continue;*/ + continue; availableToSwitch++; } @@ -756,9 +756,9 @@ void AI_TrySwitchOrUseItem(void) continue; if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) continue; - /*if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON + if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON && monToSwitchId == (CalculateEnemyPartyCount()-1)) - continue;*/ + continue; break; } @@ -957,8 +957,8 @@ u8 GetMostSuitableMonToSwitchInto(void) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(gActiveBattler, opposingBattler)) // While not really invalid per say, not really wise to switch into this mon. - /*|| (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && i == (CalculateEnemyPartyCount()-1))*/) //Save Ace Pokemon for last + || ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON) + && i == (CalculateEnemyPartyCount() - 1))) //Save Ace Pokemon for last invalidMons |= gBitTable[i]; else aliveCount++; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 7cd44d7095..bf8f7f8698 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1699,9 +1699,9 @@ static void OpponentHandleChoosePokemon(void) if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0 && chosenMonId != gBattlerPartyIndexes[battler1] && chosenMonId != gBattlerPartyIndexes[battler2] - /*&& (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && (!(chosenMonId == (CalculateEnemyPartyCount()-1)) - || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle))*/) + && (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON) + || chosenMonId != CalculateEnemyPartyCount() - 1 + || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle)) { break; } From 41ae8ecdb7625c80c42ebf3a74e23cb12ae7124b Mon Sep 17 00:00:00 2001 From: Eduardo Quezada D'Ottone Date: Sun, 18 Sep 2022 00:51:34 -0300 Subject: [PATCH 263/271] Update src/battle_controller_opponent.c --- src/battle_controller_opponent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index bf8f7f8698..5a307cfc9c 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1701,7 +1701,7 @@ static void OpponentHandleChoosePokemon(void) && chosenMonId != gBattlerPartyIndexes[battler2] && (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON) || chosenMonId != CalculateEnemyPartyCount() - 1 - || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle)) + || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle)) { break; } From add3625589e2d9c6ae044fbf4965902420f66213 Mon Sep 17 00:00:00 2001 From: ghoulslash Date: Sun, 18 Sep 2022 22:47:30 -0400 Subject: [PATCH 264/271] fix natural cure, shed skin, early bird check in ShouldSwitchIfGameStatePrompt --- src/battle_ai_switch_items.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6f5de84c40..5876e8b474 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -312,7 +312,9 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) switchMon = FALSE; //Checks to see if active Pokemon can do something against sleep - if (monAbility == (ABILITY_NATURAL_CURE | ABILITY_SHED_SKIN | ABILITY_EARLY_BIRD) + if ((monAbility == ABILITY_NATURAL_CURE + || monAbility == ABILITY_SHED_SKIN + || monAbility == ABILITY_EARLY_BIRD) || holdEffect == (HOLD_EFFECT_CURE_SLP | HOLD_EFFECT_CURE_STATUS) || HasMove(gActiveBattler, MOVE_SLEEP_TALK) || (HasMoveEffect(gActiveBattler, MOVE_SNORE) && AI_GetTypeEffectiveness(MOVE_SNORE, gActiveBattler, opposingBattler) >= UQ_4_12(1.0)) From c137b01dd8ce0a5352c01164a756e18f6856dbbb Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 19 Sep 2022 04:19:19 -0300 Subject: [PATCH 265/271] Update debug.c --- src/debug.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/debug.c b/src/debug.c index 7c99ad2c28..27c6638635 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2813,8 +2813,8 @@ static void DebugAction_AccessPC(u8 taskId) // ******************************* // Sound Scripts -static const u8 *const gBGMNames[]; -static const u8 *const gSENames[]; +static const u8 *const sBGMNames[]; +static const u8 *const sSENames[]; static void DebugAction_Sound_SE(u8 taskId) { u8 windowId; @@ -2832,7 +2832,7 @@ static void DebugAction_Sound_SE(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gSENames[0], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sSENames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); @@ -2872,7 +2872,7 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2909,7 +2909,7 @@ static void DebugAction_Sound_MUS(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gBGMNames[0], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sBGMNames[0], CHAR_SPACE, 35); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); @@ -2949,7 +2949,7 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -3508,7 +3508,7 @@ SOUND_LIST_BGM #undef X #define X(songId) sBGMName_##songId, -static const u8 *const gBGMNames[] = +static const u8 *const sBGMNames[] = { SOUND_LIST_BGM }; @@ -3520,7 +3520,7 @@ SOUND_LIST_SE #undef X #define X(songId) sSEName_##songId, -static const u8 *const gSENames[] = +static const u8 *const sSENames[] = { SOUND_LIST_SE }; From 5f67335212106b2fa633c9888c59085784b6472f Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Mon, 19 Sep 2022 05:20:09 -0300 Subject: [PATCH 266/271] Fixed typo in BoxMonKnowsMove --- include/party_menu.h | 2 +- src/party_menu.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/party_menu.h b/include/party_menu.h index b00fd73240..d7cf15b889 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -55,7 +55,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc task); u16 ItemIdToBattleMoveId(u16 item); bool8 IsMoveHm(u16 move); bool8 MonKnowsMove(struct Pokemon *mon, u16 move); -bool8 BoxMonKnowsMove(struct BoxPokemon *mon, u16 move); +bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move); void ItemUseCB_TMHM(u8 taskId, TaskFunc task); void ItemUseCB_RareCandy(u8 taskId, TaskFunc task); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); diff --git a/src/party_menu.c b/src/party_menu.c index a93f66ebbe..da9a4ca891 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4892,13 +4892,13 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move) return FALSE; } -bool8 BoxMonKnowsMove(struct BoxPokemon *mon, u16 move) +bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move) { u8 i; for (i = 0; i < MAX_MON_MOVES; i++) { - if (GetMonData(mon, MON_DATA_MOVE1 + i) == move) + if (GetBoxMonData(boxMon, MON_DATA_MOVE1 + i) == move) return TRUE; } return FALSE; From d04a852e914f92e1069c386d5c5f8f59920b21b0 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Tue, 20 Sep 2022 02:31:20 -0300 Subject: [PATCH 267/271] Update debug.c --- src/debug.c | 434 ++++++++++++++++++++++++++-------------------------- 1 file changed, 217 insertions(+), 217 deletions(-) diff --git a/src/debug.c b/src/debug.c index 27c6638635..f56131968a 100644 --- a/src/debug.c +++ b/src/debug.c @@ -294,100 +294,100 @@ extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; // Text // Main Menu -static const u8 gDebugText_Utilities[] = _("Utilities"); -static const u8 gDebugText_Scripts[] = _("Scripts"); -static const u8 gDebugText_Flags[] = _("Flags"); -static const u8 gDebugText_Vars[] = _("Variables"); -static const u8 gDebugText_Give[] = _("Give X"); -static const u8 gDebugText_Sound[] = _("Sound"); -static const u8 gDebugText_Cancel[] = _("Cancel"); +static const u8 sDebugText_Utilities[] = _("Utilities"); +static const u8 sDebugText_Scripts[] = _("Scripts"); +static const u8 sDebugText_Flags[] = _("Flags"); +static const u8 sDebugText_Vars[] = _("Variables"); +static const u8 sDebugText_Give[] = _("Give X"); +static const u8 sDebugText_Sound[] = _("Sound"); +static const u8 sDebugText_Cancel[] = _("Cancel"); // Script menu -static const u8 gDebugText_Util_Script_1[] = _("Script 1"); -static const u8 gDebugText_Util_Script_2[] = _("Script 2"); -static const u8 gDebugText_Util_Script_3[] = _("Script 3"); -static const u8 gDebugText_Util_Script_4[] = _("Script 4"); -static const u8 gDebugText_Util_Script_5[] = _("Script 5"); -static const u8 gDebugText_Util_Script_6[] = _("Script 6"); -static const u8 gDebugText_Util_Script_7[] = _("Script 7"); -static const u8 gDebugText_Util_Script_8[] = _("Script 8"); +static const u8 sDebugText_Util_Script_1[] = _("Script 1"); +static const u8 sDebugText_Util_Script_2[] = _("Script 2"); +static const u8 sDebugText_Util_Script_3[] = _("Script 3"); +static const u8 sDebugText_Util_Script_4[] = _("Script 4"); +static const u8 sDebugText_Util_Script_5[] = _("Script 5"); +static const u8 sDebugText_Util_Script_6[] = _("Script 6"); +static const u8 sDebugText_Util_Script_7[] = _("Script 7"); +static const u8 sDebugText_Util_Script_8[] = _("Script 8"); // Util Menu -static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); -static const u8 gDebugText_Util_Fly[] = _("Fly to map"); -static const u8 gDebugText_Util_WarpToMap[] = _("Warp to map warp"); -static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); -static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); -static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); -static const u8 gDebugText_Util_Weather[] = _("Set weather"); -static const u8 gDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); -static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); -static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); -static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); -static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); -static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); -static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); +static const u8 sDebugText_Util_HealParty[] = _("Heal Party"); +static const u8 sDebugText_Util_Fly[] = _("Fly to map"); +static const u8 sDebugText_Util_WarpToMap[] = _("Warp to map warp"); +static const u8 sDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); +static const u8 sDebugText_Util_PoisonMons[] = _("Poison all mons"); +static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); +static const u8 sDebugText_Util_Weather[] = _("Set weather"); +static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); +static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); +static const u8 sDebugText_Util_SetWallClock[] = _("Set Wall Clock"); +static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits"); +static const u8 sDebugText_Util_Trainer_Name[] = _("Trainer name"); +static const u8 sDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); +static const u8 sDebugText_Util_Trainer_Id[] = _("New Trainer Id"); // Flags Menu -static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); -static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); -static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); -static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); -static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); -static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); -static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); -static const u8 gDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); -static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); -static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); -static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); -static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); -static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); -static const u8 gDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); -static const u8 gDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Flags_FlagSet[] = _("TRUE"); -static const u8 gDebugText_Flags_FlagUnset[] = _("FALSE"); +static const u8 sDebugText_Flags_Flags[] = _("Set Flag XXXX"); +static const u8 sDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); +static const u8 sDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); +static const u8 sDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); +static const u8 sDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); +static const u8 sDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); +static const u8 sDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 sDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); +static const u8 sDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); +static const u8 sDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); +static const u8 sDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); +static const u8 sDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); +static const u8 sDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); +static const u8 sDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); +static const u8 sDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 sDebugText_Flags_FlagSet[] = _("TRUE"); +static const u8 sDebugText_Flags_FlagUnset[] = _("FALSE"); // Variables Menu -static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); -static const u8 gDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); -static const u8 gDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 sDebugText_Vars_Vars[] = _("Set Vars XXXX"); +static const u8 sDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 sDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 sDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); // Give Menu -static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); -static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_Give_AllTMs[] = _("Give all TMs"); -static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); -static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); -static const u8 gDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); -static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); -static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); -static const u8 gDebugText_Give_BattlePoints[] = _("Max Battle Points"); -static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); -static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); -static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); -static const u8 gDebugText_AccessPC[] = _("Access PC"); +static const u8 sDebugText_Give_GiveItem[] = _("Give item XXXX"); +static const u8 sDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_Give_AllTMs[] = _("Give all TMs"); +static const u8 sDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); +static const u8 sDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); +static const u8 sDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); +static const u8 sDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_Give_MaxMoney[] = _("Max Money"); +static const u8 sDebugText_Give_MaxCoins[] = _("Max Coins"); +static const u8 sDebugText_Give_BattlePoints[] = _("Max Battle Points"); +static const u8 sDebugText_Give_DaycareEgg[] = _("Daycare Egg"); +static const u8 sDebugText_Give_FillPc[] = _("Fill Pc"); +static const u8 sDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); +static const u8 sDebugText_AccessPC[] = _("Access PC"); // Sound Mneu -static const u8 gDebugText_Sound_SE[] = _("Effects"); -static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_MUS[] = _("Music"); -static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_Empty[] = _(""); +static const u8 sDebugText_Sound_SE[] = _("Effects"); +static const u8 sDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_MUS[] = _("Music"); +static const u8 sDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_Empty[] = _(""); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); @@ -426,79 +426,79 @@ static const s32 sPowersOfTen[] = // List Menu Items static const struct ListMenuItem sDebugMenu_Items_Main[] = { - [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, - [DEBUG_MENU_ITEM_SCRIPTS] = {gDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, - [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, - [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, - [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, - [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, - [DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, - [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} + [DEBUG_MENU_ITEM_UTILITIES] = {sDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_SCRIPTS] = {sDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, + [DEBUG_MENU_ITEM_FLAGS] = {sDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, + [DEBUG_MENU_ITEM_VARS] = {sDebugText_Vars, DEBUG_MENU_ITEM_VARS}, + [DEBUG_MENU_ITEM_GIVE] = {sDebugText_Give, DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_SOUND] = {sDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, + [DEBUG_MENU_ITEM_ACCESS_PC] = {sDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, + [DEBUG_MENU_ITEM_CANCEL] = {sDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} }; static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, - [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, - [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_WEATHER] = {gDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {gDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {sDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {sDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {sDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {sDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {sDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {sDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {sDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = { - [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {gDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {gDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {gDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {gDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {gDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {gDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {gDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {gDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {sDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {sDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {sDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {sDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {sDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {sDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {sDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {sDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, }; static const struct ListMenuItem sDebugMenu_Items_Flags[] = { - [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {gDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {gDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {gDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, - [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, - [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, - [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {gDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, - [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {gDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {gDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLAGS] = {sDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {sDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {sDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {sDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {sDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {sDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {sDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {sDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {sDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {sDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = {sDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {sDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {sDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, }; static const struct ListMenuItem sDebugMenu_Items_Vars[] = { - [DEBUG_VARS_MENU_ITEM_VARS] = {gDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_VARS_MENU_ITEM_VARS] = {sDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, }; static const struct ListMenuItem sDebugMenu_Items_Give[] = { - [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, - [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, - [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, - [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, - [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {gDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, - [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, - [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, - [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {sDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {sDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {sDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {sDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {sDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {sDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {sDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {sDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {sDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = {sDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, }; static const struct ListMenuItem sDebugMenu_Items_Sound[] = { - [DEBUG_SOUND_MENU_ITEM_SE] = {gDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, - [DEBUG_SOUND_MENU_ITEM_MUS] = {gDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, + [DEBUG_SOUND_MENU_ITEM_SE] = {sDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, + [DEBUG_SOUND_MENU_ITEM_MUS] = {sDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, }; // ******************************* @@ -960,9 +960,9 @@ static void DebugAction_Util_Warp_Warp(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMapGroup; @@ -1003,9 +1003,9 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1017,10 +1017,10 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMap; @@ -1063,10 +1063,10 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1078,7 +1078,7 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectWarp; } @@ -1108,7 +1108,7 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1161,12 +1161,12 @@ static void DebugAction_Util_PoisonMons(u8 taskId) static void DebugAction_Util_CheckSaveBlock(u8 taskId) { - static const u8 gDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); + static const u8 sDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); ConvertIntToDecimalStringN(gStringVar1, sizeof(struct SaveBlock1), STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, sizeof(struct SaveBlock2), STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gDebugText_SaveBlockSize); + StringExpandPlaceholders(gStringVar4, sDebugText_SaveBlockSize); Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); @@ -1212,7 +1212,7 @@ static void DebugAction_Util_Weather(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar1, sWeatherNames[0], CHAR_SPACE, 30); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Weather_SelectId; @@ -1257,7 +1257,7 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) else StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1386,13 +1386,13 @@ static void DebugAction_Flags_Flags(u8 taskId) //Display initial Flag ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, 1, STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Flags_FlagHex); if (FlagGet(FLAG_TEMP_1) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); + StringExpandPlaceholders(gStringVar4, sDebugText_Flags_Flag); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Flags_FlagsSelect; @@ -1450,13 +1450,13 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) { ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Flags_FlagHex); if (FlagGet(gTasks[taskId].data[3]) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); + StringExpandPlaceholders(gStringVar4, sDebugText_Flags_Flag); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1644,11 +1644,11 @@ static void DebugAction_Vars_Vars(u8 taskId) //Display initial Variable ConvertIntToDecimalStringN(gStringVar1, VARS_START, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, VARS_START, STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); ConvertIntToDecimalStringN(gStringVar3, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_Variable); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Vars_Select; @@ -1691,7 +1691,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value, if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1700,7 +1700,7 @@ static void DebugAction_Vars_Select(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit //Combine str's to full window string - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_Variable); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -1712,7 +1712,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1720,7 +1720,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector @@ -1787,12 +1787,12 @@ static void DebugAction_Vars_SetValue(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[6], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1820,7 +1820,7 @@ static void DebugAction_Give_Item(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); CopyItemName(1, gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectId; @@ -1865,7 +1865,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) CopyItemName(gTasks[taskId].data[3], gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon @@ -1887,7 +1887,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectQuantity; @@ -1935,7 +1935,7 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2015,7 +2015,7 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); //Set task data @@ -2053,7 +2053,7 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 4); StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; @@ -2101,7 +2101,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) StringCopy(gStringVar1, gSpeciesNames[gTasks[taskId].data[3]]); //CopyItemName(gTasks[taskId].data[3], gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 4); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); @@ -2120,7 +2120,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; @@ -2166,7 +2166,7 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2189,8 +2189,8 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; @@ -2226,12 +2226,12 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) } if (gTasks[taskId].data[3] == 1) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2245,7 +2245,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNatureNamePointers[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; @@ -2280,7 +2280,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNatureNamePointers[gTasks[taskId].data[3]]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2296,7 +2296,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, 0); StringCopy(gStringVar1, gAbilityNames[abilityId]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; @@ -2340,7 +2340,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gAbilityNames[abilityId]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2353,7 +2353,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; @@ -2400,22 +2400,22 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); break; case 4: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); break; case 5: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2459,22 +2459,22 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); break; case 4: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); break; case 5: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2491,7 +2491,7 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; @@ -2540,16 +2540,16 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2592,16 +2592,16 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2833,7 +2833,7 @@ static void DebugAction_Sound_SE(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sSENames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear sounds @@ -2874,7 +2874,7 @@ static void DebugAction_Sound_SE_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } @@ -2910,7 +2910,7 @@ static void DebugAction_Sound_MUS(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); StringCopyPadded(gStringVar1, sBGMNames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear new music @@ -2951,7 +2951,7 @@ static void DebugAction_Sound_MUS_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } From cad8922d7bf1824deea5aaa996ef9f88983acbff Mon Sep 17 00:00:00 2001 From: StubbornOne Date: Wed, 21 Sep 2022 23:42:40 +0800 Subject: [PATCH 268/271] Replace battle-type flags in GetAiLogicData with BATTLE_TYPE_HAS_AI --- src/battle_ai_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 312ff853ca..78dcf24ca0 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -258,7 +258,7 @@ void GetAiLogicData(void) memset(AI_DATA, 0, sizeof(struct AiLogicData)); - if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER)) + if (!(gBattleTypeFlags & BATTLE_TYPE_HAS_AI) && !IsWildMonSmart()) return; From 64405250ae718597e16601127381703369905076 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 24 Sep 2022 08:50:48 -0300 Subject: [PATCH 269/271] Updated IsViableZMove --- src/battle_z_move.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index c257df5990..b61e5e1892 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -174,10 +174,8 @@ bool32 IsViableZMove(u8 battlerId, u16 move) if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FRONTIER)) return FALSE; - #ifdef ITEM_Z_RING - if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_RING, 1)) + if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) return FALSE; - #endif if (mega->alreadyEvolved[battlerPosition]) return FALSE; // Trainer has mega evolved From c64593cb9c387d63334538ba537f589961ff5727 Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 24 Sep 2022 09:04:15 -0300 Subject: [PATCH 270/271] Fixed LTBTS's animation --- data/battle_anim_scripts.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index c9dbfd2eec..e5f32e09ac 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -30451,11 +30451,11 @@ LightThatBurnsTheSkyGreenSparks: launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x2 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x2 0x3 delay 0x10 return From 696d90880e8fb5d9d249ade203b09b774982427e Mon Sep 17 00:00:00 2001 From: LOuroboros Date: Sat, 24 Sep 2022 09:33:31 -0300 Subject: [PATCH 271/271] Made Z-Moves always show the right type --- src/battle_z_move.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/battle_z_move.c b/src/battle_z_move.c index c257df5990..fa4cbc0c3e 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -54,6 +54,7 @@ static void ZMoveSelectionDisplayPower(u16 move, u16 zMove); static void ShowZMoveTriggerSprite(void); static bool32 AreStatsMaxed(u8 battlerId, u8 n); static u8 GetZMoveScore(u8 battlerAtk, u8 battlerDef, u16 baseMove, u16 zMove); +static void ZMoveSelectionDisplayMoveType(u16 zMove); // Const Data static const struct SignatureZMove sSignatureZMoves[] = @@ -522,6 +523,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_1); ZMoveSelectionDisplayPpNumber(); + ZMoveSelectionDisplayMoveType(zmove); MoveSelectionCreateCursorAt(0, 0); return TRUE; } @@ -561,6 +563,23 @@ static void ZMoveSelectionDisplayPpNumber(void) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP_REMAINING); } +static void ZMoveSelectionDisplayMoveType(u16 zMove) +{ + u8 *txtPtr; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]); + u8 zMoveType; + + GET_MOVE_TYPE(zMove, zMoveType); + + txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); + *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; + *(txtPtr)++ = EXT_CTRL_CODE_FONT; + *(txtPtr)++ = FONT_NORMAL; + + StringCopy(txtPtr, gTypeNames[zMoveType]); + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); +} + const u8 *GetZMoveName(u16 move) { if (IsZMove(move))