summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-14 17:43:11 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-14 17:43:11 -0500
commite86234ff99ffa4b60df180d462c2af0f1ed4d447 (patch)
tree0d7240ce350146c6fa2189bf89aa96b08f3a6fdc /src
parent1ff1e8ce9547d646b17b135b3013a516d17f35db (diff)
parent7e3495747035d13f72ba869195b21f4e61ee283a (diff)
Merge branch 'master' into pokemon_storage_system
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_ai.c12
-rw-r--r--src/battle/battle_anim.c1269
-rw-r--r--src/battle/battle_anim_80A7E7C.c78
-rw-r--r--src/battle/calculate_base_damage.c60
-rw-r--r--src/contest.c9
-rwxr-xr-xsrc/contest_ai.c1763
-rw-r--r--src/data/items_de.h116
-rw-r--r--src/data/items_en.h116
-rw-r--r--src/data/pokemon/base_stats.h826
-rw-r--r--src/data/pokemon/dex_order.h15
-rw-r--r--src/data/pokemon/evolution.h788
-rw-r--r--src/data/pokemon/item_effects.h729
-rw-r--r--src/data/pokemon/level_up_learnset_pointers.h2
-rw-r--r--src/data/pokemon/nature_stats.h37
-rw-r--r--src/data/pokemon/spinda_spots.h15
-rw-r--r--src/data/pokemon/tmhm_learnsets.h9824
-rw-r--r--src/engine/clear_save_data_menu.c2
-rw-r--r--src/engine/link.c2
-rw-r--r--src/engine/main_menu.c16
-rw-r--r--src/engine/mystery_event_menu.c2
-rw-r--r--src/engine/reset_rtc_screen.c2
-rw-r--r--src/engine/save.c683
-rw-r--r--src/engine/save_failed_screen.c2
-rw-r--r--src/field/battle_tower.c2
-rw-r--r--src/field/daycare.c4
-rw-r--r--src/field/fieldmap.c18
-rw-r--r--src/field/item_use.c2
-rw-r--r--src/field/party_menu.c2
-rw-r--r--src/field/player_pc.c2
-rw-r--r--src/field/start_menu.c8
-rw-r--r--src/pokemon/pokemon_1.c60
-rw-r--r--src/pokemon/pokemon_2.c28
-rw-r--r--src/pokemon/pokemon_3.c104
-rw-r--r--src/pokemon/pokemon_data.c116
-rw-r--r--src/pokemon/pokemon_item_effect.c11
-rw-r--r--src/scene/evolution_scene.c30
-rw-r--r--src/scene/hall_of_fame.c6
-rw-r--r--src/scene/intro.c4
38 files changed, 13936 insertions, 2829 deletions
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 977e91f5c..80848d2fd 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -355,7 +355,7 @@ u8 BattleAI_GetAIActionToUse(void)
{
if (AI_THINKING_STRUCT->aiFlags & 1)
{
- AI_THINKING_STRUCT->aiState = AIState_SettingUp;
+ AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP;
BattleAI_DoAIProcessing();
}
AI_THINKING_STRUCT->aiFlags >>= 1;
@@ -393,13 +393,13 @@ u8 BattleAI_GetAIActionToUse(void)
void BattleAI_DoAIProcessing(void)
{
- while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing)
+ while (AI_THINKING_STRUCT->aiState != BATTLEAI_FINISHED)
{
switch (AI_THINKING_STRUCT->aiState)
{
- case AIState_DoNotProcess: //Needed to match.
+ case BATTLEAI_DO_NOT_PROCESS: //Needed to match.
break;
- case AIState_SettingUp:
+ case BATTLEAI_SETTING_UP:
gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
if (gBattleMons[gBankAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
@@ -411,7 +411,7 @@ void BattleAI_DoAIProcessing(void)
}
AI_THINKING_STRUCT->aiState++;
break;
- case AIState_Processing:
+ case BATTLEAI_PROCESSING:
if (AI_THINKING_STRUCT->moveConsidered != MOVE_NONE)
sBattleAICmdTable[*gAIScriptPtr](); // run AI command.
else
@@ -423,7 +423,7 @@ void BattleAI_DoAIProcessing(void)
{
AI_THINKING_STRUCT->movesetIndex++;
if (AI_THINKING_STRUCT->movesetIndex < MAX_MON_MOVES && (AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK) == 0)
- AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state.
+ AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP; // as long as their are more moves to process, keep setting this to setup state.
else
AI_THINKING_STRUCT->aiState++; // done processing.
AI_THINKING_STRUCT->aiAction &= (AI_ACTION_FLEE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK |
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index a0c74be1d..4549d1fcb 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -13,6 +13,7 @@
#include "sprite.h"
#include "task.h"
#include "ewram.h"
+#include "graphics.h"
// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
#define GET_TRUE_SPRITE_INDEX(i) (i - 10000)
@@ -20,6 +21,1271 @@
#define ANIM_SPRITE_INDEX_COUNT 8
#define ANIM_ARGS_COUNT 8
+const struct OamData gOamData_837DF24 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF2C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF34 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF3C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF44 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF4C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF54 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF5C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF64 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF6C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF74 =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF7C =
+{
+ .affineMode = 0,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF84 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF8C =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF94 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DF9C =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFA4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFAC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFB4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFBC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFC4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFCC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFD4 =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFDC =
+{
+ .affineMode = 1,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFE4 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFEC =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFF4 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837DFFC =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837D004 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837D00C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E014 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E01C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E024 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E02C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E034 =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E03C =
+{
+ .affineMode = 3,
+ .objMode = 0,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E044 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E04C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E054 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E05C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E064 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E06C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E074 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E07C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E084 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E08C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E094 =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E09C =
+{
+ .affineMode = 0,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0A4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0AC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0B4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0BC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0C4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0CC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0D4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0DC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0E4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0EC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0F4 =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E0FC =
+{
+ .affineMode = 1,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E104 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E10C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E114 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E11C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 0,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E124 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E12C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E134 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E13C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 1,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E144 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 0,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E14C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 1,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E154 =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 2,
+ .priority = 2,
+};
+
+const struct OamData gOamData_837E15C =
+{
+ .affineMode = 3,
+ .objMode = 1,
+ .shape = 2,
+ .size = 3,
+ .priority = 2,
+};
+
+const struct CompressedSpriteSheet gBattleAnimPicTable[] =
+{
+ { (u8 *) &gBattleAnimSpriteSheet_000, 0x200, 10000 },
+ { (u8 *) &gBattleAnimSpriteSheet_001, 0x300, 10001 },
+ { (u8 *) &gBattleAnimSpriteSheet_002, 0x200, 10002 },
+ { (u8 *) &gBattleAnimSpriteSheet_003, 0x100, 10003 },
+ { (u8 *) &gBattleAnimSpriteSheet_004, 0x200, 10004 },
+ { (u8 *) &gBattleAnimSpriteSheet_005, 0x400, 10005 },
+ { (u8 *) &gBattleAnimSpriteSheet_006, 0x180, 10006 },
+ { (u8 *) &gBattleAnimSpriteSheet_007, 0x800, 10007 },
+ { (u8 *) &gBattleAnimSpriteSheet_008, 0x20, 10008 },
+ { (u8 *) &gBattleAnimSpriteSheet_009, 0x400, 10009 },
+ { (u8 *) &gBattleAnimSpriteSheet_010, 0x1200, 10010 },
+ { (u8 *) &gBattleAnimSpriteSheet_011, 0x180, 10011 },
+ { (u8 *) &gBattleAnimSpriteSheet_012, 0x80, 10012 },
+ { (u8 *) &gBattleAnimSpriteSheet_013, 0x80, 10013 },
+ { (u8 *) &gBattleAnimSpriteSheet_014, 0x280, 10014 },
+ { (u8 *) &gBattleAnimSpriteSheet_015, 0x80, 10015 },
+ { (u8 *) &gBattleAnimSpriteSheet_016, 0x100, 10016 },
+ { (u8 *) &gBattleAnimSpriteSheet_017, 0x20, 10017 },
+ { (u8 *) &gBattleAnimSpriteSheet_018, 0x80, 10018 },
+ { (u8 *) &gBattleAnimSpriteSheet_019, 0x400, 10019 },
+ { (u8 *) &gBattleAnimSpriteSheet_020, 0x200, 10020 },
+ { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10021 },
+ { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10022 },
+ { (u8 *) &gBattleAnimSpriteSheet_023, 0x380, 10023 },
+ { (u8 *) &gBattleAnimSpriteSheet_024, 0x300, 10024 },
+ { (u8 *) &gBattleAnimSpriteSheet_025, 0xA00, 10025 },
+ { (u8 *) &gBattleAnimSpriteSheet_026, 0xA00, 10026 },
+ { (u8 *) &gBattleAnimSpriteSheet_027, 0xA00, 10027 },
+ { (u8 *) &gBattleAnimSpriteSheet_028, 0xA00, 10028 },
+ { (u8 *) &gBattleAnimSpriteSheet_029, 0xA00, 10029 },
+ { (u8 *) &gBattleAnimSpriteSheet_030, 0xA00, 10030 },
+ { (u8 *) &gBattleAnimSpriteSheet_031, 0xE00, 10031 },
+ { (u8 *) &gBattleAnimSpriteSheet_032, 0x380, 10032 },
+ { (u8 *) &gBattleAnimSpriteSheet_033, 0x1000, 10033 },
+ { (u8 *) &gBattleAnimSpriteSheet_034, 0x800, 10034 },
+ { (u8 *) &gBattleAnimSpriteSheet_035, 0xA00, 10035 },
+ { (u8 *) &gBattleAnimSpriteSheet_036, 0x800, 10036 },
+ { (u8 *) &gBattleAnimSpriteSheet_037, 0xA00, 10037 },
+ { (u8 *) &gBattleAnimSpriteSheet_038, 0xA00, 10038 },
+ { (u8 *) &gBattleAnimSpriteSheet_039, 0xA00, 10039 },
+ { (u8 *) &gBattleAnimSpriteSheet_040, 0xA00, 10040 },
+ { (u8 *) &gBattleAnimSpriteSheet_041, 0xA00, 10041 },
+ { (u8 *) &gBattleAnimSpriteSheet_042, 0xA00, 10042 },
+ { (u8 *) &gBattleAnimSpriteSheet_043, 0xA00, 10043 },
+ { (u8 *) &gBattleAnimSpriteSheet_044, 0xA00, 10044 },
+ { (u8 *) &gBattleAnimSpriteSheet_045, 0xA00, 10045 },
+ { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10046 },
+ { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10047 },
+ { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10048 },
+ { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10049 },
+ { (u8 *) &gBattleAnimSpriteSheet_050, 0x200, 10050 },
+ { (u8 *) &gBattleAnimSpriteSheet_051, 0x200, 10051 },
+ { (u8 *) &gBattleAnimSpriteSheet_052, 0x200, 10052 },
+ { (u8 *) &gBattleAnimSpriteSheet_053, 0x800, 10053 },
+ { (u8 *) &gBattleAnimSpriteSheet_054, 0x80, 10054 },
+ { (u8 *) &gBattleAnimSpriteSheet_055, 0x200, 10055 },
+ { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10056 },
+ { (u8 *) &gBattleAnimSpriteSheet_057, 0x180, 10057 },
+ { (u8 *) &gBattleAnimSpriteSheet_058, 0xC00, 10058 },
+ { (u8 *) &gBattleAnimSpriteSheet_059, 0x100, 10059 },
+ { (u8 *) &gBattleAnimSpriteSheet_060, 0x40, 10060 },
+ { (u8 *) &gBattleAnimSpriteSheet_061, 0x180, 10061 },
+ { (u8 *) &gBattleAnimSpriteSheet_062, 0x800, 10062 },
+ { (u8 *) &gBattleAnimSpriteSheet_063, 0x480, 10063 },
+ { (u8 *) &gBattleAnimSpriteSheet_064, 0x200, 10064 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10065 },
+ { (u8 *) &gBattleAnimSpriteSheet_066, 0x100, 10066 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10067 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10068 },
+ { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10069 },
+ { (u8 *) &gBattleAnimSpriteSheet_070, 0x200, 10070 },
+ { (u8 *) &gBattleAnimSpriteSheet_071, 0xA00, 10071 },
+ { (u8 *) &gBattleAnimSpriteSheet_072, 0x300, 10072 },
+ { (u8 *) &gBattleAnimSpriteSheet_073, 0x180, 10073 },
+ { (u8 *) &gBattleAnimSpriteSheet_074, 0xA0, 10074 },
+ { (u8 *) &gBattleAnimSpriteSheet_075, 0x700, 10075 },
+ { (u8 *) &gBattleAnimSpriteSheet_076, 0x400, 10076 },
+ { (u8 *) &gBattleAnimSpriteSheet_077, 0x200, 10077 },
+ { (u8 *) &gBattleAnimSpriteSheet_078, 0x300, 10078 },
+ { (u8 *) &gBattleAnimSpriteSheet_079, 0xC00, 10079 },
+ { (u8 *) &gBattleAnimSpriteSheet_080, 0xA00, 10080 },
+ { (u8 *) &gBattleAnimSpriteSheet_081, 0x80, 10081 },
+ { (u8 *) &gBattleAnimSpriteSheet_082, 0x40, 10082 },
+ { (u8 *) &gBattleAnimSpriteSheet_083, 0xE00, 10083 },
+ { (u8 *) &gBattleAnimSpriteSheet_084, 0xE00, 10084 },
+ { (u8 *) &gBattleAnimSpriteSheet_085, 0x280, 10085 },
+ { (u8 *) &gBattleAnimSpriteSheet_086, 0x200, 10086 },
+ { (u8 *) &gBattleAnimSpriteSheet_087, 0x80, 10087 },
+ { (u8 *) &gBattleAnimSpriteSheet_088, 0xC0, 10088 },
+ { (u8 *) &gBattleAnimSpriteSheet_089, 0xA00, 10089 },
+ { (u8 *) &gBattleAnimSpriteSheet_090, 0x200, 10090 },
+ { (u8 *) &gBattleAnimSpriteSheet_091, 0x180, 10091 },
+ { (u8 *) &gBattleAnimSpriteSheet_092, 0x80, 10092 },
+ { (u8 *) &gBattleAnimSpriteSheet_093, 0x1000, 10093 },
+ { (u8 *) &gBattleAnimSpriteSheet_094, 0xA00, 10094 },
+ { (u8 *) &gBattleAnimSpriteSheet_095, 0x180, 10095 },
+ { (u8 *) &gBattleAnimSpriteSheet_096, 0x380, 10096 },
+ { (u8 *) &gBattleAnimSpriteSheet_097, 0xC00, 10097 },
+ { (u8 *) &gBattleAnimSpriteSheet_098, 0x200, 10098 },
+ { (u8 *) &gBattleAnimSpriteSheet_099, 0x200, 10099 },
+ { (u8 *) &gBattleAnimSpriteSheet_100, 0x200, 10100 },
+ { (u8 *) &gBattleAnimSpriteSheet_101, 0x200, 10101 },
+ { (u8 *) &gBattleAnimSpriteSheet_102, 0x400, 10102 },
+ { (u8 *) &gBattleAnimSpriteSheet_103, 0x80, 10103 },
+ { (u8 *) &gBattleAnimSpriteSheet_104, 0x400, 10104 },
+ { (u8 *) &gBattleAnimSpriteSheet_105, 0xC00, 10105 },
+ { (u8 *) &gBattleAnimSpriteSheet_106, 0x200, 10106 },
+ { (u8 *) &gBattleAnimSpriteSheet_107, 0x1000, 10107 },
+ { (u8 *) &gBattleAnimSpriteSheet_108, 0xA00, 10108 },
+ { (u8 *) &gBattleAnimSpriteSheet_109, 0x20, 10109 },
+ { (u8 *) &gBattleAnimSpriteSheet_110, 0xE00, 10110 },
+ { (u8 *) &gBattleAnimSpriteSheet_111, 0x80, 10111 },
+ { (u8 *) &gBattleAnimSpriteSheet_112, 0xA00, 10112 },
+ { (u8 *) &gBattleAnimSpriteSheet_113, 0x400, 10113 },
+ { (u8 *) &gBattleAnimSpriteSheet_114, 0x200, 10114 },
+ { (u8 *) &gBattleAnimSpriteSheet_115, 0x700, 10115 },
+ { (u8 *) &gBattleAnimSpriteSheet_116, 0x800, 10116 },
+ { (u8 *) &gBattleAnimSpriteSheet_117, 0xA00, 10117 },
+ { (u8 *) &gBattleAnimSpriteSheet_118, 0x600, 10118 },
+ { (u8 *) &gBattleAnimSpriteSheet_119, 0x800, 10119 },
+ { (u8 *) &gBattleAnimSpriteSheet_120, 0x200, 10120 },
+ { (u8 *) &gBattleAnimSpriteSheet_121, 0x40, 10121 },
+ { (u8 *) &gBattleAnimSpriteSheet_122, 0x180, 10122 },
+ { (u8 *) &gBattleAnimSpriteSheet_123, 0x600, 10123 },
+ { (u8 *) &gBattleAnimSpriteSheet_124, 0x600, 10124 },
+ { (u8 *) &gBattleAnimSpriteSheet_125, 0x200, 10125 },
+ { (u8 *) &gBattleAnimSpriteSheet_126, 0x80, 10126 },
+ { (u8 *) &gBattleAnimSpriteSheet_127, 0x200, 10127 },
+ { (u8 *) &gBattleAnimSpriteSheet_128, 0x800, 10128 },
+ { (u8 *) &gBattleAnimSpriteSheet_129, 0x80, 10129 },
+ { (u8 *) &gBattleAnimSpriteSheet_130, 0xA00, 10130 },
+ { (u8 *) &gBattleAnimSpriteSheet_131, 0x280, 10131 },
+ { (u8 *) &gBattleAnimSpriteSheet_132, 0x280, 10132 },
+ { (u8 *) &gBattleAnimSpriteSheet_133, 0x100, 10133 },
+ { (u8 *) &gBattleAnimSpriteSheet_134, 0x200, 10134 },
+ { (u8 *) &gBattleAnimSpriteSheet_135, 0x200, 10135 },
+ { (u8 *) &gBattleAnimSpriteSheet_136, 0x20, 10136 },
+ { (u8 *) &gBattleAnimSpriteSheet_137, 0xA00, 10137 },
+ { (u8 *) &gBattleAnimSpriteSheet_138, 0x800, 10138 },
+ { (u8 *) &gBattleAnimSpriteSheet_139, 0x800, 10139 },
+ { (u8 *) &gBattleAnimSpriteSheet_140, 0xC0, 10140 },
+ { (u8 *) &gBattleAnimSpriteSheet_141, 0x1C0, 10141 },
+ { (u8 *) &gBattleAnimSpriteSheet_142, 0x100, 10142 },
+ { (u8 *) &gBattleAnimSpriteSheet_143, 0x800, 10143 },
+ { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10144 },
+ { (u8 *) &gBattleAnimSpriteSheet_145, 0x800, 10145 },
+ { (u8 *) &gBattleAnimSpriteSheet_146, 0x180, 10146 },
+ { (u8 *) &gBattleAnimSpriteSheet_147, 0x180, 10147 },
+ { (u8 *) &gBattleAnimSpriteSheet_148, 0x200, 10148 },
+ { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10149 },
+ { (u8 *) &gBattleAnimSpriteSheet_150, 0x180, 10150 },
+ { (u8 *) &gBattleAnimSpriteSheet_151, 0x400, 10151 },
+ { (u8 *) &gBattleAnimSpriteSheet_152, 0x80, 10152 },
+ { (u8 *) &gBattleAnimSpriteSheet_153, 0x100, 10153 },
+ { (u8 *) &gBattleAnimSpriteSheet_154, 0x100, 10154 },
+ { (u8 *) &gBattleAnimSpriteSheet_155, 0x140, 10155 },
+ { (u8 *) &gBattleAnimSpriteSheet_156, 0x800, 10156 },
+ { (u8 *) &gBattleAnimSpriteSheet_157, 0x200, 10157 },
+ { (u8 *) &gBattleAnimSpriteSheet_158, 0x100, 10158 },
+ { (u8 *) &gBattleAnimSpriteSheet_159, 0xA0, 10159 },
+ { (u8 *) &gBattleAnimSpriteSheet_160, 0x100, 10160 },
+ { (u8 *) &gBattleAnimSpriteSheet_161, 0x80, 10161 },
+ { (u8 *) &gBattleAnimSpriteSheet_162, 0x300, 10162 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10163 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10164 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10165 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10166 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10167 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10168 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10169 },
+ { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10170 },
+ { (u8 *) &gBattleAnimSpriteSheet_171, 0x80, 10171 },
+ { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10172 },
+ { (u8 *) &gBattleAnimSpriteSheet_173, 0x200, 10173 },
+ { (u8 *) &gBattleAnimSpriteSheet_174, 0x200, 10174 },
+ { (u8 *) &gBattleAnimSpriteSheet_175, 0x80, 10175 },
+ { (u8 *) &gBattleAnimSpriteSheet_176, 0x200, 10176 },
+ { (u8 *) &gBattleAnimSpriteSheet_177, 0x500, 10177 },
+ { (u8 *) &gBattleAnimSpriteSheet_178, 0x800, 10178 },
+ { (u8 *) &gBattleAnimSpriteSheet_179, 0x400, 10179 },
+ { (u8 *) &gBattleAnimSpriteSheet_180, 0x20, 10180 },
+ { (u8 *) &gBattleAnimSpriteSheet_181, 0x800, 10181 },
+ { (u8 *) &gBattleAnimSpriteSheet_182, 0x100, 10182 },
+ { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10183 },
+ { (u8 *) &gBattleAnimSpriteSheet_184, 0x400, 10184 },
+ { (u8 *) &gBattleAnimSpriteSheet_185, 0xA00, 10185 },
+ { (u8 *) &gBattleAnimSpriteSheet_186, 0x1000, 10186 },
+ { (u8 *) &gBattleAnimSpriteSheet_187, 0x800, 10187 },
+ { (u8 *) &gBattleAnimSpriteSheet_188, 0x400, 10188 },
+ { (u8 *) &gBattleAnimSpriteSheet_189, 0x200, 10189 },
+ { (u8 *) &gBattleAnimSpriteSheet_190, 0x800, 10190 },
+ { (u8 *) &gBattleAnimSpriteSheet_191, 0x800, 10191 },
+ { (u8 *) &gBattleAnimSpriteSheet_192, 0x800, 10192 },
+ { (u8 *) &gBattleAnimSpriteSheet_193, 0x200, 10193 },
+ { (u8 *) &gBattleAnimSpriteSheet_194, 0x800, 10194 },
+ { (u8 *) &gBattleAnimSpriteSheet_195, 0x200, 10195 },
+ { (u8 *) &gBattleAnimSpriteSheet_196, 0x800, 10196 },
+ { (u8 *) &gBattleAnimSpriteSheet_197, 0x200, 10197 },
+ { (u8 *) &gBattleAnimSpriteSheet_198, 0x800, 10198 },
+ { (u8 *) &gBattleAnimSpriteSheet_199, 0x400, 10199 },
+ { (u8 *) &gBattleAnimSpriteSheet_200, 0x200, 10200 },
+ { (u8 *) &gBattleAnimSpriteSheet_201, 0xA80, 10201 },
+ { (u8 *) &gBattleAnimSpriteSheet_202, 0x600, 10202 },
+ { (u8 *) &gBattleAnimSpriteSheet_203, 0x800, 10203 },
+ { (u8 *) &gBattleAnimSpriteSheet_204, 0x200, 10204 },
+ { (u8 *) &gBattleAnimSpriteSheet_205, 0x600, 10205 },
+ { (u8 *) &gBattleAnimSpriteSheet_206, 0x800, 10206 },
+ { (u8 *) &gBattleAnimSpriteSheet_207, 0x180, 10207 },
+ { (u8 *) &gBattleAnimSpriteSheet_208, 0x800, 10208 },
+ { (u8 *) &gBattleAnimSpriteSheet_209, 0x800, 10209 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10210 },
+ { (u8 *) &gBattleAnimSpriteSheet_211, 0x80, 10211 },
+ { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10212 },
+ { (u8 *) &gBattleAnimSpriteSheet_213, 0x800, 10213 },
+ { (u8 *) &gBattleAnimSpriteSheet_214, 0x600, 10214 },
+ { (u8 *) &gBattleAnimSpriteSheet_215, 0x600, 10215 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10216 },
+ { (u8 *) &gBattleAnimSpriteSheet_217, 0x80, 10217 },
+ { (u8 *) &gBattleAnimSpriteSheet_218, 0x180, 10218 },
+ { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10219 },
+ { (u8 *) &gBattleAnimSpriteSheet_220, 0x200, 10220 },
+ { (u8 *) &gBattleAnimSpriteSheet_221, 0x400, 10221 },
+ { (u8 *) &gBattleAnimSpriteSheet_222, 0xA00, 10222 },
+ { (u8 *) &gBattleAnimSpriteSheet_223, 0x800, 10223 },
+ { (u8 *) &gBattleAnimSpriteSheet_224, 0x200, 10224 },
+ { (u8 *) &gBattleAnimSpriteSheet_225, 0x400, 10225 },
+ { (u8 *) &gBattleAnimSpriteSheet_226, 0x80, 10226 },
+ { (u8 *) &gBattleAnimSpriteSheet_227, 0x800, 10227 },
+ { (u8 *) &gBattleAnimSpriteSheet_228, 0x200, 10228 },
+ { (u8 *) &gBattleAnimSpriteSheet_229, 0x300, 10229 },
+ { (u8 *) &gBattleAnimSpriteSheet_230, 0x800, 10230 },
+ { (u8 *) &gBattleAnimSpriteSheet_231, 0x380, 10231 },
+ { (u8 *) &gBattleAnimSpriteSheet_232, 0x800, 10232 },
+ { (u8 *) &gBattleAnimSpriteSheet_233, 0xC0, 10233 },
+ { (u8 *) &gBattleAnimSpriteSheet_234, 0x800, 10234 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10235 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10236 },
+ { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10237 },
+ { (u8 *) &gBattleAnimSpriteSheet_238, 0x80, 10238 },
+ { (u8 *) &gBattleAnimSpriteSheet_239, 0x180, 10239 },
+ { (u8 *) &gBattleAnimSpriteSheet_240, 0x180, 10240 },
+ { (u8 *) &gBattleAnimSpriteSheet_241, 0x200, 10241 },
+ { (u8 *) &gBattleAnimSpriteSheet_242, 0x200, 10242 },
+ { (u8 *) &gBattleAnimSpriteSheet_243, 0x20, 10243 },
+ { (u8 *) &gBattleAnimSpriteSheet_244, 0x400, 10244 },
+ { (u8 *) &gBattleAnimSpriteSheet_245, 0x600, 10245 },
+ { (u8 *) &gBattleAnimSpriteSheet_246, 0x1000, 10246 },
+ { (u8 *) &gBattleAnimSpriteSheet_247, 0x400, 10247 },
+ { (u8 *) &gBattleAnimSpriteSheet_248, 0x20, 10248 },
+ { (u8 *) &gBattleAnimSpriteSheet_249, 0x80, 10249 },
+ { (u8 *) &gBattleAnimSpriteSheet_250, 0x800, 10250 },
+ { (u8 *) &gBattleAnimSpriteSheet_251, 0x80, 10251 },
+ { (u8 *) &gBattleAnimSpriteSheet_252, 0x200, 10252 },
+ { (u8 *) &gBattleAnimSpriteSheet_253, 0x400, 10253 },
+ { (u8 *) &gBattleAnimSpriteSheet_254, 0x200, 10254 },
+ { (u8 *) &gBattleAnimSpriteSheet_255, 0x200, 10255 },
+ { (u8 *) &gBattleAnimSpriteSheet_256, 0x800, 10256 },
+ { (u8 *) &gBattleAnimSpriteSheet_257, 0x280, 10257 },
+ { (u8 *) &gBattleAnimSpriteSheet_258, 0x200, 10258 },
+ { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10259 },
+ { (u8 *) &gBattleAnimSpriteSheet_260, 0x400, 10260 },
+ { (u8 *) &gBattleAnimSpriteSheet_261, 0x200, 10261 },
+ { (u8 *) &gBattleAnimSpriteSheet_262, 0x200, 10262 },
+ { (u8 *) &gBattleAnimSpriteSheet_263, 0x80, 10263 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10264 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10265 },
+ { (u8 *) &gBattleAnimSpriteSheet_266, 0x80, 10266 },
+ { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10267 },
+ { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10268 },
+ { (u8 *) &gBattleAnimSpriteSheet_269, 0x80, 10269 },
+ { (u8 *) &gBattleAnimSpriteSheet_270, 0x400, 10270 },
+ { (u8 *) &gBattleAnimSpriteSheet_271, 0x80, 10271 },
+ { (u8 *) &gBattleAnimSpriteSheet_272, 0x800, 10272 },
+ { (u8 *) &gBattleAnimSpriteSheet_273, 0x20, 10273 },
+ { (u8 *) &gBattleAnimSpriteSheet_274, 0x800, 10274 },
+ { (u8 *) &gBattleAnimSpriteSheet_275, 0x800, 10275 },
+ { (u8 *) &gBattleAnimSpriteSheet_276, 0x800, 10276 },
+ { (u8 *) &gBattleAnimSpriteSheet_277, 0x1000, 10277 },
+ { (u8 *) &gBattleAnimSpriteSheet_278, 0x800, 10278 },
+ { (u8 *) &gBattleAnimSpriteSheet_279, 0xA0, 10279 },
+ { (u8 *) &gBattleAnimSpriteSheet_280, 0x800, 10280 },
+ { (u8 *) &gBattleAnimSpriteSheet_281, 0x200, 10281 },
+ { (u8 *) &gBattleAnimSpriteSheet_282, 0x600, 10282 },
+ { (u8 *) &gBattleAnimSpriteSheet_283, 0x200, 10283 },
+ { (u8 *) &gBattleAnimSpriteSheet_284, 0x800, 10284 },
+ { (u8 *) &gBattleAnimSpriteSheet_285, 0x200, 10285 },
+ { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10286 },
+ { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10287 },
+ { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10288 },
+};
+
+const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
+{
+ { (u8 *) &gBattleAnimSpritePalette_000, 10000 },
+ { (u8 *) &gBattleAnimSpritePalette_001, 10001 },
+ { (u8 *) &gBattleAnimSpritePalette_002, 10002 },
+ { (u8 *) &gBattleAnimSpritePalette_003, 10003 },
+ { (u8 *) &gBattleAnimSpritePalette_004, 10004 },
+ { (u8 *) &gBattleAnimSpritePalette_005, 10005 },
+ { (u8 *) &gBattleAnimSpritePalette_006, 10006 },
+ { (u8 *) &gBattleAnimSpritePalette_007, 10007 },
+ { (u8 *) &gBattleAnimSpritePalette_008, 10008 },
+ { (u8 *) &gBattleAnimSpritePalette_009, 10009 },
+ { (u8 *) &gBattleAnimSpritePalette_010, 10010 },
+ { (u8 *) &gBattleAnimSpritePalette_011, 10011 },
+ { (u8 *) &gBattleAnimSpritePalette_012, 10012 },
+ { (u8 *) &gBattleAnimSpritePalette_013, 10013 },
+ { (u8 *) &gBattleAnimSpritePalette_014, 10014 },
+ { (u8 *) &gBattleAnimSpritePalette_015, 10015 },
+ { (u8 *) &gBattleAnimSpritePalette_016, 10016 },
+ { (u8 *) &gBattleAnimSpritePalette_016, 10017 },
+ { (u8 *) &gBattleAnimSpritePalette_018, 10018 },
+ { (u8 *) &gBattleAnimSpritePalette_019, 10019 },
+ { (u8 *) &gBattleAnimSpritePalette_020, 10020 },
+ { (u8 *) &gBattleAnimSpritePalette_021, 10021 },
+ { (u8 *) &gBattleAnimSpritePalette_022, 10022 },
+ { (u8 *) &gBattleAnimSpritePalette_023, 10023 },
+ { (u8 *) &gBattleAnimSpritePalette_024, 10024 },
+ { (u8 *) &gBattleAnimSpritePalette_025, 10025 },
+ { (u8 *) &gBattleAnimSpritePalette_026, 10026 },
+ { (u8 *) &gBattleAnimSpritePalette_027, 10027 },
+ { (u8 *) &gBattleAnimSpritePalette_028, 10028 },
+ { (u8 *) &gBattleAnimSpritePalette_029, 10029 },
+ { (u8 *) &gBattleAnimSpritePalette_030, 10030 },
+ { (u8 *) &gBattleAnimSpritePalette_031, 10031 },
+ { (u8 *) &gBattleAnimSpritePalette_032, 10032 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10033 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10034 },
+ { (u8 *) &gBattleAnimSpritePalette_033, 10035 },
+ { (u8 *) &gBattleAnimSpritePalette_036, 10036 },
+ { (u8 *) &gBattleAnimSpritePalette_036, 10037 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10038 },
+ { (u8 *) &gBattleAnimSpritePalette_039, 10039 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10040 },
+ { (u8 *) &gBattleAnimSpritePalette_038, 10041 },
+ { (u8 *) &gBattleAnimSpritePalette_042, 10042 },
+ { (u8 *) &gBattleAnimSpritePalette_043, 10043 },
+ { (u8 *) &gBattleAnimSpritePalette_044, 10044 },
+ { (u8 *) &gBattleAnimSpritePalette_045, 10045 },
+ { (u8 *) &gBattleAnimSpritePalette_046, 10046 },
+ { (u8 *) &gBattleAnimSpritePalette_047, 10046 },
+ { (u8 *) &gBattleAnimSpritePalette_048, 10048 },
+ { (u8 *) &gBattleAnimSpritePalette_049, 10049 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10050 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10051 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10052 },
+ { (u8 *) &gBattleAnimSpritePalette_026, 10053 },
+ { (u8 *) &gBattleAnimSpritePalette_054, 10054 },
+ { (u8 *) &gBattleAnimSpritePalette_050, 10055 },
+ { (u8 *) &gBattleAnimSpritePalette_056, 10056 },
+ { (u8 *) &gBattleAnimSpritePalette_057, 10057 },
+ { (u8 *) &gBattleAnimSpritePalette_058, 10058 },
+ { (u8 *) &gBattleAnimSpritePalette_059, 10059 },
+ { (u8 *) &gBattleAnimSpritePalette_060, 10060 },
+ { (u8 *) &gBattleAnimSpritePalette_061, 10061 },
+ { (u8 *) &gBattleAnimSpritePalette_062, 10062 },
+ { (u8 *) &gBattleAnimSpritePalette_063, 10063 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10064 },
+ { (u8 *) &gBattleAnimSpritePalette_065, 10065 },
+ { (u8 *) &gBattleAnimSpritePalette_066, 10066 },
+ { (u8 *) &gBattleAnimSpritePalette_067, 10067 },
+ { (u8 *) &gBattleAnimSpritePalette_068, 10068 },
+ { (u8 *) &gBattleAnimSpritePalette_065, 10069 },
+ { (u8 *) &gBattleAnimSpritePalette_070, 10070 },
+ { (u8 *) &gBattleAnimSpritePalette_070, 10071 },
+ { (u8 *) &gBattleAnimSpritePalette_072, 10072 },
+ { (u8 *) &gBattleAnimSpritePalette_073, 10073 },
+ { (u8 *) &gBattleAnimSpritePalette_074, 10074 },
+ { (u8 *) &gBattleAnimSpritePalette_075, 10075 },
+ { (u8 *) &gBattleAnimSpritePalette_076, 10076 },
+ { (u8 *) &gBattleAnimSpritePalette_076, 10077 },
+ { (u8 *) &gBattleAnimSpritePalette_078, 10078 },
+ { (u8 *) &gBattleAnimSpritePalette_078, 10079 },
+ { (u8 *) &gBattleAnimSpritePalette_080, 10080 },
+ { (u8 *) &gBattleAnimSpritePalette_081, 10081 },
+ { (u8 *) &gBattleAnimSpritePalette_082, 10082 },
+ { (u8 *) &gBattleAnimSpritePalette_083, 10083 },
+ { (u8 *) &gBattleAnimSpritePalette_084, 10084 },
+ { (u8 *) &gBattleAnimSpritePalette_085, 10085 },
+ { (u8 *) &gBattleAnimSpritePalette_086, 10086 },
+ { (u8 *) &gBattleAnimSpritePalette_087, 10087 },
+ { (u8 *) &gBattleAnimSpritePalette_088, 10088 },
+ { (u8 *) &gBattleAnimSpritePalette_089, 10089 },
+ { (u8 *) &gBattleAnimSpritePalette_090, 10090 },
+ { (u8 *) &gBattleAnimSpritePalette_091, 10091 },
+ { (u8 *) &gBattleAnimSpritePalette_092, 10092 },
+ { (u8 *) &gBattleAnimSpritePalette_093, 10093 },
+ { (u8 *) &gBattleAnimSpritePalette_094, 10094 },
+ { (u8 *) &gBattleAnimSpritePalette_095, 10095 },
+ { (u8 *) &gBattleAnimSpritePalette_096, 10096 },
+ { (u8 *) &gBattleAnimSpritePalette_097, 10097 },
+ { (u8 *) &gBattleAnimSpritePalette_094, 10098 },
+ { (u8 *) &gBattleAnimSpritePalette_099, 10099 },
+ { (u8 *) &gBattleAnimSpritePalette_100, 10100 },
+ { (u8 *) &gBattleAnimSpritePalette_101, 10101 },
+ { (u8 *) &gBattleAnimSpritePalette_101, 10102 },
+ { (u8 *) &gBattleAnimSpritePalette_103, 10103 },
+ { (u8 *) &gBattleAnimSpritePalette_104, 10104 },
+ { (u8 *) &gBattleAnimSpritePalette_105, 10105 },
+ { (u8 *) &gBattleAnimSpritePalette_105, 10106 },
+ { (u8 *) &gBattleAnimSpritePalette_107, 10107 },
+ { (u8 *) &gBattleAnimSpritePalette_107, 10108 },
+ { (u8 *) &gBattleAnimSpritePalette_109, 10109 },
+ { (u8 *) &gBattleAnimSpritePalette_109, 10110 },
+ { (u8 *) &gBattleAnimSpritePalette_111, 10111 },
+ { (u8 *) &gBattleAnimSpritePalette_112, 10112 },
+ { (u8 *) &gBattleAnimSpritePalette_113, 10113 },
+ { (u8 *) &gBattleAnimSpritePalette_114, 10114 },
+ { (u8 *) &gBattleAnimSpritePalette_115, 10115 },
+ { (u8 *) &gBattleAnimSpritePalette_116, 10116 },
+ { (u8 *) &gBattleAnimSpritePalette_117, 10117 },
+ { (u8 *) &gBattleAnimSpritePalette_118, 10118 },
+ { (u8 *) &gBattleAnimSpritePalette_119, 10119 },
+ { (u8 *) &gBattleAnimSpritePalette_120, 10120 },
+ { (u8 *) &gBattleAnimSpritePalette_121, 10121 },
+ { (u8 *) &gBattleAnimSpritePalette_122, 10122 },
+ { (u8 *) &gBattleAnimSpritePalette_122, 10123 },
+ { (u8 *) &gBattleAnimSpritePalette_124, 10124 },
+ { (u8 *) &gBattleAnimSpritePalette_125, 10125 },
+ { (u8 *) &gBattleAnimSpritePalette_126, 10126 },
+ { (u8 *) &gBattleAnimSpritePalette_127, 10127 },
+ { (u8 *) &gBattleAnimSpritePalette_128, 10128 },
+ { (u8 *) &gBattleAnimSpritePalette_128, 10129 },
+ { (u8 *) &gBattleAnimSpritePalette_130, 10130 },
+ { (u8 *) &gBattleAnimSpritePalette_130, 10131 },
+ { (u8 *) &gBattleAnimSpritePalette_132, 10132 },
+ { (u8 *) &gBattleAnimSpritePalette_133, 10133 },
+ { (u8 *) &gBattleAnimSpritePalette_133, 10134 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10135 },
+ { (u8 *) &gBattleAnimSpritePalette_136, 10136 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10137 },
+ { (u8 *) &gBattleAnimSpritePalette_135, 10138 },
+ { (u8 *) &gBattleAnimSpritePalette_139, 10139 },
+ { (u8 *) &gBattleAnimSpritePalette_140, 10140 },
+ { (u8 *) &gBattleAnimSpritePalette_141, 10141 },
+ { (u8 *) &gBattleAnimSpritePalette_141, 10142 },
+ { (u8 *) &gBattleAnimSpritePalette_143, 10143 },
+ { (u8 *) &gBattleAnimSpritePalette_144, 10144 },
+ { (u8 *) &gBattleAnimSpritePalette_139, 10145 },
+ { (u8 *) &gBattleAnimSpritePalette_115, 10146 },
+ { (u8 *) &gBattleAnimSpritePalette_147, 10147 },
+ { (u8 *) &gBattleAnimSpritePalette_148, 10148 },
+ { (u8 *) &gBattleAnimSpritePalette_148, 10149 },
+ { (u8 *) &gBattleAnimSpritePalette_150, 10150 },
+ { (u8 *) &gBattleAnimSpritePalette_150, 10151 },
+ { (u8 *) &gBattleAnimSpritePalette_152, 10152 },
+ { (u8 *) &gBattleAnimSpritePalette_153, 10153 },
+ { (u8 *) &gBattleAnimSpritePalette_154, 10154 },
+ { (u8 *) &gBattleAnimSpritePalette_155, 10155 },
+ { (u8 *) &gBattleAnimSpritePalette_156, 10156 },
+ { (u8 *) &gBattleAnimSpritePalette_157, 10157 },
+ { (u8 *) &gBattleAnimSpritePalette_158, 10158 },
+ { (u8 *) &gBattleAnimSpritePalette_159, 10159 },
+ { (u8 *) &gBattleAnimSpritePalette_160, 10160 },
+ { (u8 *) &gBattleAnimSpritePalette_161, 10161 },
+ { (u8 *) &gBattleAnimSpritePalette_162, 10162 },
+ { (u8 *) &gBattleAnimSpritePalette_163, 10163 },
+ { (u8 *) &gBattleAnimSpritePalette_164, 10164 },
+ { (u8 *) &gBattleAnimSpritePalette_165, 10165 },
+ { (u8 *) &gBattleAnimSpritePalette_166, 10166 },
+ { (u8 *) &gBattleAnimSpritePalette_167, 10167 },
+ { (u8 *) &gBattleAnimSpritePalette_168, 10168 },
+ { (u8 *) &gBattleAnimSpritePalette_169, 10169 },
+ { (u8 *) &gBattleAnimSpritePalette_170, 10170 },
+ { (u8 *) &gBattleAnimSpritePalette_171, 10171 },
+ { (u8 *) &gBattleAnimSpritePalette_172, 10172 },
+ { (u8 *) &gBattleAnimSpritePalette_001, 10173 },
+ { (u8 *) &gBattleAnimSpritePalette_174, 10174 },
+ { (u8 *) &gBattleAnimSpritePalette_175, 10175 },
+ { (u8 *) &gBattleAnimSpritePalette_176, 10176 },
+ { (u8 *) &gBattleAnimSpritePalette_177, 10177 },
+ { (u8 *) &gBattleAnimSpritePalette_178, 10178 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10179 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10180 },
+ { (u8 *) &gBattleAnimSpritePalette_179, 10181 },
+ { (u8 *) &gBattleAnimSpritePalette_182, 10182 },
+ { (u8 *) &gBattleAnimSpritePalette_183, 10183 },
+ { (u8 *) &gBattleAnimSpritePalette_184, 10184 },
+ { (u8 *) &gBattleAnimSpritePalette_185, 10185 },
+ { (u8 *) &gBattleAnimSpritePalette_186, 10186 },
+ { (u8 *) &gBattleAnimSpritePalette_187, 10187 },
+ { (u8 *) &gBattleAnimSpritePalette_188, 10188 },
+ { (u8 *) &gBattleAnimSpritePalette_189, 10189 },
+ { (u8 *) &gBattleAnimSpritePalette_190, 10190 },
+ { (u8 *) &gBattleAnimSpritePalette_191, 10191 },
+ { (u8 *) &gBattleAnimSpritePalette_192, 10192 },
+ { (u8 *) &gBattleAnimSpritePalette_193, 10193 },
+ { (u8 *) &gBattleAnimSpritePalette_194, 10194 },
+ { (u8 *) &gBattleAnimSpritePalette_195, 10195 },
+ { (u8 *) &gBattleAnimSpritePalette_196, 10196 },
+ { (u8 *) &gBattleAnimSpritePalette_197, 10197 },
+ { (u8 *) &gBattleAnimSpritePalette_198, 10198 },
+ { (u8 *) &gBattleAnimSpritePalette_199, 10199 },
+ { (u8 *) &gBattleAnimSpritePalette_200, 10200 },
+ { (u8 *) &gBattleAnimSpritePalette_201, 10201 },
+ { (u8 *) &gBattleAnimSpritePalette_202, 10202 },
+ { (u8 *) &gBattleAnimSpritePalette_203, 10203 },
+ { (u8 *) &gBattleAnimSpritePalette_204, 10204 },
+ { (u8 *) &gBattleAnimSpritePalette_205, 10205 },
+ { (u8 *) &gBattleAnimSpritePalette_206, 10206 },
+ { (u8 *) &gBattleAnimSpritePalette_207, 10207 },
+ { (u8 *) &gBattleAnimSpritePalette_167, 10208 },
+ { (u8 *) &gBattleAnimSpritePalette_209, 10209 },
+ { (u8 *) &gBattleAnimSpritePalette_210, 10210 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10211 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10212 },
+ { (u8 *) &gBattleAnimSpritePalette_211, 10213 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10214 },
+ { (u8 *) &gBattleAnimSpritePalette_215, 10215 },
+ { (u8 *) &gBattleAnimSpritePalette_216, 10216 },
+ { (u8 *) &gBattleAnimSpritePalette_217, 10217 },
+ { (u8 *) &gBattleAnimSpritePalette_218, 10218 },
+ { (u8 *) &gBattleAnimSpritePalette_219, 10219 },
+ { (u8 *) &gBattleAnimSpritePalette_220, 10220 },
+ { (u8 *) &gBattleAnimSpritePalette_221, 10221 },
+ { (u8 *) &gBattleAnimSpritePalette_222, 10222 },
+ { (u8 *) &gBattleAnimSpritePalette_223, 10223 },
+ { (u8 *) &gBattleAnimSpritePalette_224, 10224 },
+ { (u8 *) &gBattleAnimSpritePalette_225, 10225 },
+ { (u8 *) &gBattleAnimSpritePalette_226, 10226 },
+ { (u8 *) &gBattleAnimSpritePalette_226, 10227 },
+ { (u8 *) &gBattleAnimSpritePalette_228, 10228 },
+ { (u8 *) &gBattleAnimSpritePalette_229, 10229 },
+ { (u8 *) &gBattleAnimSpritePalette_230, 10230 },
+ { (u8 *) &gBattleAnimSpritePalette_231, 10231 },
+ { (u8 *) &gBattleAnimSpritePalette_231, 10232 },
+ { (u8 *) &gBattleAnimSpritePalette_233, 10233 },
+ { (u8 *) &gBattleAnimSpritePalette_234, 10234 },
+ { (u8 *) &gBattleAnimSpritePalette_235, 10235 },
+ { (u8 *) &gBattleAnimSpritePalette_236, 10236 },
+ { (u8 *) &gBattleAnimSpritePalette_237, 10237 },
+ { (u8 *) &gBattleAnimSpritePalette_238, 10238 },
+ { (u8 *) &gBattleAnimSpritePalette_239, 10239 },
+ { (u8 *) &gBattleAnimSpritePalette_240, 10240 },
+ { (u8 *) &gBattleAnimSpritePalette_241, 10241 },
+ { (u8 *) &gBattleAnimSpritePalette_242, 10242 },
+ { (u8 *) &gBattleAnimSpritePalette_243, 10243 },
+ { (u8 *) &gBattleAnimSpritePalette_244, 10244 },
+ { (u8 *) &gBattleAnimSpritePalette_245, 10245 },
+ { (u8 *) &gBattleAnimSpritePalette_245, 10246 },
+ { (u8 *) &gBattleAnimSpritePalette_064, 10247 },
+ { (u8 *) &gBattleAnimSpritePalette_248, 10248 },
+ { (u8 *) &gBattleAnimSpritePalette_249, 10249 },
+ { (u8 *) &gBattleAnimSpritePalette_249, 10250 },
+ { (u8 *) &gBattleAnimSpritePalette_251, 10251 },
+ { (u8 *) &gBattleAnimSpritePalette_252, 10252 },
+ { (u8 *) &gBattleAnimSpritePalette_253, 10253 },
+ { (u8 *) &gBattleAnimSpritePalette_254, 10254 },
+ { (u8 *) &gBattleAnimSpritePalette_255, 10255 },
+ { (u8 *) &gBattleAnimSpritePalette_256, 10256 },
+ { (u8 *) &gBattleAnimSpritePalette_257, 10257 },
+ { (u8 *) &gBattleAnimSpritePalette_258, 10258 },
+ { (u8 *) &gBattleAnimSpritePalette_259, 10259 },
+ { (u8 *) &gBattleAnimSpritePalette_260, 10260 },
+ { (u8 *) &gBattleAnimSpritePalette_261, 10261 },
+ { (u8 *) &gBattleAnimSpritePalette_262, 10262 },
+ { (u8 *) &gBattleAnimSpritePalette_263, 10263 },
+ { (u8 *) &gBattleAnimSpritePalette_264, 10264 },
+ { (u8 *) &gBattleAnimSpritePalette_265, 10265 },
+ { (u8 *) &gBattleAnimSpritePalette_266, 10266 },
+ { (u8 *) &gBattleAnimSpritePalette_267, 10267 },
+ { (u8 *) &gBattleAnimSpritePalette_268, 10268 },
+ { (u8 *) &gBattleAnimSpritePalette_269, 10269 },
+ { (u8 *) &gBattleAnimSpritePalette_270, 10270 },
+ { (u8 *) &gBattleAnimSpritePalette_271, 10271 },
+ { (u8 *) &gBattleAnimSpritePalette_272, 10272 },
+ { (u8 *) &gBattleAnimSpritePalette_272, 10273 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10274 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10275 },
+ { (u8 *) &gBattleAnimSpritePalette_274, 10276 },
+ { (u8 *) &gBattleAnimSpritePalette_277, 10277 },
+ { (u8 *) &gBattleAnimSpritePalette_278, 10278 },
+ { (u8 *) &gBattleAnimSpritePalette_279, 10279 },
+ { (u8 *) &gBattleAnimSpritePalette_280, 10280 },
+ { (u8 *) &gBattleAnimSpritePalette_281, 10281 },
+ { (u8 *) &gBattleAnimSpritePalette_282, 10282 },
+ { (u8 *) &gBattleAnimSpritePalette_283, 10283 },
+ { (u8 *) &gBattleAnimSpritePalette_284, 10284 },
+ { (u8 *) &gBattleAnimSpritePalette_285, 10285 },
+ { (u8 *) &gBattleAnimSpritePalette_286, 10286 },
+ { (u8 *) &gBattleAnimSpritePalette_287, 10287 },
+ { (u8 *) &gBattleAnimSpritePalette_288, 10288 },
+};
+
+const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
+{
+ &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00,
+ &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00,
+ &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02,
+ &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10,
+ &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13,
+ &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14,
+ &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15,
+ &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16,
+ &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07,
+ &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08,
+ &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20,
+ &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09,
+ &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05,
+ &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06,
+};
+
extern u16 gBattlePartyID[4];
extern u8 gObjectBankIDs[];
extern u8 gBankAttacker;
@@ -63,9 +1329,6 @@ extern struct MusicPlayerInfo gMPlay_SE2;
extern const u16 gUnknown_081C7160[];
extern const u8 *const gBattleAnims_Moves[];
-extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
-extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
-extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
static void RunAnimScriptCommand(void);
static void ScriptCmd_loadspritegfx(void);
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index c35434df0..f109333e3 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -20,17 +20,77 @@ static void sub_80A808C(u8 taskId);
static void sub_80A81D8(u8 taskId);
static void sub_80A8374(u8 taskId);
static void sub_80A8488(u8 taskId);
+static void sub_80A8530(struct Sprite *sprite);
static void sub_80A85A4(struct Sprite *sprite);
-void sub_80A8614(struct Sprite* sprite);
+static void sub_80A85C8(struct Sprite *sprite);
+static void sub_80A8614(struct Sprite* sprite);
+static void sub_80A8638(struct Sprite *sprite);
static void sub_80A86F4(struct Sprite *sprite);
+static void sub_80A8764(struct Sprite *sprite);
+static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
static void sub_80A89B4(u8 taskId);
static void sub_80A8A18(u8 taskId);
static void sub_80A8C0C(u8 taskId);
static void sub_80A8D8C(u8 taskId);
-void sub_80A8FD8(u8 taskId);
+static void sub_80A8FD8(u8 taskId);
static void sub_80A913C(u8 taskId);
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8530,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A85C8,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8638,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8764,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8818,
+};
+
void sub_80A7E7C(u8 taskId)
{
u8 sprite;
@@ -335,7 +395,7 @@ void sub_80A8500(u8 taskId)
sub_80A8408(taskId);
}
-void sub_80A8530(struct Sprite *sprite)
+static void sub_80A8530(struct Sprite *sprite)
{
sprite->invisible = TRUE;
if (GetBankSide(gAnimBankAttacker))
@@ -362,7 +422,7 @@ static void sub_80A85A4(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-void sub_80A85C8(struct Sprite *sprite)
+static void sub_80A85C8(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
@@ -376,7 +436,7 @@ void sub_80A85C8(struct Sprite *sprite)
sprite->callback = sub_8078458;
}
-void sub_80A8614(struct Sprite *sprite)
+static void sub_80A8614(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
@@ -384,7 +444,7 @@ void sub_80A8614(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-void sub_80A8638(struct Sprite *sprite)
+static void sub_80A8638(struct Sprite *sprite)
{
int something;
int spriteId;
@@ -451,7 +511,7 @@ static void sub_80A86F4(struct Sprite *sprite)
}
}
-void sub_80A8764(struct Sprite *sprite)
+static void sub_80A8764(struct Sprite *sprite)
{
u8 v1;
u8 spriteId;
@@ -486,7 +546,7 @@ void sub_80A8764(struct Sprite *sprite)
sprite->callback = sub_80784A8;
}
-void sub_80A8818(struct Sprite *sprite)
+static void sub_80A8818(struct Sprite *sprite)
{
u8 spriteId;
u8 v1;
@@ -833,7 +893,7 @@ void sub_80A8EFC(u8 taskId)
TASK.func = sub_80A8FD8;
}
-void sub_80A8FD8(u8 taskId)
+static void sub_80A8FD8(u8 taskId)
{
TASK.data[3] += TASK.data[4];
obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c
index 5c91b3657..217ab28a3 100644
--- a/src/battle/calculate_base_damage.c
+++ b/src/battle/calculate_base_damage.c
@@ -1,16 +1,16 @@
#include "global.h"
#include "constants/abilities.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
#include "battle.h"
#include "berry.h"
#include "data2.h"
#include "event_data.h"
-#include "constants/hold_effects.h"
#include "item.h"
-#include "constants/items.h"
#include "pokemon.h"
-#include "constants/species.h"
-#include "constants/moves.h"
-#include "constants/battle_move_effects.h"
#include "ewram.h"
extern u16 gBattleTypeFlags;
@@ -22,8 +22,54 @@ extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
extern u16 gTrainerBattleOpponent;
-extern const u8 gHoldEffectToType[][2];
-extern const u8 gStatStageRatios[][2];
+// Masks for getting PP Up count, also PP Max values
+const u8 gUnknown_08208238[] = {0x03, 0x0c, 0x30, 0xc0};
+
+// Masks for setting PP Up count
+const u8 gUnknown_0820823C[] = {0xFC, 0xF3, 0xCF, 0x3F};
+
+// Values added to PP Up count
+const u8 gUnknown_08208240[] = {0x01, 0x04, 0x10, 0x40};
+
+const u8 gStatStageRatios[][2] =
+{
+ {10, 40}, // -6
+ {10, 35}, // -5
+ {10, 30}, // -4
+ {10, 25}, // -3
+ {10, 20}, // -2
+ {10, 15}, // -1
+ {10, 10}, // 0
+ {15, 10}, // 1
+ {20, 10}, // 2
+ {25, 10}, // 3
+ {30, 10}, // 4
+ {35, 10}, // 5
+ {40, 10} // 6
+};
+
+const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ");
+
+const u8 gHoldEffectToType[][2] =
+{
+ {HOLD_EFFECT_BUG_POWER, TYPE_BUG},
+ {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL},
+ {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND},
+ {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK},
+ {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS},
+ {HOLD_EFFECT_DARK_POWER, TYPE_DARK},
+ {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING},
+ {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC},
+ {HOLD_EFFECT_WATER_POWER, TYPE_WATER},
+ {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING},
+ {HOLD_EFFECT_POISON_POWER, TYPE_POISON},
+ {HOLD_EFFECT_ICE_POWER, TYPE_ICE},
+ {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST},
+ {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC},
+ {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE},
+ {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON},
+ {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL}
+};
u8 GetBankSide(u8 bank);
diff --git a/src/contest.c b/src/contest.c
index 875fe4502..df4bb361d 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -31,13 +31,12 @@
#include "tv.h"
#include "scanline_effect.h"
#include "util.h"
+#include "contest_ai.h"
extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
extern void sub_80C8C80(u8);
-extern void sub_81288F4();
-extern u8 sub_8128944(void);
extern struct MusicPlayerInfo gMPlay_SE1;
extern u16 gSpecialVar_ContestCategory;
@@ -391,7 +390,7 @@ void ClearContestVars(void)
}
memset(&shared192D0, 0, sizeof(shared192D0));
- memset(shared192E4, 0, 0x44 * sizeof(*shared192E4));
+ memset(eContestAI, 0, sizeof(struct ContestAIInfo));
memset(&shared19328, 0, sizeof(shared19328));
memset(shared19338, 0, 4 * sizeof(*shared19338));
if (!(gIsLinkContest & 1))
@@ -2629,8 +2628,8 @@ u16 GetChosenMove(u8 a)
{
u8 moveChoice;
- sub_81288F4(a);
- moveChoice = sub_8128944();
+ ContestAI_ResetAI(a);
+ moveChoice = ContestAI_GetActionToUse();
return gContestMons[a].moves[moveChoice];
}
}
diff --git a/src/contest_ai.c b/src/contest_ai.c
new file mode 100755
index 000000000..66b387270
--- /dev/null
+++ b/src/contest_ai.c
@@ -0,0 +1,1763 @@
+#include "global.h"
+#include "contest.h"
+#include "random.h"
+#include "contest_ai.h"
+#include "ewram.h"
+
+extern u8 AreMovesContestCombo(u16, u16);
+extern bool8 sub_80B214C(u8);
+extern bool8 Contest_IsMonsTurnDisabled(u8);
+
+extern s16 gUnknown_02038670[];
+extern u16 gSpecialVar_ContestCategory;
+
+extern u8 *gAIScriptPtr;
+extern u8 *gContestAIs[];
+
+static void ContestAICmd_unk_00(void);
+static void ContestAICmd_get_turn(void);
+static void ContestAICmd_unk_02(void);
+static void ContestAICmd_unk_03(void);
+static void ContestAICmd_unk_04(void);
+static void ContestAICmd_unk_05(void);
+static void ContestAICmd_get_excitement(void);
+static void ContestAICmd_unk_07(void);
+static void ContestAICmd_unk_08(void);
+static void ContestAICmd_unk_09(void);
+static void ContestAICmd_unk_0A(void);
+static void ContestAICmd_get_user_order(void);
+static void ContestAICmd_unk_0C(void);
+static void ContestAICmd_unk_0D(void);
+static void ContestAICmd_unk_0E(void);
+static void ContestAICmd_unk_0F(void);
+static void ContestAICmd_get_user_condition_maybe(void);
+static void ContestAICmd_unk_11(void);
+static void ContestAICmd_unk_12(void);
+static void ContestAICmd_unk_13(void);
+static void ContestAICmd_unk_14(void);
+static void ContestAICmd_unk_15(void);
+static void ContestAICmd_unk_16(void);
+static void ContestAICmd_unk_17(void);
+static void ContestAICmd_unk_18(void);
+static void ContestAICmd_unk_19(void);
+static void ContestAICmd_unk_1A(void);
+static void ContestAICmd_unk_1B(void);
+static void ContestAICmd_unk_1C(void);
+static void ContestAICmd_unk_1D(void);
+static void ContestAICmd_unk_1E(void);
+static void ContestAICmd_get_contest_type(void);
+static void ContestAICmd_unk_20(void);
+static void ContestAICmd_unk_21(void);
+static void ContestAICmd_get_move_excitement(void);
+static void ContestAICmd_unk_23(void);
+static void ContestAICmd_unk_24(void);
+static void ContestAICmd_unk_25(void);
+static void ContestAICmd_unk_26(void);
+static void ContestAICmd_get_move_effect(void);
+static void ContestAICmd_unk_28(void);
+static void ContestAICmd_unk_29(void);
+static void ContestAICmd_get_move_effect_type(void);
+static void ContestAICmd_unk_2B(void);
+static void ContestAICmd_unk_2C(void);
+static void ContestAICmd_check_move_has_highest_appeal(void);
+static void ContestAICmd_unk_2E(void);
+static void ContestAICmd_unk_2F(void);
+static void ContestAICmd_unk_30(void);
+static void ContestAICmd_unk_31(void);
+static void ContestAICmd_unk_32(void);
+static void ContestAICmd_unk_33(void);
+static void ContestAICmd_unk_34(void);
+static void ContestAICmd_unk_35(void);
+static void ContestAICmd_unk_36(void);
+static void ContestAICmd_unk_37(void);
+static void ContestAICmd_unk_38(void);
+static void ContestAICmd_unk_39(void);
+static void ContestAICmd_unk_3A(void);
+static void ContestAICmd_get_move_used_count(void);
+static void ContestAICmd_unk_3C(void);
+static void ContestAICmd_unk_3D(void);
+static void ContestAICmd_unk_3E(void);
+static void ContestAICmd_unk_3F(void);
+static void ContestAICmd_check_combo_starter(void);
+static void ContestAICmd_unk_41(void);
+static void ContestAICmd_unk_42(void);
+static void ContestAICmd_check_combo_finisher(void);
+static void ContestAICmd_unk_44(void);
+static void ContestAICmd_unk_45(void);
+static void ContestAICmd_check_would_finish_combo(void);
+static void ContestAICmd_unk_47(void);
+static void ContestAICmd_unk_48(void);
+static void ContestAICmd_get_condition(void);
+static void ContestAICmd_unk_4A(void);
+static void ContestAICmd_unk_4B(void);
+static void ContestAICmd_unk_4C(void);
+static void ContestAICmd_unk_4D(void);
+static void ContestAICmd_get_used_combo_starter(void);
+static void ContestAICmd_unk_4F(void);
+static void ContestAICmd_unk_50(void);
+static void ContestAICmd_unk_51(void);
+static void ContestAICmd_unk_52(void);
+static void ContestAICmd_check_can_participate(void);
+static void ContestAICmd_unk_54(void);
+static void ContestAICmd_unk_55(void);
+static void ContestAICmd_get_val_812A188(void);
+static void ContestAICmd_unk_57(void);
+static void ContestAICmd_unk_58(void);
+static void ContestAICmd_unk_59(void);
+static void ContestAICmd_unk_5A(void);
+static void ContestAICmd_unk_5B(void);
+static void ContestAICmd_unk_5C(void);
+static void ContestAICmd_unk_5D(void);
+static void ContestAICmd_unk_5E(void);
+static void ContestAICmd_unk_5F(void);
+static void ContestAICmd_unk_60(void);
+static void ContestAICmd_unk_61(void);
+static void ContestAICmd_unk_62(void);
+static void ContestAICmd_unk_63(void);
+static void ContestAICmd_unk_64(void);
+static void ContestAICmd_unk_65(void);
+static void ContestAICmd_unk_66(void);
+static void ContestAICmd_unk_67(void);
+static void ContestAICmd_unk_68(void);
+static void ContestAICmd_unk_69(void);
+static void ContestAICmd_unk_6A(void);
+static void ContestAICmd_unk_6B(void);
+static void ContestAICmd_unk_6C(void);
+static void ContestAICmd_unk_6D(void);
+static void ContestAICmd_unk_6E(void);
+static void ContestAICmd_unk_6F(void);
+static void ContestAICmd_unk_70(void);
+static void ContestAICmd_unk_71(void);
+static void ContestAICmd_unk_72(void);
+static void ContestAICmd_unk_73(void);
+static void ContestAICmd_unk_74(void);
+static void ContestAICmd_unk_75(void);
+static void ContestAICmd_unk_76(void);
+static void ContestAICmd_unk_77(void);
+static void ContestAICmd_unk_78(void);
+static void ContestAICmd_unk_79(void);
+static void ContestAICmd_unk_7A(void);
+static void ContestAICmd_unk_7B(void);
+static void ContestAICmd_unk_7C(void);
+static void ContestAICmd_unk_7D(void);
+static void ContestAICmd_unk_7E(void);
+static void ContestAICmd_unk_7F(void);
+static void ContestAICmd_unk_80(void);
+static void ContestAICmd_unk_81(void);
+static void ContestAICmd_check_for_exciting_move(void);
+static void ContestAICmd_unk_83(void);
+static void ContestAICmd_unk_84(void);
+static void ContestAICmd_unk_85(void);
+static void ContestAICmd_unk_86(void);
+static void ContestAICmd_unk_87(void);
+
+typedef void (* ContestAICmdFunc)(void);
+
+static const ContestAICmdFunc sContestAICmdTable[] =
+{
+ ContestAICmd_unk_00, // 0x00
+ ContestAICmd_get_turn, // 0x01
+ ContestAICmd_unk_02, // 0x02
+ ContestAICmd_unk_03, // 0x03
+ ContestAICmd_unk_04, // 0x04
+ ContestAICmd_unk_05, // 0x05
+ ContestAICmd_get_excitement, // 0x06
+ ContestAICmd_unk_07, // 0x07
+ ContestAICmd_unk_08, // 0x08
+ ContestAICmd_unk_09, // 0x09
+ ContestAICmd_unk_0A, // 0x0A
+ ContestAICmd_get_user_order, // 0x0B
+ ContestAICmd_unk_0C, // 0x0C
+ ContestAICmd_unk_0D, // 0x0D
+ ContestAICmd_unk_0E, // 0x0E
+ ContestAICmd_unk_0F, // 0x0F
+ ContestAICmd_get_user_condition_maybe, // 0x10
+ ContestAICmd_unk_11, // 0x11
+ ContestAICmd_unk_12, // 0x12
+ ContestAICmd_unk_13, // 0x13
+ ContestAICmd_unk_14, // 0x14
+ ContestAICmd_unk_15, // 0x15
+ ContestAICmd_unk_16, // 0x16
+ ContestAICmd_unk_17, // 0x17
+ ContestAICmd_unk_18, // 0x18
+ ContestAICmd_unk_19, // 0x19
+ ContestAICmd_unk_1A, // 0x1A
+ ContestAICmd_unk_1B, // 0x1B
+ ContestAICmd_unk_1C, // 0x1C
+ ContestAICmd_unk_1D, // 0x1D
+ ContestAICmd_unk_1E, // 0x1E
+ ContestAICmd_get_contest_type, // 0x1F
+ ContestAICmd_unk_20, // 0x20
+ ContestAICmd_unk_21, // 0x21
+ ContestAICmd_get_move_excitement, // 0x22
+ ContestAICmd_unk_23, // 0x23
+ ContestAICmd_unk_24, // 0x24
+ ContestAICmd_unk_25, // 0x25
+ ContestAICmd_unk_26, // 0x26
+ ContestAICmd_get_move_effect, // 0x27
+ ContestAICmd_unk_28, // 0x28
+ ContestAICmd_unk_29, // 0x29
+ ContestAICmd_get_move_effect_type, // 0x2A
+ ContestAICmd_unk_2B, // 0x2B
+ ContestAICmd_unk_2C, // 0x2C
+ ContestAICmd_check_move_has_highest_appeal, // 0x2D
+ ContestAICmd_unk_2E, // 0x2E
+ ContestAICmd_unk_2F, // 0x2F
+ ContestAICmd_unk_30, // 0x30
+ ContestAICmd_unk_31, // 0x31
+ ContestAICmd_unk_32, // 0x32
+ ContestAICmd_unk_33, // 0x33
+ ContestAICmd_unk_34, // 0x34
+ ContestAICmd_unk_35, // 0x35
+ ContestAICmd_unk_36, // 0x36
+ ContestAICmd_unk_37, // 0x37
+ ContestAICmd_unk_38, // 0x38
+ ContestAICmd_unk_39, // 0x39
+ ContestAICmd_unk_3A, // 0x3A
+ ContestAICmd_get_move_used_count, // 0x3B
+ ContestAICmd_unk_3C, // 0x3C
+ ContestAICmd_unk_3D, // 0x3D
+ ContestAICmd_unk_3E, // 0x3E
+ ContestAICmd_unk_3F, // 0x3F
+ ContestAICmd_check_combo_starter, // 0x40
+ ContestAICmd_unk_41, // 0x41
+ ContestAICmd_unk_42, // 0x42
+ ContestAICmd_check_combo_finisher, // 0x43
+ ContestAICmd_unk_44, // 0x44
+ ContestAICmd_unk_45, // 0x45
+ ContestAICmd_check_would_finish_combo, // 0x46
+ ContestAICmd_unk_47, // 0x47
+ ContestAICmd_unk_48, // 0x48
+ ContestAICmd_get_condition, // 0x49
+ ContestAICmd_unk_4A, // 0x4A
+ ContestAICmd_unk_4B, // 0x4B
+ ContestAICmd_unk_4C, // 0x4C
+ ContestAICmd_unk_4D, // 0x4D
+ ContestAICmd_get_used_combo_starter, // 0x4E
+ ContestAICmd_unk_4F, // 0x4F
+ ContestAICmd_unk_50, // 0x50
+ ContestAICmd_unk_51, // 0x51
+ ContestAICmd_unk_52, // 0x52
+ ContestAICmd_check_can_participate, // 0x53
+ ContestAICmd_unk_54, // 0x54
+ ContestAICmd_unk_55, // 0x55
+ ContestAICmd_get_val_812A188, // 0x56
+ ContestAICmd_unk_57, // 0x57
+ ContestAICmd_unk_58, // 0x58
+ ContestAICmd_unk_59, // 0x59
+ ContestAICmd_unk_5A, // 0x5A
+ ContestAICmd_unk_5B, // 0x5B
+ ContestAICmd_unk_5C, // 0x5C
+ ContestAICmd_unk_5D, // 0x5D
+ ContestAICmd_unk_5E, // 0x5E
+ ContestAICmd_unk_5F, // 0x5F
+ ContestAICmd_unk_60, // 0x60
+ ContestAICmd_unk_61, // 0x61
+ ContestAICmd_unk_62, // 0x62
+ ContestAICmd_unk_63, // 0x63
+ ContestAICmd_unk_64, // 0x64
+ ContestAICmd_unk_65, // 0x65
+ ContestAICmd_unk_66, // 0x66
+ ContestAICmd_unk_67, // 0x67
+ ContestAICmd_unk_68, // 0x68
+ ContestAICmd_unk_69, // 0x69
+ ContestAICmd_unk_6A, // 0x6A
+ ContestAICmd_unk_6B, // 0x6B
+ ContestAICmd_unk_6C, // 0x6C
+ ContestAICmd_unk_6D, // 0x6D
+ ContestAICmd_unk_6E, // 0x6E
+ ContestAICmd_unk_6F, // 0x6F
+ ContestAICmd_unk_70, // 0x70
+ ContestAICmd_unk_71, // 0x71
+ ContestAICmd_unk_72, // 0x72
+ ContestAICmd_unk_73, // 0x73
+ ContestAICmd_unk_74, // 0x74
+ ContestAICmd_unk_75, // 0x75
+ ContestAICmd_unk_76, // 0x76
+ ContestAICmd_unk_77, // 0x77
+ ContestAICmd_unk_78, // 0x78
+ ContestAICmd_unk_79, // 0x79
+ ContestAICmd_unk_7A, // 0x7A
+ ContestAICmd_unk_7B, // 0x7B
+ ContestAICmd_unk_7C, // 0x7C
+ ContestAICmd_unk_7D, // 0x7D
+ ContestAICmd_unk_7E, // 0x7E
+ ContestAICmd_unk_7F, // 0x7F
+ ContestAICmd_unk_80, // 0x80
+ ContestAICmd_unk_81, // 0x81
+ ContestAICmd_check_for_exciting_move, // 0x82
+ ContestAICmd_unk_83, // 0x83
+ ContestAICmd_unk_84, // 0x84
+ ContestAICmd_unk_85, // 0x85
+ ContestAICmd_unk_86, // 0x86
+ ContestAICmd_unk_87, // 0x87
+};
+
+static void ContestAI_DoAIProcessing(void);
+static bool8 sub_8128A7C(u8);
+static void sub_812ACA4(u8 *);
+static u8 sub_812ACC8(void);
+
+void ContestAI_ResetAI(u8 var)
+{
+ int i;
+ memset(eContestAI, 0, sizeof(struct ContestAIInfo));
+
+ for(i = 0; i < 4; i++)
+ eContestAI->unk5[i] = 100;
+
+ eContestAI->unk41 = var;
+ eContestAI->unk40 = 0;
+ eContestAI->flags = gContestMons[eContestAI->unk41].flags;
+}
+
+u8 ContestAI_GetActionToUse(void)
+{
+ while(eContestAI->flags != 0)
+ {
+ if(eContestAI->flags & 1)
+ {
+ eContestAI->aiState = 0;
+ ContestAI_DoAIProcessing();
+ }
+ eContestAI->flags >>= 1;
+ eContestAI->unk10++;
+ eContestAI->unk4 = 0;
+ }
+
+ while (1)
+ {
+ u8 rval = Random() & 3;
+ u8 r2 = eContestAI->unk5[rval];
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (r2 < eContestAI->unk5[i])
+ break;
+ }
+ if (i == 4)
+ return rval;
+ }
+}
+
+static void ContestAI_DoAIProcessing(void)
+{
+ while(eContestAI->aiState != CONTESTAI_FINISHED)
+ {
+ switch(eContestAI->aiState)
+ {
+ case CONTESTAI_DO_NOT_PROCESS:
+ break;
+ case CONTESTAI_SETTING_UP:
+ gAIScriptPtr = gContestAIs[eContestAI->unk10];
+
+ if(gContestMons[eContestAI->unk41].moves[eContestAI->unk4] == 0)
+ eContestAI->unk2 = 0; // don't process a move that doesn't exist.
+ else
+ eContestAI->unk2 = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ eContestAI->aiState++;
+ break;
+ case CONTESTAI_PROCESSING:
+ if(eContestAI->unk2 != 0)
+ sContestAICmdTable[*gAIScriptPtr](); // run the command.
+ else
+ {
+ eContestAI->unk5[eContestAI->unk4] = 0; // don't consider a move that doesn't exist.
+ eContestAI->aiAction |= 1;
+ }
+ if(eContestAI->aiAction & 1)
+ {
+ eContestAI->unk4++;
+ if(eContestAI->unk4 < 4)
+ eContestAI->aiState = 0;
+ else
+ eContestAI->aiState++;
+ eContestAI->aiAction &= 0xFE; // TODO: Define action flags
+ }
+ break;
+ }
+ }
+}
+
+static u8 sub_8128A7C(u8 var)
+{
+ int i;
+
+ for(i = 0; i < 4; i++)
+ if(shared192D0.unk0[i] == var)
+ break;
+
+ return i;
+}
+
+static void ContestAICmd_unk_00(void)
+{
+ s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1];
+
+ if (score > 255)
+ score = 255;
+ else if (score < 0)
+ score = 0;
+
+ eContestAI->unk5[eContestAI->unk4] = score;
+
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_get_turn(void)
+{
+ eContestAI->scriptResult = sContest.turnNumber;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_02(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_03(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_04(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_05(void)
+{
+ ContestAICmd_get_turn();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_excitement(void)
+{
+ eContestAI->scriptResult = sContest.applauseLevel;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_07(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_08(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_09(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0A(void)
+{
+ ContestAICmd_get_excitement();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_user_order(void)
+{
+ eContestAI->scriptResult = shared192D0.unk0[eContestAI->unk41];
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_0C(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0D(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0E(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_0F(void)
+{
+ ContestAICmd_get_user_order();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_user_condition_maybe(void)
+{
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unkD / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_11(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_12(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_13(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_14(void)
+{
+ ContestAICmd_get_user_condition_maybe();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_15(void)
+{
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_16(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_17(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_18(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_19(void)
+{
+ ContestAICmd_unk_15();
+
+ if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1A(void)
+{
+ eContestAI->scriptResult = gUnknown_02038670[eContestAI->unk41];
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_1B(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1C(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1D(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_1E(void)
+{
+ ContestAICmd_unk_1A();
+
+ if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_get_contest_type(void)
+{
+ eContestAI->scriptResult = gSpecialVar_ContestCategory;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_20(void)
+{
+ ContestAICmd_get_contest_type();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_21(void)
+{
+ ContestAICmd_get_contest_type();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_excitement(void)
+{
+ eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]);
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_23(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult < (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_24(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult > (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_25(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult == (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_26(void)
+{
+ ContestAICmd_get_move_excitement();
+
+ if(eContestAI->scriptResult != (s8)gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_effect(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestMoves[move].effect;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_28(void)
+{
+ ContestAICmd_get_move_effect();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_29(void)
+{
+ ContestAICmd_get_move_effect();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_effect_type(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_2B(void)
+{
+ ContestAICmd_get_move_effect_type();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_2C(void)
+{
+ ContestAICmd_get_move_effect_type();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_move_has_highest_appeal(void)
+{
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ u8 appeal = gContestEffects[gContestMoves[move].effect].appeal;
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 newMove = gContestMons[eContestAI->unk41].moves[i];
+ if(newMove != 0 && appeal < gContestEffects[gContestMoves[newMove].effect].appeal)
+ break;
+ }
+
+ if(i == 4)
+ eContestAI->scriptResult = TRUE;
+ else
+ eContestAI->scriptResult = FALSE;
+
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_2E(void)
+{
+ ContestAICmd_check_move_has_highest_appeal();
+
+ if(eContestAI->scriptResult != FALSE)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_2F(void)
+{
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+ u8 jam = gContestEffects[gContestMoves[move].effect].jam;
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 newMove = gContestMons[eContestAI->unk41].moves[i];
+ if(newMove != 0 && jam < gContestEffects[gContestMoves[newMove].effect].jam)
+ break;
+ }
+
+ if(i == 4)
+ eContestAI->scriptResult = TRUE;
+ else
+ eContestAI->scriptResult = FALSE;
+
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_30(void)
+{
+ ContestAICmd_unk_2F();
+
+ if(eContestAI->scriptResult != FALSE)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_31(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_32(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_33(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_34(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_35(void)
+{
+ ContestAICmd_unk_31();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_36(void)
+{
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_37(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_38(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_39(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3A(void)
+{
+ ContestAICmd_unk_36();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_move_used_count(void)
+{
+ s16 result;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ if(move != sContestantStatus[eContestAI->unk41].prevMove)
+ result = 0; // move is unique and not reused.
+ else
+ result = sContestantStatus[eContestAI->unk41].moveRepeatCount + 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_3C(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3D(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3E(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_3F(void)
+{
+ ContestAICmd_get_move_used_count();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_combo_starter(void)
+{
+ u8 result = 0;
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ for(i = 0; i < 4; i++)
+ {
+ if (gContestMons[eContestAI->unk41].moves[i])
+ {
+ result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]);
+ if (result)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ if (result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_41(void)
+{
+ ContestAICmd_check_combo_starter();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_42(void)
+{
+ ContestAICmd_check_combo_starter();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_check_combo_finisher(void)
+{
+ u8 result = 0;
+ int i;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ for(i = 0; i < 4; i++)
+ {
+ if (gContestMons[eContestAI->unk41].moves[i])
+ {
+ result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move);
+ if (result)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ if (result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_44(void)
+{
+ ContestAICmd_check_combo_finisher();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_45(void)
+{
+ ContestAICmd_check_combo_finisher();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_check_would_finish_combo(void)
+{
+ u8 result = 0;
+ u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4];
+
+ if(sContestantStatus[eContestAI->unk41].prevMove)
+ result = AreMovesContestCombo(sContestantStatus[eContestAI->unk41].prevMove, move);
+
+ if(result)
+ result = 1;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_47(void)
+{
+ ContestAICmd_check_would_finish_combo();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_48(void)
+{
+ ContestAICmd_check_would_finish_combo();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_get_condition(void)
+{
+ int var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unkD / 10;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_4A(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4B(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4C(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_4D(void)
+{
+ ContestAICmd_get_condition();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_get_used_combo_starter(void)
+{
+ u16 result = 0;
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ if(sub_80B214C(var))
+ result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_4F(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_50(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_51(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_52(void)
+{
+ ContestAICmd_get_used_combo_starter();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_check_can_participate(void)
+{
+ if(Contest_IsMonsTurnDisabled(sub_8128A7C(gAIScriptPtr[1])))
+ eContestAI->scriptResult = FALSE;
+ else
+ eContestAI->scriptResult = TRUE;
+
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_54(void)
+{
+ ContestAICmd_check_can_participate();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_55(void)
+{
+ ContestAICmd_check_can_participate();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_get_val_812A188(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unk15_3;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_57(void)
+{
+ ContestAICmd_get_val_812A188();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_58(void)
+{
+ ContestAICmd_get_val_812A188();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_59(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_5A(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult < 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5B(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult > 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5C(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5D(void)
+{
+ ContestAICmd_unk_59();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_5E(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+
+ eContestAI->scriptResult = gUnknown_02038670[var] - gUnknown_02038670[eContestAI->unk41];
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_5F(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult < 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_60(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult > 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_61(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_62(void)
+{
+ ContestAICmd_unk_5E();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_63(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ u16 move = sContest.unk19220[var2][var];
+
+ eContestAI->scriptResult = gContestMoves[move].effect;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_64(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_65(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_66(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_67(void)
+{
+ ContestAICmd_unk_63();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_68(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ s8 result = sContest.unk19248[var2][var];
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_69(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult < gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6A(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult > gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6B(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6C(void)
+{
+ ContestAICmd_unk_68();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6D(void)
+{
+ u8 var = sub_8128A7C(gAIScriptPtr[1]);
+ u8 var2 = gAIScriptPtr[2];
+ u16 move = sContest.unk19220[var2][var];
+
+ eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_6E(void)
+{
+ ContestAICmd_unk_6D();
+
+ if(eContestAI->scriptResult == gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_6F(void)
+{
+ ContestAICmd_unk_6D();
+
+ if(eContestAI->scriptResult != gAIScriptPtr[0])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+ else
+ gAIScriptPtr += 5;
+}
+
+static void ContestAICmd_unk_70(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult;
+ gAIScriptPtr += 2;
+}
+
+static void ContestAICmd_unk_71(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2);
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_72(void)
+{
+ // wtf? shouldn't T1_READ_16 work here? why the signed 8 load by gAIScriptPtr[2]?
+ eContestAI->scriptArr[gAIScriptPtr[1]] += ((s8)gAIScriptPtr[2] | gAIScriptPtr[3] << 8);
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_73(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_74(void)
+{
+ eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]];
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_75(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_76(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_77(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_78(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
+ else
+ gAIScriptPtr += 8;
+}
+
+static void ContestAICmd_unk_79(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7A(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7B(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7C(void)
+{
+ if(eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]]))
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3);
+ else
+ gAIScriptPtr += 7;
+}
+
+static void ContestAICmd_unk_7D(void)
+{
+ if((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+static void ContestAICmd_unk_7E(void)
+{
+ if((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]])
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2);
+ else
+ gAIScriptPtr += 6;
+}
+
+// jump
+static void ContestAICmd_unk_7F(void)
+{
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+}
+
+static void ContestAICmd_unk_80(void)
+{
+ sub_812ACA4(gAIScriptPtr + 5);
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
+}
+
+static void ContestAICmd_unk_81(void)
+{
+ if(!sub_812ACC8())
+ eContestAI->aiAction |= 1;
+}
+
+// push stack?
+static void sub_812ACA4(u8 *ptr)
+{
+ u8 unk40 = eContestAI->unk40++;
+ eContestAI->stack[unk40] = (u32)ptr;
+}
+
+// pop stack?
+static bool8 sub_812ACC8(void)
+{
+ if(eContestAI->unk40 != 0)
+ {
+ --eContestAI->unk40;
+ gAIScriptPtr = (u8 *)eContestAI->stack[eContestAI->unk40];
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void ContestAICmd_check_for_exciting_move(void)
+{
+ int result = 0;
+ int i;
+
+ for(i = 0; i < 4; i++)
+ {
+ if(gContestMons[eContestAI->unk41].moves[i])
+ {
+ // why is it using gSharedMem + 0x19325? that does not exist...
+ if(Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[i]) == 1)
+ {
+ result = 1;
+ break;
+ }
+ }
+ }
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 1;
+}
+
+static void ContestAICmd_unk_83(void)
+{
+ ContestAICmd_check_for_exciting_move();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_84(void)
+{
+ ContestAICmd_check_for_exciting_move();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_85(void)
+{
+ int result = 0;
+ int i;
+ u16 arg = T1_READ_16(gAIScriptPtr + 1);
+
+ for(i = 0; i < 4; i++)
+ {
+ u16 move = gContestMons[eContestAI->unk41].moves[i];
+ if(move == arg)
+ {
+ result = 1;
+ break;
+ }
+ }
+
+ eContestAI->scriptResult = result;
+ gAIScriptPtr += 3;
+}
+
+static void ContestAICmd_unk_86(void)
+{
+ ContestAICmd_unk_85();
+
+ if(eContestAI->scriptResult != 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
+
+static void ContestAICmd_unk_87(void)
+{
+ ContestAICmd_unk_85();
+
+ if(eContestAI->scriptResult == 0)
+ gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0);
+ else
+ gAIScriptPtr += 4;
+}
diff --git a/src/data/items_de.h b/src/data/items_de.h
index 0453a95d0..92304e8b0 100644
--- a/src/data/items_de.h
+++ b/src/data/items_de.h
@@ -4626,7 +4626,7 @@ const struct Item gItems[] =
},
{
.name = _("TM01"),
- .itemId = ITEM_TM01,
+ .itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4642,7 +4642,7 @@ const struct Item gItems[] =
},
{
.name = _("TM02"),
- .itemId = ITEM_TM02,
+ .itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4658,7 +4658,7 @@ const struct Item gItems[] =
},
{
.name = _("TM03"),
- .itemId = ITEM_TM03,
+ .itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4674,7 +4674,7 @@ const struct Item gItems[] =
},
{
.name = _("TM04"),
- .itemId = ITEM_TM04,
+ .itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4690,7 +4690,7 @@ const struct Item gItems[] =
},
{
.name = _("TM05"),
- .itemId = ITEM_TM05,
+ .itemId = ITEM_TM05_ROAR,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4706,7 +4706,7 @@ const struct Item gItems[] =
},
{
.name = _("TM06"),
- .itemId = ITEM_TM06,
+ .itemId = ITEM_TM06_TOXIC,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4722,7 +4722,7 @@ const struct Item gItems[] =
},
{
.name = _("TM07"),
- .itemId = ITEM_TM07,
+ .itemId = ITEM_TM07_HAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4738,7 +4738,7 @@ const struct Item gItems[] =
},
{
.name = _("TM08"),
- .itemId = ITEM_TM08,
+ .itemId = ITEM_TM08_BULK_UP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4754,7 +4754,7 @@ const struct Item gItems[] =
},
{
.name = _("TM09"),
- .itemId = ITEM_TM09,
+ .itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4770,7 +4770,7 @@ const struct Item gItems[] =
},
{
.name = _("TM10"),
- .itemId = ITEM_TM10,
+ .itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4786,7 +4786,7 @@ const struct Item gItems[] =
},
{
.name = _("TM11"),
- .itemId = ITEM_TM11,
+ .itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4802,7 +4802,7 @@ const struct Item gItems[] =
},
{
.name = _("TM12"),
- .itemId = ITEM_TM12,
+ .itemId = ITEM_TM12_TAUNT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4818,7 +4818,7 @@ const struct Item gItems[] =
},
{
.name = _("TM13"),
- .itemId = ITEM_TM13,
+ .itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4834,7 +4834,7 @@ const struct Item gItems[] =
},
{
.name = _("TM14"),
- .itemId = ITEM_TM14,
+ .itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4850,7 +4850,7 @@ const struct Item gItems[] =
},
{
.name = _("TM15"),
- .itemId = ITEM_TM15,
+ .itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4866,7 +4866,7 @@ const struct Item gItems[] =
},
{
.name = _("TM16"),
- .itemId = ITEM_TM16,
+ .itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4882,7 +4882,7 @@ const struct Item gItems[] =
},
{
.name = _("TM17"),
- .itemId = ITEM_TM17,
+ .itemId = ITEM_TM17_PROTECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4898,7 +4898,7 @@ const struct Item gItems[] =
},
{
.name = _("TM18"),
- .itemId = ITEM_TM18,
+ .itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4914,7 +4914,7 @@ const struct Item gItems[] =
},
{
.name = _("TM19"),
- .itemId = ITEM_TM19,
+ .itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4930,7 +4930,7 @@ const struct Item gItems[] =
},
{
.name = _("TM20"),
- .itemId = ITEM_TM20,
+ .itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4946,7 +4946,7 @@ const struct Item gItems[] =
},
{
.name = _("TM21"),
- .itemId = ITEM_TM21,
+ .itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4962,7 +4962,7 @@ const struct Item gItems[] =
},
{
.name = _("TM22"),
- .itemId = ITEM_TM22,
+ .itemId = ITEM_TM22_SOLARBEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4978,7 +4978,7 @@ const struct Item gItems[] =
},
{
.name = _("TM23"),
- .itemId = ITEM_TM23,
+ .itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4994,7 +4994,7 @@ const struct Item gItems[] =
},
{
.name = _("TM24"),
- .itemId = ITEM_TM24,
+ .itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5010,7 +5010,7 @@ const struct Item gItems[] =
},
{
.name = _("TM25"),
- .itemId = ITEM_TM25,
+ .itemId = ITEM_TM25_THUNDER,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5026,7 +5026,7 @@ const struct Item gItems[] =
},
{
.name = _("TM26"),
- .itemId = ITEM_TM26,
+ .itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5042,7 +5042,7 @@ const struct Item gItems[] =
},
{
.name = _("TM27"),
- .itemId = ITEM_TM27,
+ .itemId = ITEM_TM27_RETURN,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5058,7 +5058,7 @@ const struct Item gItems[] =
},
{
.name = _("TM28"),
- .itemId = ITEM_TM28,
+ .itemId = ITEM_TM28_DIG,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5074,7 +5074,7 @@ const struct Item gItems[] =
},
{
.name = _("TM29"),
- .itemId = ITEM_TM29,
+ .itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5090,7 +5090,7 @@ const struct Item gItems[] =
},
{
.name = _("TM30"),
- .itemId = ITEM_TM30,
+ .itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5106,7 +5106,7 @@ const struct Item gItems[] =
},
{
.name = _("TM31"),
- .itemId = ITEM_TM31,
+ .itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5122,7 +5122,7 @@ const struct Item gItems[] =
},
{
.name = _("TM32"),
- .itemId = ITEM_TM32,
+ .itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5138,7 +5138,7 @@ const struct Item gItems[] =
},
{
.name = _("TM33"),
- .itemId = ITEM_TM33,
+ .itemId = ITEM_TM33_REFLECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5154,7 +5154,7 @@ const struct Item gItems[] =
},
{
.name = _("TM34"),
- .itemId = ITEM_TM34,
+ .itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5170,7 +5170,7 @@ const struct Item gItems[] =
},
{
.name = _("TM35"),
- .itemId = ITEM_TM35,
+ .itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5186,7 +5186,7 @@ const struct Item gItems[] =
},
{
.name = _("TM36"),
- .itemId = ITEM_TM36,
+ .itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5202,7 +5202,7 @@ const struct Item gItems[] =
},
{
.name = _("TM37"),
- .itemId = ITEM_TM37,
+ .itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5218,7 +5218,7 @@ const struct Item gItems[] =
},
{
.name = _("TM38"),
- .itemId = ITEM_TM38,
+ .itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5234,7 +5234,7 @@ const struct Item gItems[] =
},
{
.name = _("TM39"),
- .itemId = ITEM_TM39,
+ .itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5250,7 +5250,7 @@ const struct Item gItems[] =
},
{
.name = _("TM40"),
- .itemId = ITEM_TM40,
+ .itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5266,7 +5266,7 @@ const struct Item gItems[] =
},
{
.name = _("TM41"),
- .itemId = ITEM_TM41,
+ .itemId = ITEM_TM41_TORMENT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5282,7 +5282,7 @@ const struct Item gItems[] =
},
{
.name = _("TM42"),
- .itemId = ITEM_TM42,
+ .itemId = ITEM_TM42_FACADE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5298,7 +5298,7 @@ const struct Item gItems[] =
},
{
.name = _("TM43"),
- .itemId = ITEM_TM43,
+ .itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5314,7 +5314,7 @@ const struct Item gItems[] =
},
{
.name = _("TM44"),
- .itemId = ITEM_TM44,
+ .itemId = ITEM_TM44_REST,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5330,7 +5330,7 @@ const struct Item gItems[] =
},
{
.name = _("TM45"),
- .itemId = ITEM_TM45,
+ .itemId = ITEM_TM45_ATTRACT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5346,7 +5346,7 @@ const struct Item gItems[] =
},
{
.name = _("TM46"),
- .itemId = ITEM_TM46,
+ .itemId = ITEM_TM46_THIEF,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5362,7 +5362,7 @@ const struct Item gItems[] =
},
{
.name = _("TM47"),
- .itemId = ITEM_TM47,
+ .itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5378,7 +5378,7 @@ const struct Item gItems[] =
},
{
.name = _("TM48"),
- .itemId = ITEM_TM48,
+ .itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5394,7 +5394,7 @@ const struct Item gItems[] =
},
{
.name = _("TM49"),
- .itemId = ITEM_TM49,
+ .itemId = ITEM_TM49_SNATCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5410,7 +5410,7 @@ const struct Item gItems[] =
},
{
.name = _("TM50"),
- .itemId = ITEM_TM50,
+ .itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5426,7 +5426,7 @@ const struct Item gItems[] =
},
{
.name = _("VM01"),
- .itemId = ITEM_HM01,
+ .itemId = ITEM_HM01_CUT,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5442,7 +5442,7 @@ const struct Item gItems[] =
},
{
.name = _("VM02"),
- .itemId = ITEM_HM02,
+ .itemId = ITEM_HM02_FLY,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5458,7 +5458,7 @@ const struct Item gItems[] =
},
{
.name = _("VM03"),
- .itemId = ITEM_HM03,
+ .itemId = ITEM_HM03_SURF,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5474,7 +5474,7 @@ const struct Item gItems[] =
},
{
.name = _("VM04"),
- .itemId = ITEM_HM04,
+ .itemId = ITEM_HM04_STRENGTH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5490,7 +5490,7 @@ const struct Item gItems[] =
},
{
.name = _("VM05"),
- .itemId = ITEM_HM05,
+ .itemId = ITEM_HM05_FLASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5506,7 +5506,7 @@ const struct Item gItems[] =
},
{
.name = _("VM06"),
- .itemId = ITEM_HM06,
+ .itemId = ITEM_HM06_ROCK_SMASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5522,7 +5522,7 @@ const struct Item gItems[] =
},
{
.name = _("VM07"),
- .itemId = ITEM_HM07,
+ .itemId = ITEM_HM07_WATERFALL,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5538,7 +5538,7 @@ const struct Item gItems[] =
},
{
.name = _("VM08"),
- .itemId = ITEM_HM08,
+ .itemId = ITEM_HM08_DIVE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
diff --git a/src/data/items_en.h b/src/data/items_en.h
index a3e822370..3660f4590 100644
--- a/src/data/items_en.h
+++ b/src/data/items_en.h
@@ -4626,7 +4626,7 @@ const struct Item gItems[] =
},
{
.name = _("TM01"),
- .itemId = ITEM_TM01,
+ .itemId = ITEM_TM01_FOCUS_PUNCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4642,7 +4642,7 @@ const struct Item gItems[] =
},
{
.name = _("TM02"),
- .itemId = ITEM_TM02,
+ .itemId = ITEM_TM02_DRAGON_CLAW,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4658,7 +4658,7 @@ const struct Item gItems[] =
},
{
.name = _("TM03"),
- .itemId = ITEM_TM03,
+ .itemId = ITEM_TM03_WATER_PULSE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4674,7 +4674,7 @@ const struct Item gItems[] =
},
{
.name = _("TM04"),
- .itemId = ITEM_TM04,
+ .itemId = ITEM_TM04_CALM_MIND,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4690,7 +4690,7 @@ const struct Item gItems[] =
},
{
.name = _("TM05"),
- .itemId = ITEM_TM05,
+ .itemId = ITEM_TM05_ROAR,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4706,7 +4706,7 @@ const struct Item gItems[] =
},
{
.name = _("TM06"),
- .itemId = ITEM_TM06,
+ .itemId = ITEM_TM06_TOXIC,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4722,7 +4722,7 @@ const struct Item gItems[] =
},
{
.name = _("TM07"),
- .itemId = ITEM_TM07,
+ .itemId = ITEM_TM07_HAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4738,7 +4738,7 @@ const struct Item gItems[] =
},
{
.name = _("TM08"),
- .itemId = ITEM_TM08,
+ .itemId = ITEM_TM08_BULK_UP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4754,7 +4754,7 @@ const struct Item gItems[] =
},
{
.name = _("TM09"),
- .itemId = ITEM_TM09,
+ .itemId = ITEM_TM09_BULLET_SEED,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4770,7 +4770,7 @@ const struct Item gItems[] =
},
{
.name = _("TM10"),
- .itemId = ITEM_TM10,
+ .itemId = ITEM_TM10_HIDDEN_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4786,7 +4786,7 @@ const struct Item gItems[] =
},
{
.name = _("TM11"),
- .itemId = ITEM_TM11,
+ .itemId = ITEM_TM11_SUNNY_DAY,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4802,7 +4802,7 @@ const struct Item gItems[] =
},
{
.name = _("TM12"),
- .itemId = ITEM_TM12,
+ .itemId = ITEM_TM12_TAUNT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4818,7 +4818,7 @@ const struct Item gItems[] =
},
{
.name = _("TM13"),
- .itemId = ITEM_TM13,
+ .itemId = ITEM_TM13_ICE_BEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4834,7 +4834,7 @@ const struct Item gItems[] =
},
{
.name = _("TM14"),
- .itemId = ITEM_TM14,
+ .itemId = ITEM_TM14_BLIZZARD,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4850,7 +4850,7 @@ const struct Item gItems[] =
},
{
.name = _("TM15"),
- .itemId = ITEM_TM15,
+ .itemId = ITEM_TM15_HYPER_BEAM,
.price = 7500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4866,7 +4866,7 @@ const struct Item gItems[] =
},
{
.name = _("TM16"),
- .itemId = ITEM_TM16,
+ .itemId = ITEM_TM16_LIGHT_SCREEN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4882,7 +4882,7 @@ const struct Item gItems[] =
},
{
.name = _("TM17"),
- .itemId = ITEM_TM17,
+ .itemId = ITEM_TM17_PROTECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4898,7 +4898,7 @@ const struct Item gItems[] =
},
{
.name = _("TM18"),
- .itemId = ITEM_TM18,
+ .itemId = ITEM_TM18_RAIN_DANCE,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4914,7 +4914,7 @@ const struct Item gItems[] =
},
{
.name = _("TM19"),
- .itemId = ITEM_TM19,
+ .itemId = ITEM_TM19_GIGA_DRAIN,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4930,7 +4930,7 @@ const struct Item gItems[] =
},
{
.name = _("TM20"),
- .itemId = ITEM_TM20,
+ .itemId = ITEM_TM20_SAFEGUARD,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4946,7 +4946,7 @@ const struct Item gItems[] =
},
{
.name = _("TM21"),
- .itemId = ITEM_TM21,
+ .itemId = ITEM_TM21_FRUSTRATION,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4962,7 +4962,7 @@ const struct Item gItems[] =
},
{
.name = _("TM22"),
- .itemId = ITEM_TM22,
+ .itemId = ITEM_TM22_SOLARBEAM,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4978,7 +4978,7 @@ const struct Item gItems[] =
},
{
.name = _("TM23"),
- .itemId = ITEM_TM23,
+ .itemId = ITEM_TM23_IRON_TAIL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -4994,7 +4994,7 @@ const struct Item gItems[] =
},
{
.name = _("TM24"),
- .itemId = ITEM_TM24,
+ .itemId = ITEM_TM24_THUNDERBOLT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5010,7 +5010,7 @@ const struct Item gItems[] =
},
{
.name = _("TM25"),
- .itemId = ITEM_TM25,
+ .itemId = ITEM_TM25_THUNDER,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5026,7 +5026,7 @@ const struct Item gItems[] =
},
{
.name = _("TM26"),
- .itemId = ITEM_TM26,
+ .itemId = ITEM_TM26_EARTHQUAKE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5042,7 +5042,7 @@ const struct Item gItems[] =
},
{
.name = _("TM27"),
- .itemId = ITEM_TM27,
+ .itemId = ITEM_TM27_RETURN,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5058,7 +5058,7 @@ const struct Item gItems[] =
},
{
.name = _("TM28"),
- .itemId = ITEM_TM28,
+ .itemId = ITEM_TM28_DIG,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5074,7 +5074,7 @@ const struct Item gItems[] =
},
{
.name = _("TM29"),
- .itemId = ITEM_TM29,
+ .itemId = ITEM_TM29_PSYCHIC,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5090,7 +5090,7 @@ const struct Item gItems[] =
},
{
.name = _("TM30"),
- .itemId = ITEM_TM30,
+ .itemId = ITEM_TM30_SHADOW_BALL,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5106,7 +5106,7 @@ const struct Item gItems[] =
},
{
.name = _("TM31"),
- .itemId = ITEM_TM31,
+ .itemId = ITEM_TM31_BRICK_BREAK,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5122,7 +5122,7 @@ const struct Item gItems[] =
},
{
.name = _("TM32"),
- .itemId = ITEM_TM32,
+ .itemId = ITEM_TM32_DOUBLE_TEAM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5138,7 +5138,7 @@ const struct Item gItems[] =
},
{
.name = _("TM33"),
- .itemId = ITEM_TM33,
+ .itemId = ITEM_TM33_REFLECT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5154,7 +5154,7 @@ const struct Item gItems[] =
},
{
.name = _("TM34"),
- .itemId = ITEM_TM34,
+ .itemId = ITEM_TM34_SHOCK_WAVE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5170,7 +5170,7 @@ const struct Item gItems[] =
},
{
.name = _("TM35"),
- .itemId = ITEM_TM35,
+ .itemId = ITEM_TM35_FLAMETHROWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5186,7 +5186,7 @@ const struct Item gItems[] =
},
{
.name = _("TM36"),
- .itemId = ITEM_TM36,
+ .itemId = ITEM_TM36_SLUDGE_BOMB,
.price = 1000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5202,7 +5202,7 @@ const struct Item gItems[] =
},
{
.name = _("TM37"),
- .itemId = ITEM_TM37,
+ .itemId = ITEM_TM37_SANDSTORM,
.price = 2000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5218,7 +5218,7 @@ const struct Item gItems[] =
},
{
.name = _("TM38"),
- .itemId = ITEM_TM38,
+ .itemId = ITEM_TM38_FIRE_BLAST,
.price = 5500,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5234,7 +5234,7 @@ const struct Item gItems[] =
},
{
.name = _("TM39"),
- .itemId = ITEM_TM39,
+ .itemId = ITEM_TM39_ROCK_TOMB,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5250,7 +5250,7 @@ const struct Item gItems[] =
},
{
.name = _("TM40"),
- .itemId = ITEM_TM40,
+ .itemId = ITEM_TM40_AERIAL_ACE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5266,7 +5266,7 @@ const struct Item gItems[] =
},
{
.name = _("TM41"),
- .itemId = ITEM_TM41,
+ .itemId = ITEM_TM41_TORMENT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5282,7 +5282,7 @@ const struct Item gItems[] =
},
{
.name = _("TM42"),
- .itemId = ITEM_TM42,
+ .itemId = ITEM_TM42_FACADE,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5298,7 +5298,7 @@ const struct Item gItems[] =
},
{
.name = _("TM43"),
- .itemId = ITEM_TM43,
+ .itemId = ITEM_TM43_SECRET_POWER,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5314,7 +5314,7 @@ const struct Item gItems[] =
},
{
.name = _("TM44"),
- .itemId = ITEM_TM44,
+ .itemId = ITEM_TM44_REST,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5330,7 +5330,7 @@ const struct Item gItems[] =
},
{
.name = _("TM45"),
- .itemId = ITEM_TM45,
+ .itemId = ITEM_TM45_ATTRACT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5346,7 +5346,7 @@ const struct Item gItems[] =
},
{
.name = _("TM46"),
- .itemId = ITEM_TM46,
+ .itemId = ITEM_TM46_THIEF,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5362,7 +5362,7 @@ const struct Item gItems[] =
},
{
.name = _("TM47"),
- .itemId = ITEM_TM47,
+ .itemId = ITEM_TM47_STEEL_WING,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5378,7 +5378,7 @@ const struct Item gItems[] =
},
{
.name = _("TM48"),
- .itemId = ITEM_TM48,
+ .itemId = ITEM_TM48_SKILL_SWAP,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5394,7 +5394,7 @@ const struct Item gItems[] =
},
{
.name = _("TM49"),
- .itemId = ITEM_TM49,
+ .itemId = ITEM_TM49_SNATCH,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5410,7 +5410,7 @@ const struct Item gItems[] =
},
{
.name = _("TM50"),
- .itemId = ITEM_TM50,
+ .itemId = ITEM_TM50_OVERHEAT,
.price = 3000,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5426,7 +5426,7 @@ const struct Item gItems[] =
},
{
.name = _("HM01"),
- .itemId = ITEM_HM01,
+ .itemId = ITEM_HM01_CUT,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5442,7 +5442,7 @@ const struct Item gItems[] =
},
{
.name = _("HM02"),
- .itemId = ITEM_HM02,
+ .itemId = ITEM_HM02_FLY,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5458,7 +5458,7 @@ const struct Item gItems[] =
},
{
.name = _("HM03"),
- .itemId = ITEM_HM03,
+ .itemId = ITEM_HM03_SURF,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5474,7 +5474,7 @@ const struct Item gItems[] =
},
{
.name = _("HM04"),
- .itemId = ITEM_HM04,
+ .itemId = ITEM_HM04_STRENGTH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5490,7 +5490,7 @@ const struct Item gItems[] =
},
{
.name = _("HM05"),
- .itemId = ITEM_HM05,
+ .itemId = ITEM_HM05_FLASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5506,7 +5506,7 @@ const struct Item gItems[] =
},
{
.name = _("HM06"),
- .itemId = ITEM_HM06,
+ .itemId = ITEM_HM06_ROCK_SMASH,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5522,7 +5522,7 @@ const struct Item gItems[] =
},
{
.name = _("HM07"),
- .itemId = ITEM_HM07,
+ .itemId = ITEM_HM07_WATERFALL,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
@@ -5538,7 +5538,7 @@ const struct Item gItems[] =
},
{
.name = _("HM08"),
- .itemId = ITEM_HM08,
+ .itemId = ITEM_HM08_DIVE,
.price = 0,
.holdEffect = HOLD_EFFECT_NONE,
.holdEffectParam = 0,
diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h
index be902635e..bc6572b46 100644
--- a/src/data/pokemon/base_stats.h
+++ b/src/data/pokemon/base_stats.h
@@ -1,6 +1,10 @@
#ifndef GUARD_BASE_STATS_H
#define GUARD_BASE_STATS_H
+// Maximum value for a female pokemon is 254 (MON_FEMALE) which is 100% female.
+// 255 (MON_GENDERLESS) is reserved for genderless pokemon.
+#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100))
+
const struct BaseStats gBaseStats[] =
{
[SPECIES_NONE] = {0},
@@ -25,7 +29,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -58,7 +62,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -91,7 +95,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -124,7 +128,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -157,7 +161,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -190,7 +194,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -223,7 +227,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -256,7 +260,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -289,7 +293,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -322,7 +326,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -355,7 +359,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -388,7 +392,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_SILVER_POWDER,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -421,7 +425,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -454,7 +458,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -487,7 +491,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_POISON_BARB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -520,7 +524,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -553,7 +557,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -586,7 +590,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -619,7 +623,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -652,7 +656,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -685,7 +689,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -718,7 +722,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SHARP_BEAK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -751,7 +755,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -784,7 +788,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -817,7 +821,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_ORAN_BERRY,
.item2 = ITEM_LIGHT_BALL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -850,7 +854,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_ORAN_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -883,7 +887,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_QUICK_CLAW,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -916,7 +920,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_QUICK_CLAW,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -949,7 +953,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -982,7 +986,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1015,7 +1019,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1048,7 +1052,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1081,7 +1085,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1114,7 +1118,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1147,7 +1151,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_LEPPA_BERRY,
.item2 = ITEM_MOON_STONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 140,
.growthRate = GROWTH_FAST,
@@ -1180,7 +1184,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_LEPPA_BERRY,
.item2 = ITEM_MOON_STONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 140,
.growthRate = GROWTH_FAST,
@@ -1213,7 +1217,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1246,7 +1250,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1279,7 +1283,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -1312,7 +1316,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -1345,7 +1349,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1378,7 +1382,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1411,7 +1415,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1444,7 +1448,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1477,7 +1481,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -1510,7 +1514,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_TINY_MUSHROOM,
.item2 = ITEM_BIG_MUSHROOM,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1543,7 +1547,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_TINY_MUSHROOM,
.item2 = ITEM_BIG_MUSHROOM,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1576,7 +1580,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1609,7 +1613,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1642,7 +1646,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1675,7 +1679,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1708,7 +1712,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1741,7 +1745,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1774,7 +1778,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1807,7 +1811,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1840,7 +1844,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1873,7 +1877,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -1906,7 +1910,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -1939,7 +1943,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -1972,7 +1976,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2005,7 +2009,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2038,7 +2042,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2071,7 +2075,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_TWISTED_SPOON,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2104,7 +2108,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_TWISTED_SPOON,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2137,7 +2141,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_TWISTED_SPOON,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2170,7 +2174,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2203,7 +2207,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2236,7 +2240,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2269,7 +2273,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2302,7 +2306,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2335,7 +2339,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2368,7 +2372,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -2401,7 +2405,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -2434,7 +2438,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_EVERSTONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2467,7 +2471,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_EVERSTONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2500,7 +2504,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_EVERSTONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -2533,7 +2537,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2566,7 +2570,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2599,7 +2603,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2632,7 +2636,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2665,7 +2669,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2698,7 +2702,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2731,7 +2735,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_STICK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2764,7 +2768,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SHARP_BEAK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2797,7 +2801,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SHARP_BEAK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2830,7 +2834,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2863,7 +2867,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2896,7 +2900,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NUGGET,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2929,7 +2933,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NUGGET,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -2962,7 +2966,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_PEARL,
.item2 = ITEM_BIG_PEARL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -2995,7 +2999,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_PEARL,
.item2 = ITEM_BIG_PEARL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3028,7 +3032,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -3061,7 +3065,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -3094,7 +3098,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -3127,7 +3131,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3160,7 +3164,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3193,7 +3197,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3226,7 +3230,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3259,7 +3263,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3292,7 +3296,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3325,7 +3329,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3358,7 +3362,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3391,7 +3395,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3424,7 +3428,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_THICK_CLUB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3457,7 +3461,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_THICK_CLUB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3490,7 +3494,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3523,7 +3527,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3556,7 +3560,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3589,7 +3593,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SMOKE_BALL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3622,7 +3626,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SMOKE_BALL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3655,7 +3659,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3688,7 +3692,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3721,7 +3725,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_LUCKY_EGG,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 40,
.friendship = 140,
.growthRate = GROWTH_FAST,
@@ -3754,7 +3758,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3787,7 +3791,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3820,7 +3824,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3853,7 +3857,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3886,7 +3890,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3919,7 +3923,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -3952,7 +3956,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_STARDUST,
.item2 = ITEM_STAR_PIECE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -3985,7 +3989,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_STARDUST,
.item2 = ITEM_STAR_PIECE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4018,7 +4022,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_LEPPA_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4051,7 +4055,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4084,7 +4088,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_ASPEAR_BERRY,
.item2 = ITEM_ASPEAR_BERRY,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4117,7 +4121,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4150,7 +4154,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4183,7 +4187,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4216,7 +4220,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4249,7 +4253,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 5,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4282,7 +4286,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 5,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4315,7 +4319,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4348,7 +4352,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_POWDER,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4381,7 +4385,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4414,7 +4418,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4447,7 +4451,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4480,7 +4484,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4513,7 +4517,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4546,7 +4550,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4579,7 +4583,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4612,7 +4616,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4645,7 +4649,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -4678,7 +4682,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4711,7 +4715,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_LEFTOVERS,
.item2 = ITEM_LEFTOVERS,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -4744,7 +4748,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4777,7 +4781,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4810,7 +4814,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4843,7 +4847,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4876,7 +4880,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4909,7 +4913,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -4942,7 +4946,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -4975,7 +4979,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_LUM_BERRY,
.item2 = ITEM_LUM_BERRY,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 100,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5008,7 +5012,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5041,7 +5045,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5074,7 +5078,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5107,7 +5111,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5140,7 +5144,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5173,7 +5177,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5206,7 +5210,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5239,7 +5243,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5272,7 +5276,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5305,7 +5309,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_ORAN_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5338,7 +5342,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_ORAN_BERRY,
.item2 = ITEM_SITRUS_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5371,7 +5375,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5404,7 +5408,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5437,7 +5441,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5470,7 +5474,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5503,7 +5507,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5536,7 +5540,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5569,7 +5573,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5602,7 +5606,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_YELLOW_SHARD,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -5635,7 +5639,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_YELLOW_SHARD,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -5668,7 +5672,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_ORAN_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5701,7 +5705,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_LEPPA_BERRY,
.item2 = ITEM_MOON_STONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 140,
.growthRate = GROWTH_FAST,
@@ -5734,7 +5738,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5767,7 +5771,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5800,7 +5804,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -5833,7 +5837,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5866,7 +5870,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -5899,7 +5903,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5932,7 +5936,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5965,7 +5969,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -5998,7 +6002,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6031,7 +6035,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -6064,7 +6068,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -6097,7 +6101,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6130,7 +6134,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6163,7 +6167,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6196,7 +6200,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6229,7 +6233,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6262,7 +6266,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -6295,7 +6299,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6328,7 +6332,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6361,7 +6365,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6394,7 +6398,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6427,7 +6431,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6460,7 +6464,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6493,7 +6497,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 35,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6526,7 +6530,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6559,7 +6563,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6592,7 +6596,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_SPELL_TAG,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_FAST,
@@ -6625,7 +6629,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6658,7 +6662,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6691,7 +6695,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_PERSIM_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6724,7 +6728,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6757,7 +6761,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6790,7 +6794,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6823,7 +6827,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -6856,7 +6860,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6889,7 +6893,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -6922,7 +6926,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -6955,7 +6959,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -6988,7 +6992,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7021,7 +7025,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_ORAN_BERRY,
.item2 = ITEM_ORAN_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -7054,7 +7058,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7087,7 +7091,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_QUICK_CLAW,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -7120,7 +7124,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7153,7 +7157,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7186,7 +7190,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7219,7 +7223,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7252,7 +7256,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7285,7 +7289,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7318,7 +7322,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_RED_SHARD,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -7351,7 +7355,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7384,7 +7388,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7417,7 +7421,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -7450,7 +7454,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7483,7 +7487,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7516,7 +7520,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -7549,7 +7553,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -7582,7 +7586,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7615,7 +7619,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7648,7 +7652,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7681,7 +7685,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7714,7 +7718,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7747,7 +7751,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -7780,7 +7784,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7813,7 +7817,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7846,7 +7850,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_ASPEAR_BERRY,
.item2 = ITEM_ASPEAR_BERRY,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7879,7 +7883,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7912,7 +7916,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -7945,7 +7949,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_MOOMOO_MILK,
.item2 = ITEM_MOOMOO_MILK,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -7978,7 +7982,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_LUCKY_EGG,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 40,
.friendship = 140,
.growthRate = GROWTH_FAST,
@@ -8011,7 +8015,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8044,7 +8048,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8077,7 +8081,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8110,7 +8114,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8143,7 +8147,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8176,7 +8180,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -8209,7 +8213,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -8242,7 +8246,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_SACRED_ASH,
.item2 = ITEM_SACRED_ASH,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -8275,7 +8279,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_LUM_BERRY,
.item2 = ITEM_LUM_BERRY,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 100,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -8308,7 +8312,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8341,7 +8345,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8374,7 +8378,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8407,7 +8411,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8440,7 +8444,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8473,7 +8477,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8506,7 +8510,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8539,7 +8543,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8572,7 +8576,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8605,7 +8609,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8638,7 +8642,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8671,7 +8675,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8704,7 +8708,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8737,7 +8741,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8770,7 +8774,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8803,7 +8807,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8836,7 +8840,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8869,7 +8873,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8902,7 +8906,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8935,7 +8939,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -8968,7 +8972,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9001,7 +9005,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9034,7 +9038,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9067,7 +9071,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9100,7 +9104,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9133,7 +9137,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9166,7 +9170,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9199,7 +9203,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9232,7 +9236,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9265,7 +9269,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9298,7 +9302,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9331,7 +9335,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9364,7 +9368,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9397,7 +9401,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9430,7 +9434,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_PECHA_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9463,7 +9467,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_PECHA_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9496,7 +9500,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_ORAN_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9529,7 +9533,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_ORAN_BERRY,
.item2 = ITEM_SITRUS_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9562,7 +9566,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9595,7 +9599,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9628,7 +9632,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SILVER_POWDER,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9661,7 +9665,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9694,7 +9698,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_SILVER_POWDER,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -9727,7 +9731,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9760,7 +9764,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9793,7 +9797,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9826,7 +9830,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9859,7 +9863,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9892,7 +9896,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -9925,7 +9929,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -9958,7 +9962,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -9991,7 +9995,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -10024,7 +10028,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -10057,7 +10061,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -10090,7 +10094,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10123,7 +10127,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10156,7 +10160,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_CHESTO_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -10189,7 +10193,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10222,7 +10226,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10255,7 +10259,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10288,7 +10292,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_SILVER_POWDER,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10321,7 +10325,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10354,7 +10358,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10387,7 +10391,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_LEPPA_BERRY,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -10420,7 +10424,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_LEPPA_BERRY,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -10453,7 +10457,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_PERSIM_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -10486,7 +10490,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10519,7 +10523,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10552,7 +10556,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10585,7 +10589,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10618,7 +10622,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -10651,7 +10655,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10684,7 +10688,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -10717,7 +10721,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_HEART_SCALE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -10750,7 +10754,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10783,7 +10787,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -10816,7 +10820,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -10849,7 +10853,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -10882,7 +10886,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -10915,7 +10919,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -10948,7 +10952,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SOFT_SAND,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -10981,7 +10985,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11014,7 +11018,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11047,7 +11051,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -11080,7 +11084,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_KINGS_ROCK,
- .genderRatio = 63,
+ .genderRatio = PERCENT_FEMALE(25),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -11113,7 +11117,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -11146,7 +11150,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -11179,7 +11183,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11212,7 +11216,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_RAWST_BERRY,
.item2 = ITEM_RAWST_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11245,7 +11249,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11278,7 +11282,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11311,7 +11315,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11344,7 +11348,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_POISON_BARB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11377,7 +11381,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_POISON_BARB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -11410,7 +11414,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11443,7 +11447,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NEVER_MELT_ICE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11476,7 +11480,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_MOON_STONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11509,7 +11513,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SUN_STONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11542,7 +11546,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 191,
+ .genderRatio = PERCENT_FEMALE(75),
.eggCycles = 10,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11575,7 +11579,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11608,7 +11612,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11641,7 +11645,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11674,7 +11678,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11707,7 +11711,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FAST,
@@ -11740,7 +11744,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11773,7 +11777,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11806,7 +11810,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -11839,7 +11843,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -11872,7 +11876,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -11905,7 +11909,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_SPELL_TAG,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_FAST,
@@ -11938,7 +11942,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_SPELL_TAG,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_FAST,
@@ -11971,7 +11975,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_POISON_BARB,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -12004,7 +12008,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -12037,7 +12041,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -12070,7 +12074,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -12103,7 +12107,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_BIG_PEARL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -12136,7 +12140,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_BIG_PEARL,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -12169,7 +12173,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -12202,7 +12206,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_CHESTO_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -12235,7 +12239,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_CHESTO_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -12268,7 +12272,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_CHESTO_BERRY,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -12301,7 +12305,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_BLUE_SHARD,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12334,7 +12338,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12367,7 +12371,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12400,7 +12404,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_MEDIUM_SLOW,
@@ -12433,7 +12437,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SPELL_TAG,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_FAST,
@@ -12466,7 +12470,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_SPELL_TAG,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 35,
.growthRate = GROWTH_FAST,
@@ -12499,7 +12503,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -12532,7 +12536,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12565,7 +12569,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_GREEN_SHARD,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 40,
.friendship = 70,
.growthRate = GROWTH_SLOW,
@@ -12598,7 +12602,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_HARD_STONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 35,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -12631,7 +12635,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_HARD_STONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 35,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -12664,7 +12668,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_HARD_STONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 35,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -12697,7 +12701,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_MYSTIC_WATER,
.item2 = ITEM_MYSTIC_WATER,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_MEDIUM_FAST,
@@ -12730,7 +12734,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12763,7 +12767,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 15,
.friendship = 70,
.growthRate = GROWTH_FLUCTUATING,
@@ -12796,7 +12800,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12829,7 +12833,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 2,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12862,7 +12866,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12895,7 +12899,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 31,
+ .genderRatio = PERCENT_FEMALE(12.5),
.eggCycles = 30,
.friendship = 70,
.growthRate = GROWTH_ERRATIC,
@@ -12928,7 +12932,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -12961,7 +12965,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -12994,7 +12998,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 20,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13027,7 +13031,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13060,7 +13064,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13093,7 +13097,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_DRAGON_SCALE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13126,7 +13130,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13159,7 +13163,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13192,7 +13196,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_METAL_COAT,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 40,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13225,7 +13229,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13258,7 +13262,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13291,7 +13295,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 80,
.friendship = 35,
.growthRate = GROWTH_SLOW,
@@ -13324,7 +13328,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -13357,7 +13361,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -13390,7 +13394,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -13423,7 +13427,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 3,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 254,
+ .genderRatio = MON_FEMALE,
.eggCycles = 120,
.friendship = 90,
.growthRate = GROWTH_SLOW,
@@ -13456,7 +13460,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 0,
+ .genderRatio = MON_MALE,
.eggCycles = 120,
.friendship = 90,
.growthRate = GROWTH_SLOW,
@@ -13489,7 +13493,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_STAR_PIECE,
.item2 = ITEM_STAR_PIECE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 100,
.growthRate = GROWTH_SLOW,
@@ -13522,7 +13526,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 0,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 255,
+ .genderRatio = MON_GENDERLESS,
.eggCycles = 120,
.friendship = 0,
.growthRate = GROWTH_SLOW,
@@ -13555,7 +13559,7 @@ const struct BaseStats gBaseStats[] =
.evYield_SpDefense = 1,
.item1 = ITEM_NONE,
.item2 = ITEM_NONE,
- .genderRatio = 127,
+ .genderRatio = PERCENT_FEMALE(50),
.eggCycles = 25,
.friendship = 70,
.growthRate = GROWTH_FAST,
diff --git a/src/data/pokemon/dex_order.h b/src/data/pokemon/dex_order.h
deleted file mode 100644
index cbb7182ed..000000000
--- a/src/data/pokemon/dex_order.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_DEX_ORDER_H
-#define POKERUBY_DEX_ORDER_H
-
-const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151
-};
-
-const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358};
-
-const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411};
-
-#endif //POKERUBY_DEX_ORDER_H
diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h
index 919416fee..b88e42cd2 100644
--- a/src/data/pokemon/evolution.h
+++ b/src/data/pokemon/evolution.h
@@ -1,608 +1,192 @@
-//
-
-//
-
#ifndef POKERUBY_EVOLUTION_H
#define POKERUBY_EVOLUTION_H
-const struct EvolutionData gEvolutionTable[] = {
- {{ // ??????????
- }}, {{ // Bulbasaur
- {EVO_LEVEL, 16, SPECIES_IVYSAUR},
- }}, {{ // Ivysaur
- {EVO_LEVEL, 32, SPECIES_VENUSAUR},
- }}, {{ // Venusaur
- }}, {{ // Charmander
- {EVO_LEVEL, 16, SPECIES_CHARMELEON},
- }}, {{ // Charmeleon
- {EVO_LEVEL, 36, SPECIES_CHARIZARD},
- }}, {{ // Charizard
- }}, {{ // Squirtle
- {EVO_LEVEL, 16, SPECIES_WARTORTLE},
- }}, {{ // Wartortle
- {EVO_LEVEL, 36, SPECIES_BLASTOISE},
- }}, {{ // Blastoise
- }}, {{ // Caterpie
- {EVO_LEVEL, 7, SPECIES_METAPOD},
- }}, {{ // Metapod
- {EVO_LEVEL, 10, SPECIES_BUTTERFREE},
- }}, {{ // Butterfree
- }}, {{ // Weedle
- {EVO_LEVEL, 7, SPECIES_KAKUNA},
- }}, {{ // Kakuna
- {EVO_LEVEL, 10, SPECIES_BEEDRILL},
- }}, {{ // Beedrill
- }}, {{ // Pidgey
- {EVO_LEVEL, 18, SPECIES_PIDGEOTTO},
- }}, {{ // Pidgeotto
- {EVO_LEVEL, 36, SPECIES_PIDGEOT},
- }}, {{ // Pidgeot
- }}, {{ // Rattata
- {EVO_LEVEL, 20, SPECIES_RATICATE},
- }}, {{ // Raticate
- }}, {{ // Spearow
- {EVO_LEVEL, 20, SPECIES_FEAROW},
- }}, {{ // Fearow
- }}, {{ // Ekans
- {EVO_LEVEL, 22, SPECIES_ARBOK},
- }}, {{ // Arbok
- }}, {{ // Pikachu
- {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU},
- }}, {{ // Raichu
- }}, {{ // Sandshrew
- {EVO_LEVEL, 22, SPECIES_SANDSLASH},
- }}, {{ // Sandslash
- }}, {{ // Nidoran♀
- {EVO_LEVEL, 16, SPECIES_NIDORINA},
- }}, {{ // Nidorina
- {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN},
- }}, {{ // Nidoqueen
- }}, {{ // Nidoran♂
- {EVO_LEVEL, 16, SPECIES_NIDORINO},
- }}, {{ // Nidorino
- {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING},
- }}, {{ // Nidoking
- }}, {{ // Clefairy
- {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE},
- }}, {{ // Clefable
- }}, {{ // Vulpix
- {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES},
- }}, {{ // Ninetales
- }}, {{ // Jigglypuff
- {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF},
- }}, {{ // Wigglytuff
- }}, {{ // Zubat
- {EVO_LEVEL, 22, SPECIES_GOLBAT},
- }}, {{ // Golbat
- {EVO_FRIENDSHIP, 0, SPECIES_CROBAT},
- }}, {{ // Oddish
- {EVO_LEVEL, 21, SPECIES_GLOOM},
- }}, {{ // Gloom
- {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME},
- {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM},
- }}, {{ // Vileplume
- }}, {{ // Paras
- {EVO_LEVEL, 24, SPECIES_PARASECT},
- }}, {{ // Parasect
- }}, {{ // Venonat
- {EVO_LEVEL, 31, SPECIES_VENOMOTH},
- }}, {{ // Venomoth
- }}, {{ // Diglett
- {EVO_LEVEL, 26, SPECIES_DUGTRIO},
- }}, {{ // Dugtrio
- }}, {{ // Meowth
- {EVO_LEVEL, 28, SPECIES_PERSIAN},
- }}, {{ // Persian
- }}, {{ // Psyduck
- {EVO_LEVEL, 33, SPECIES_GOLDUCK},
- }}, {{ // Golduck
- }}, {{ // Mankey
- {EVO_LEVEL, 28, SPECIES_PRIMEAPE},
- }}, {{ // Primeape
- }}, {{ // Growlithe
- {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE},
- }}, {{ // Arcanine
- }}, {{ // Poliwag
- {EVO_LEVEL, 25, SPECIES_POLIWHIRL},
- }}, {{ // Poliwhirl
- {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
- {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED},
- }}, {{ // Poliwrath
- }}, {{ // Abra
- {EVO_LEVEL, 16, SPECIES_KADABRA},
- }}, {{ // Kadabra
- {EVO_TRADE, 0, SPECIES_ALAKAZAM},
- }}, {{ // Alakazam
- }}, {{ // Machop
- {EVO_LEVEL, 28, SPECIES_MACHOKE},
- }}, {{ // Machoke
- {EVO_TRADE, 0, SPECIES_MACHAMP},
- }}, {{ // Machamp
- }}, {{ // Bellsprout
- {EVO_LEVEL, 21, SPECIES_WEEPINBELL},
- }}, {{ // Weepinbell
- {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL},
- }}, {{ // Victreebel
- }}, {{ // Tentacool
- {EVO_LEVEL, 30, SPECIES_TENTACRUEL},
- }}, {{ // Tentacruel
- }}, {{ // Geodude
- {EVO_LEVEL, 25, SPECIES_GRAVELER},
- }}, {{ // Graveler
- {EVO_TRADE, 0, SPECIES_GOLEM},
- }}, {{ // Golem
- }}, {{ // Ponyta
- {EVO_LEVEL, 40, SPECIES_RAPIDASH},
- }}, {{ // Rapidash
- }}, {{ // Slowpoke
- {EVO_LEVEL, 37, SPECIES_SLOWBRO},
- {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING},
- }}, {{ // Slowbro
- }}, {{ // Magnemite
- {EVO_LEVEL, 30, SPECIES_MAGNETON},
- }}, {{ // Magneton
- }}, {{ // Farfetch'd
- }}, {{ // Doduo
- {EVO_LEVEL, 31, SPECIES_DODRIO},
- }}, {{ // Dodrio
- }}, {{ // Seel
- {EVO_LEVEL, 34, SPECIES_DEWGONG},
- }}, {{ // Dewgong
- }}, {{ // Grimer
- {EVO_LEVEL, 38, SPECIES_MUK},
- }}, {{ // Muk
- }}, {{ // Shellder
- {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER},
- }}, {{ // Cloyster
- }}, {{ // Gastly
- {EVO_LEVEL, 25, SPECIES_HAUNTER},
- }}, {{ // Haunter
- {EVO_TRADE, 0, SPECIES_GENGAR},
- }}, {{ // Gengar
- }}, {{ // Onix
- {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX},
- }}, {{ // Drowzee
- {EVO_LEVEL, 26, SPECIES_HYPNO},
- }}, {{ // Hypno
- }}, {{ // Krabby
- {EVO_LEVEL, 28, SPECIES_KINGLER},
- }}, {{ // Kingler
- }}, {{ // Voltorb
- {EVO_LEVEL, 30, SPECIES_ELECTRODE},
- }}, {{ // Electrode
- }}, {{ // Exeggcute
- {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR},
- }}, {{ // Exeggutor
- }}, {{ // Cubone
- {EVO_LEVEL, 28, SPECIES_MAROWAK},
- }}, {{ // Marowak
- }}, {{ // Hitmonlee
- }}, {{ // Hitmonchan
- }}, {{ // Lickitung
- }}, {{ // Koffing
- {EVO_LEVEL, 35, SPECIES_WEEZING},
- }}, {{ // Weezing
- }}, {{ // Rhyhorn
- {EVO_LEVEL, 42, SPECIES_RHYDON},
- }}, {{ // Rhydon
- }}, {{ // Chansey
- {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY},
- }}, {{ // Tangela
- }}, {{ // Kangaskhan
- }}, {{ // Horsea
- {EVO_LEVEL, 32, SPECIES_SEADRA},
- }}, {{ // Seadra
- {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA},
- }}, {{ // Goldeen
- {EVO_LEVEL, 33, SPECIES_SEAKING},
- }}, {{ // Seaking
- }}, {{ // Staryu
- {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE},
- }}, {{ // Starmie
- }}, {{ // Mr. mime
- }}, {{ // Scyther
- {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR},
- }}, {{ // Jynx
- }}, {{ // Electabuzz
- }}, {{ // Magmar
- }}, {{ // Pinsir
- }}, {{ // Tauros
- }}, {{ // Magikarp
- {EVO_LEVEL, 20, SPECIES_GYARADOS},
- }}, {{ // Gyarados
- }}, {{ // Lapras
- }}, {{ // Ditto
- }}, {{ // Eevee
- {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
- {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON},
- {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON},
- {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON},
- {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON},
- }}, {{ // Vaporeon
- }}, {{ // Jolteon
- }}, {{ // Flareon
- }}, {{ // Porygon
- {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2},
- }}, {{ // Omanyte
- {EVO_LEVEL, 40, SPECIES_OMASTAR},
- }}, {{ // Omastar
- }}, {{ // Kabuto
- {EVO_LEVEL, 40, SPECIES_KABUTOPS},
- }}, {{ // Kabutops
- }}, {{ // Aerodactyl
- }}, {{ // Snorlax
- }}, {{ // Articuno
- }}, {{ // Zapdos
- }}, {{ // Moltres
- }}, {{ // Dratini
- {EVO_LEVEL, 30, SPECIES_DRAGONAIR},
- }}, {{ // Dragonair
- {EVO_LEVEL, 55, SPECIES_DRAGONITE},
- }}, {{ // Dragonite
- }}, {{ // Mewtwo
- }}, {{ // Mew
- }}, {{ // Chikorita
- {EVO_LEVEL, 16, SPECIES_BAYLEEF},
- }}, {{ // Bayleef
- {EVO_LEVEL, 32, SPECIES_MEGANIUM},
- }}, {{ // Meganium
- }}, {{ // Cyndaquil
- {EVO_LEVEL, 14, SPECIES_QUILAVA},
- }}, {{ // Quilava
- {EVO_LEVEL, 36, SPECIES_TYPHLOSION},
- }}, {{ // Typhlosion
- }}, {{ // Totodile
- {EVO_LEVEL, 18, SPECIES_CROCONAW},
- }}, {{ // Croconaw
- {EVO_LEVEL, 30, SPECIES_FERALIGATR},
- }}, {{ // Feraligatr
- }}, {{ // Sentret
- {EVO_LEVEL, 15, SPECIES_FURRET},
- }}, {{ // Furret
- }}, {{ // Hoothoot
- {EVO_LEVEL, 20, SPECIES_NOCTOWL},
- }}, {{ // Noctowl
- }}, {{ // Ledyba
- {EVO_LEVEL, 18, SPECIES_LEDIAN},
- }}, {{ // Ledian
- }}, {{ // Spinarak
- {EVO_LEVEL, 22, SPECIES_ARIADOS},
- }}, {{ // Ariados
- }}, {{ // Crobat
- }}, {{ // Chinchou
- {EVO_LEVEL, 27, SPECIES_LANTURN},
- }}, {{ // Lanturn
- }}, {{ // Pichu
- {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU},
- }}, {{ // Cleffa
- {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY},
- }}, {{ // Igglybuff
- {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF},
- }}, {{ // Togepi
- {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC},
- }}, {{ // Togetic
- }}, {{ // Natu
- {EVO_LEVEL, 25, SPECIES_XATU},
- }}, {{ // Xatu
- }}, {{ // Mareep
- {EVO_LEVEL, 15, SPECIES_FLAAFFY},
- }}, {{ // Flaaffy
- {EVO_LEVEL, 30, SPECIES_AMPHAROS},
- }}, {{ // Ampharos
- }}, {{ // Bellossom
- }}, {{ // Marill
- {EVO_LEVEL, 18, SPECIES_AZUMARILL},
- }}, {{ // Azumarill
- }}, {{ // Sudowoodo
- }}, {{ // Politoed
- }}, {{ // Hoppip
- {EVO_LEVEL, 18, SPECIES_SKIPLOOM},
- }}, {{ // Skiploom
- {EVO_LEVEL, 27, SPECIES_JUMPLUFF},
- }}, {{ // Jumpluff
- }}, {{ // Aipom
- }}, {{ // Sunkern
- {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA},
- }}, {{ // Sunflora
- }}, {{ // Yanma
- }}, {{ // Wooper
- {EVO_LEVEL, 20, SPECIES_QUAGSIRE},
- }}, {{ // Quagsire
- }}, {{ // Espeon
- }}, {{ // Umbreon
- }}, {{ // Murkrow
- }}, {{ // Slowking
- }}, {{ // Misdreavus
- }}, {{ // Unown
- }}, {{ // Wobbuffet
- }}, {{ // Girafarig
- }}, {{ // Pineco
- {EVO_LEVEL, 31, SPECIES_FORRETRESS},
- }}, {{ // Forretress
- }}, {{ // Dunsparce
- }}, {{ // Gligar
- }}, {{ // Steelix
- }}, {{ // Snubbull
- {EVO_LEVEL, 23, SPECIES_GRANBULL},
- }}, {{ // Granbull
- }}, {{ // Qwilfish
- }}, {{ // Scizor
- }}, {{ // Shuckle
- }}, {{ // Heracross
- }}, {{ // Sneasel
- }}, {{ // Teddiursa
- {EVO_LEVEL, 30, SPECIES_URSARING},
- }}, {{ // Ursaring
- }}, {{ // Slugma
- {EVO_LEVEL, 38, SPECIES_MAGCARGO},
- }}, {{ // Magcargo
- }}, {{ // Swinub
- {EVO_LEVEL, 33, SPECIES_PILOSWINE},
- }}, {{ // Piloswine
- }}, {{ // Corsola
- }}, {{ // Remoraid
- {EVO_LEVEL, 25, SPECIES_OCTILLERY},
- }}, {{ // Octillery
- }}, {{ // Delibird
- }}, {{ // Mantine
- }}, {{ // Skarmory
- }}, {{ // Houndour
- {EVO_LEVEL, 24, SPECIES_HOUNDOOM},
- }}, {{ // Houndoom
- }}, {{ // Kingdra
- }}, {{ // Phanpy
- {EVO_LEVEL, 25, SPECIES_DONPHAN},
- }}, {{ // Donphan
- }}, {{ // Porygon2
- }}, {{ // Stantler
- }}, {{ // Smeargle
- }}, {{ // Tyrogue
- {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
- {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
- {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP},
- }}, {{ // Hitmontop
- }}, {{ // Smoochum
- {EVO_LEVEL, 30, SPECIES_JYNX},
- }}, {{ // Elekid
- {EVO_LEVEL, 30, SPECIES_ELECTABUZZ},
- }}, {{ // Magby
- {EVO_LEVEL, 30, SPECIES_MAGMAR},
- }}, {{ // Miltank
- }}, {{ // Blissey
- }}, {{ // Raikou
- }}, {{ // Entei
- }}, {{ // Suicune
- }}, {{ // Larvitar
- {EVO_LEVEL, 30, SPECIES_PUPITAR},
- }}, {{ // Pupitar
- {EVO_LEVEL, 55, SPECIES_TYRANITAR},
- }}, {{ // Tyranitar
- }}, {{ // Lugia
- }}, {{ // Ho-Oh
- }}, {{ // Celebi
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // ?
- }}, {{ // Treecko
- {EVO_LEVEL, 16, SPECIES_GROVYLE},
- }}, {{ // Grovyle
- {EVO_LEVEL, 36, SPECIES_SCEPTILE},
- }}, {{ // Sceptile
- }}, {{ // Torchic
- {EVO_LEVEL, 16, SPECIES_COMBUSKEN},
- }}, {{ // Combusken
- {EVO_LEVEL, 36, SPECIES_BLAZIKEN},
- }}, {{ // Blaziken
- }}, {{ // Mudkip
- {EVO_LEVEL, 16, SPECIES_MARSHTOMP},
- }}, {{ // Marshtomp
- {EVO_LEVEL, 36, SPECIES_SWAMPERT},
- }}, {{ // Swampert
- }}, {{ // Poochyena
- {EVO_LEVEL, 18, SPECIES_MIGHTYENA},
- }}, {{ // Mightyena
- }}, {{ // Zigzagoon
- {EVO_LEVEL, 20, SPECIES_LINOONE},
- }}, {{ // Linoone
- }}, {{ // Wurmple
- {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON},
- {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON},
- }}, {{ // Silcoon
- {EVO_LEVEL, 10, SPECIES_BEAUTIFLY},
- }}, {{ // Beautifly
- }}, {{ // Cascoon
- {EVO_LEVEL, 10, SPECIES_DUSTOX},
- }}, {{ // Dustox
- }}, {{ // Lotad
- {EVO_LEVEL, 14, SPECIES_LOMBRE},
- }}, {{ // Lombre
- {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO},
- }}, {{ // Ludicolo
- }}, {{ // Seedot
- {EVO_LEVEL, 14, SPECIES_NUZLEAF},
- }}, {{ // Nuzleaf
- {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY},
- }}, {{ // Shiftry
- }}, {{ // Nincada
- {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK},
- {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA},
- }}, {{ // Ninjask
- }}, {{ // Shedinja
- }}, {{ // Taillow
- {EVO_LEVEL, 22, SPECIES_SWELLOW},
- }}, {{ // Swellow
- }}, {{ // Shroomish
- {EVO_LEVEL, 23, SPECIES_BRELOOM},
- }}, {{ // Breloom
- }}, {{ // Spinda
- }}, {{ // Wingull
- {EVO_LEVEL, 25, SPECIES_PELIPPER},
- }}, {{ // Pelipper
- }}, {{ // Surskit
- {EVO_LEVEL, 22, SPECIES_MASQUERAIN},
- }}, {{ // Masquerain
- }}, {{ // Wailmer
- {EVO_LEVEL, 40, SPECIES_WAILORD},
- }}, {{ // Wailord
- }}, {{ // Skitty
- {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY},
- }}, {{ // Delcatty
- }}, {{ // Kecleon
- }}, {{ // Baltoy
- {EVO_LEVEL, 36, SPECIES_CLAYDOL},
- }}, {{ // Claydol
- }}, {{ // Nosepass
- }}, {{ // Torkoal
- }}, {{ // Sableye
- }}, {{ // Barboach
- {EVO_LEVEL, 30, SPECIES_WHISCASH},
- }}, {{ // Whiscash
- }}, {{ // Luvdisc
- }}, {{ // Corphish
- {EVO_LEVEL, 30, SPECIES_CRAWDAUNT},
- }}, {{ // Crawdaunt
- }}, {{ // Feebas
- {EVO_BEAUTY, 170, SPECIES_MILOTIC},
- }}, {{ // Milotic
- }}, {{ // Carvanha
- {EVO_LEVEL, 30, SPECIES_SHARPEDO},
- }}, {{ // Sharpedo
- }}, {{ // Trapinch
- {EVO_LEVEL, 35, SPECIES_VIBRAVA},
- }}, {{ // Vibrava
- {EVO_LEVEL, 45, SPECIES_FLYGON},
- }}, {{ // Flygon
- }}, {{ // Makuhita
- {EVO_LEVEL, 24, SPECIES_HARIYAMA},
- }}, {{ // Hariyama
- }}, {{ // Electrike
- {EVO_LEVEL, 26, SPECIES_MANECTRIC},
- }}, {{ // Manectric
- }}, {{ // Numel
- {EVO_LEVEL, 33, SPECIES_CAMERUPT},
- }}, {{ // Camerupt
- }}, {{ // Spheal
- {EVO_LEVEL, 32, SPECIES_SEALEO},
- }}, {{ // Sealeo
- {EVO_LEVEL, 44, SPECIES_WALREIN},
- }}, {{ // Walrein
- }}, {{ // Cacnea
- {EVO_LEVEL, 32, SPECIES_CACTURNE},
- }}, {{ // Cacturne
- }}, {{ // Snorunt
- {EVO_LEVEL, 42, SPECIES_GLALIE},
- }}, {{ // Glalie
- }}, {{ // Lunatone
- }}, {{ // Solrock
- }}, {{ // Azurill
- {EVO_FRIENDSHIP, 0, SPECIES_MARILL},
- }}, {{ // Spoink
- {EVO_LEVEL, 32, SPECIES_GRUMPIG},
- }}, {{ // Grumpig
- }}, {{ // Plusle
- }}, {{ // Minun
- }}, {{ // Mawile
- }}, {{ // Meditite
- {EVO_LEVEL, 37, SPECIES_MEDICHAM},
- }}, {{ // Medicham
- }}, {{ // Swablu
- {EVO_LEVEL, 35, SPECIES_ALTARIA},
- }}, {{ // Altaria
- }}, {{ // Wynaut
- {EVO_LEVEL, 15, SPECIES_WOBBUFFET},
- }}, {{ // Duskull
- {EVO_LEVEL, 37, SPECIES_DUSCLOPS},
- }}, {{ // Dusclops
- }}, {{ // Roselia
- }}, {{ // Slakoth
- {EVO_LEVEL, 18, SPECIES_VIGOROTH},
- }}, {{ // Vigoroth
- {EVO_LEVEL, 36, SPECIES_SLAKING},
- }}, {{ // Slaking
- }}, {{ // Gulpin
- {EVO_LEVEL, 26, SPECIES_SWALOT},
- }}, {{ // Swalot
- }}, {{ // Tropius
- }}, {{ // Whismur
- {EVO_LEVEL, 20, SPECIES_LOUDRED},
- }}, {{ // Loudred
- {EVO_LEVEL, 40, SPECIES_EXPLOUD},
- }}, {{ // Exploud
- }}, {{ // Clamperl
- {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
- {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS},
- }}, {{ // Huntail
- }}, {{ // Gorebyss
- }}, {{ // Absol
- }}, {{ // Shuppet
- {EVO_LEVEL, 37, SPECIES_BANETTE},
- }}, {{ // Banette
- }}, {{ // Seviper
- }}, {{ // Zangoose
- }}, {{ // Relicanth
- }}, {{ // Aron
- {EVO_LEVEL, 32, SPECIES_LAIRON},
- }}, {{ // Lairon
- {EVO_LEVEL, 42, SPECIES_AGGRON},
- }}, {{ // Aggron
- }}, {{ // Castform
- }}, {{ // Volbeat
- }}, {{ // Illumise
- }}, {{ // Lileep
- {EVO_LEVEL, 40, SPECIES_CRADILY},
- }}, {{ // Cradily
- }}, {{ // Anorith
- {EVO_LEVEL, 40, SPECIES_ARMALDO},
- }}, {{ // Armaldo
- }}, {{ // Ralts
- {EVO_LEVEL, 20, SPECIES_KIRLIA},
- }}, {{ // Kirlia
- {EVO_LEVEL, 30, SPECIES_GARDEVOIR},
- }}, {{ // Gardevoir
- }}, {{ // Bagon
- {EVO_LEVEL, 30, SPECIES_SHELGON},
- }}, {{ // Shelgon
- {EVO_LEVEL, 50, SPECIES_SALAMENCE},
- }}, {{ // Salamence
- }}, {{ // Beldum
- {EVO_LEVEL, 20, SPECIES_METANG},
- }}, {{ // Metang
- {EVO_LEVEL, 45, SPECIES_METAGROSS},
- }}, {{ // Metagross
- }}, {{ // Regirock
- }}, {{ // Regice
- }}, {{ // Registeel
- }}, {{ // Kyogre
- }}, {{ // Groudon
- }}, {{ // Rayquaza
- }}, {{ // Latias
- }}, {{ // Latios
- }}, {{ // Jirachi
- }}, {{ // Deoxys
- }}, {{ // Chimecho
- }}
+struct Evolution gEvolutionTable[NUM_SPECIES][5] =
+{
+ [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}},
+ [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}},
+ [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}},
+ [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}},
+ [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}},
+ [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}},
+ [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}},
+ [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}},
+ [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}},
+ [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}},
+ [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}},
+ [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}},
+ [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}},
+ [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}},
+ [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}},
+ [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}},
+ [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}},
+ [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}},
+ [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}},
+ [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}},
+ [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}},
+ [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}},
+ [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}},
+ [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}},
+ [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}},
+ [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}},
+ [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}},
+ [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME},
+ {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}},
+ [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}},
+ [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}},
+ [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}},
+ [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}},
+ [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}},
+ [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}},
+ [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}},
+ [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}},
+ [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
+ {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
+ [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}},
+ [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}},
+ [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}},
+ [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}},
+ [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}},
+ [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}},
+ [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}},
+ [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}},
+ [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}},
+ [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}},
+ [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO},
+ {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
+ [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}},
+ [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}},
+ [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}},
+ [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}},
+ [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}},
+ [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}},
+ [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}},
+ [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
+ [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}},
+ [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}},
+ [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}},
+ [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}},
+ [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}},
+ [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}},
+ [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}},
+ [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}},
+ [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}},
+ [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
+ [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}},
+ [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}},
+ [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}},
+ [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}},
+ [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
+ {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON},
+ {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON},
+ {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON},
+ {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}},
+ [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}},
+ [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}},
+ [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}},
+ [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}},
+ [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}},
+ [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}},
+ [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}},
+ [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}},
+ [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}},
+ [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}},
+ [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}},
+ [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}},
+ [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}},
+ [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}},
+ [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}},
+ [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}},
+ [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}},
+ [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}},
+ [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}},
+ [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}},
+ [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}},
+ [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}},
+ [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}},
+ [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}},
+ [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}},
+ [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}},
+ [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}},
+ [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}},
+ [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}},
+ [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}},
+ [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}},
+ [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}},
+ [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}},
+ [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}},
+ [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}},
+ [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}},
+ [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
+ {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
+ {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}},
+ [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}},
+ [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}},
+ [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}},
+ [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}},
+ [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}},
+ [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}},
+ [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}},
+ [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}},
+ [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}},
+ [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}},
+ [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}},
+ [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}},
+ [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}},
+ [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON},
+ {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}},
+ [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}},
+ [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}},
+ [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}},
+ [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}},
+ [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}},
+ [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}},
+ [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK},
+ {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}},
+ [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}},
+ [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}},
+ [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}},
+ [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}},
+ [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}},
+ [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}},
+ [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}},
+ [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}},
+ [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}},
+ [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}},
+ [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}},
+ [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}},
+ [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}},
+ [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}},
+ [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}},
+ [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}},
+ [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}},
+ [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}},
+ [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}},
+ [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}},
+ [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}},
+ [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}},
+ [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}},
+ [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}},
+ [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}},
+ [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}},
+ [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}},
+ [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}},
+ [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}},
+ [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}},
+ [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}},
+ [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
+ {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
+ [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}},
+ [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}},
+ [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}},
+ [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}},
+ [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}},
+ [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}},
+ [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}},
+ [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}},
+ [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}},
+ [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}},
+ [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
};
#endif //POKERUBY_EVOLUTION_H
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index cd06228dd..c7409f3b2 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -1,661 +1,72 @@
-//
-
-//
-
-#ifndef POKERUBY_ITEM_EFFECTS_H
-#define POKERUBY_ITEM_EFFECTS_H
-
-const u8 gItemEffect_Potion[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 20
-};
-
-const u8 gItemEffect_Antidote[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x10,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_BurnHeal[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x08,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_IceHeal[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_Awakening[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x20,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_ParalyzeHeal[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x02,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_FullRestore[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x3f,
- 0x04,
- 0x00,
- 0xff
-};
-
-const u8 gItemEffect_MaxPotion[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 0xff
-};
-
-const u8 gItemEffect_HyperPotion[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 200
-};
-
-const u8 gItemEffect_SuperPotion[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 50
-};
-
-const u8 gItemEffect_FullHeal[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x3f,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_Revive[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x44,
- 0x00,
- 0xfe
-};
-
-const u8 gItemEffect_MaxRevive[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x44,
- 0x00,
- 0xff
-};
-
-const u8 gItemEffect_FreshWater[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 50
-};
-
-const u8 gItemEffect_SodaPop[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 60
-};
-
-const u8 gItemEffect_Lemonade[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 80
-};
-
-const u8 gItemEffect_MoomooMilk[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 100
-};
-
-const u8 gItemEffect_EnergyPowder[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0xe0,
- 50,
- 0xfb,
- 0xfb,
- 0xf6
-};
-
-const u8 gItemEffect_EnergyRoot[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0xe0,
- 200,
- 0xf6,
- 0xf6,
- 0xf1
-};
-
-const u8 gItemEffect_HealPowder[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x3f,
- 0x00,
- 0xe0,
- 0xfb,
- 0xfb,
- 0xf6
-};
-
-const u8 gItemEffect_RevivalHerb[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x44,
- 0xe0,
- 0xfe,
- 0xf1,
- 0xf1,
- 0xec
-};
-
-const u8 gItemEffect_Ether[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x18,
- 0x00,
- 0x0a
-};
-
-const u8 gItemEffect_MaxEther[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x18,
- 0x00,
- 0x7f
-};
-
-const u8 gItemEffect_Elixir[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x08,
- 0x00,
- 0x0a
-};
-
-const u8 gItemEffect_MaxElixir[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x08,
- 0x00,
- 0x7f
-};
-
-const u8 gItemEffect_LavaCookie[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x3f,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_BlueFlute[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x20,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_YellowFlute[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_RedFlute[] = {
- 0x80,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_BerryJuice[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 20
-};
-
-const u8 gItemEffect_SacredAsh[] = {
- 0x40,
- 0x00,
- 0x00,
- 0x00,
- 0x44,
- 0x00,
- 0xff
-};
-
-const u8 gItemEffect_HPUp[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0xe0,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_Protein[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x02,
- 0xe0,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_Iron[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xe1,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_Carbos[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xe2,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_Calcium[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xe8,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_RareCandy[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x44,
- 0xe0,
- 253,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_PPUp[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x20,
- 0xe0,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_Zinc[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xe4,
- 0x0a,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_PPMax[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0xf0,
- 0x05,
- 0x03,
- 0x02
-};
-
-const u8 gItemEffect_GuardSpec[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_DireHit[] = {
- 0x20,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_XAttack[] = {
- 0x01,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_XDefend[] = {
- 0x00,
- 0x10,
- 0x00,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_XSpeed[] = {
- 0x00,
- 0x01,
- 0x00,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_XAccuracy[] = {
- 0x00,
- 0x00,
- 0x10,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_XSpecial[] = {
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00,
- 0x60,
- 0x01,
- 0x01
-};
-
-const u8 gItemEffect_SunStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_MoonStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_FireStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_ThunderStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_WaterStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_LeafStone[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x80,
- 0x00
-};
-
-const u8 gItemEffect_CheriBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x02,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_ChestoBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x20,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_PechaBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x10,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_RawstBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x08,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_AspearBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_LeppaBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x18,
- 0x00,
- 0x0a
-};
-
-const u8 gItemEffect_OranBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 10
-};
-
-const u8 gItemEffect_PersimBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_LumBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x3f,
- 0x00,
- 0x00
-};
-
-const u8 gItemEffect_SitrusBerry[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x04,
- 0x00,
- 30
-};
-
-const u8 *const gItemEffectTable[] = {
+#ifndef GUARD_ITEM_EFFECTS_H
+#define GUARD_ITEM_EFFECTS_H
+
+const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
+const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
+const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
+const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
+const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
+const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
+const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff};
+const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff};
+const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200};
+const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
+const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
+const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe};
+const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
+const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50};
+const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60};
+const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80};
+const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100};
+const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6};
+const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1};
+const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6};
+const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xfe, 0xf1, 0xf1, 0xec};
+const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
+const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f};
+const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a};
+const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f};
+const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
+const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
+const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
+const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00};
+const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20};
+const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff};
+const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02};
+const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02};
+const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02};
+const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02};
+const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01};
+const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00};
+const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00};
+const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00};
+const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00};
+const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00};
+const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00};
+const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a};
+const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10};
+const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
+const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00};
+const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30};
+
+const u8 *const gItemEffectTable[] =
+{
gItemEffect_Potion,
gItemEffect_Antidote,
gItemEffect_BurnHeal,
@@ -821,4 +232,4 @@ const u8 *const gItemEffectTable[] = {
NULL
};
-#endif //POKERUBY_ITEM_EFFECTS_H
+#endif //GUARD_ITEM_EFFECTS_H
diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h
index 19761c996..894a2b58e 100644
--- a/src/data/pokemon/level_up_learnset_pointers.h
+++ b/src/data/pokemon/level_up_learnset_pointers.h
@@ -5,7 +5,7 @@
#ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H
#define POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H
-const u16 *const gLevelUpLearnsets[] = {
+const u16 *gLevelUpLearnsets[] = {
gBulbasaurLevelUpLearnset,
gBulbasaurLevelUpLearnset,
gIvysaurLevelUpLearnset,
diff --git a/src/data/pokemon/nature_stats.h b/src/data/pokemon/nature_stats.h
deleted file mode 100644
index fcef2a0ac..000000000
--- a/src/data/pokemon/nature_stats.h
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_NATURE_STATS_H
-#define POKERUBY_NATURE_STATS_H
-
-const s8 gNatureStatTable[][5] = {
- // Atk Def Spd Sp.Atk Sp.Def
- { 0, 0, 0, 0, 0}, // Hardy
- { 1, -1, 0, 0, 0}, // Lonely
- { 1, 0, -1, 0, 0}, // Brave
- { 1, 0, 0, -1, 0}, // Adamant
- { 1, 0, 0, 0, -1}, // Naughty
- { -1, 1, 0, 0, 0}, // Bold
- { 0, 0, 0, 0, 0}, // Docile
- { 0, 1, -1, 0, 0}, // Relaxed
- { 0, 1, 0, -1, 0}, // Impish
- { 0, 1, 0, 0, -1}, // Lax
- { -1, 0, 1, 0, 0}, // Timid
- { 0, -1, 1, 0, 0}, // Hasty
- { 0, 0, 0, 0, 0}, // Serious
- { 0, 0, 1, -1, 0}, // Jolly
- { 0, 0, 1, 0, -1}, // Naive
- { -1, 0, 0, 1, 0}, // Modest
- { 0, -1, 0, 1, 0}, // Mild
- { 0, 0, -1, 1, 0}, // Quiet
- { 0, 0, 0, 0, 0}, // Bashful
- { 0, 0, 0, 1, -1}, // Rash
- { -1, 0, 0, 0, 1}, // Calm
- { 0, -1, 0, 0, 1}, // Gentle
- { 0, 0, -1, 0, 1}, // Sassy
- { 0, 0, 0, -1, 1}, // Careful
- { 0, 0, 0, 0, 0} // Quirky
-};
-
-#endif //POKERUBY_NATURE_STATS_H
diff --git a/src/data/pokemon/spinda_spots.h b/src/data/pokemon/spinda_spots.h
deleted file mode 100644
index d045e0734..000000000
--- a/src/data/pokemon/spinda_spots.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-
-//
-
-#ifndef POKERUBY_SPINDA_SPOTS_H
-#define POKERUBY_SPINDA_SPOTS_H
-
-const struct SpindaSpot gSpindaSpotGraphics[] = {
- {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")},
- {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")},
- {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")},
- {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
-};
-
-#endif //POKERUBY_SPINDA_SPOTS_H
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
index 02cd22d56..f14478863 100644
--- a/src/data/pokemon/tmhm_learnsets.h
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -1,431 +1,9393 @@
-//
-
-//
-
-#ifndef POKERUBY_TMHM_LEARNSETS_H
-#define POKERUBY_TMHM_LEARNSETS_H
-
-// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name.
-// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01,
-// while the most significant bit represents HM08.
-
-asm(
- ".align 2\n"
- ".global gTMHMLearnsets\n"
- "gTMHMLearnsets:\n"
-
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ??????????
- ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Bulbasaur
- ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Ivysaur
- ".8byte 0b0011100100000111100000100010000110001101010100011100110000\n" // Venusaur
- ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmander
- ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmeleon
- ".8byte 0b0010101110010111101010010011001110010100010100011000110011\n" // Charizard
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Squirtle
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Wartortle
- ".8byte 0b1110110000000111100000000011001110010100110111001001110101\n" // Blastoise
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Caterpie
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Metapod
- ".8byte 0b0001000000101111101000000010110100001111110100011000100000\n" // Butterfree
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Weedle
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Kakuna
- ".8byte 0b0010000100001111101000100011000100001101010100011000100000\n" // Beedrill
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgey
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgeotto
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Pidgeot
- ".8byte 0b0010000100001111100000001010101101110100110011111000100000\n" // Rattata
- ".8byte 0b0010100100001111100000001010101101110100110111111000110000\n" // Raticate
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Spearow
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Fearow
- ".8byte 0b0000100001001111110000100010001110010101110000011000100000\n" // Ekans
- ".8byte 0b0000100001001111110000100010001110010101110100011000100000\n" // Arbok
- ".8byte 0b0011100000000111100000001011001101110100111000001000100001\n" // Pikachu
- ".8byte 0b0011100000001111100000001011001101110100111100001000100001\n" // Raichu
- ".8byte 0b0010100100001111101101000011001110010100010000011000100001\n" // Sandshrew
- ".8byte 0b0010100100001111101101000011001110010100010100011000100001\n" // Sandslash
- ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidoran♀
- ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidorina
- ".8byte 0b0010110100001111111111111011101111110100110111111000110101\n" // Nidoqueen
- ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidoran♂
- ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidorino
- ".8byte 0b0010110100001111110111111011101111110100110111111000110101\n" // Nidoking
- ".8byte 0b0001100001000111100010011111111101111110111011011000101101\n" // Clefairy
- ".8byte 0b0001100001000111100010011111111101111110111111011000101101\n" // Clefable
- ".8byte 0b0000000010000111100010010010001100010110010000011000110000\n" // Vulpix
- ".8byte 0b0000000010000111100010010010001100010110010100011000110000\n" // Ninetales
- ".8byte 0b0001100001000111100010011111111101101110111011011000100101\n" // Jigglypuff
- ".8byte 0b0001100001000111100010011111111101101110111111011000100101\n" // Wigglytuff
- ".8byte 0b0000000001011111111000100010100100000101110000111000100000\n" // Zubat
- ".8byte 0b0000000001011111111000100010100100000101110100111000100000\n" // Golbat
- ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Oddish
- ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Gloom
- ".8byte 0b0001000100000111100000100010000100001101010100011100100000\n" // Vileplume
- ".8byte 0b0011000100001111101000100010001100001101010000011100100000\n" // Paras
- ".8byte 0b0011000100001111101000100010001100001101010100011100100000\n" // Parasect
- ".8byte 0b0001000000101111100000100010010100001101010000011000100000\n" // Venonat
- ".8byte 0b0001000000101111101000100010010100001101010100011000100000\n" // Venomoth
- ".8byte 0b0010000100001111101100100010001110000100010000011000100000\n" // Diglett
- ".8byte 0b0010000100001111101100100010001110000100010100011000100000\n" // Dugtrio
- ".8byte 0b0001000101001111111000001010101101110100110000111000100100\n" // Meowth
- ".8byte 0b0001000101001111111000001010101101110100110100111000110100\n" // Persian
- ".8byte 0b1111110000000111101000000011001100010100110011001001101101\n" // Psyduck
- ".8byte 0b1111110000000111101000000011001100010100110111001001101101\n" // Golduck
- ".8byte 0b0010100010001111101100000011001111110100110000111010100001\n" // Mankey
- ".8byte 0b0010100010001111101100000011001111110100110100111010100001\n" // Primeape
- ".8byte 0b0010100010001111101010010010001100010100010000011000110000\n" // Growlithe
- ".8byte 0b0010100010001111101010010010001100010100010100011000110000\n" // Arcanine
- ".8byte 0b1100010000001111100000000010011100000100110011001001100100\n" // Poliwag
- ".8byte 0b1110110000001111100000000011011110000100110011001001100101\n" // Poliwhirl
- ".8byte 0b1110110000001111100100000011011110000100110111001011100101\n" // Poliwrath
- ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Abra
- ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Kadabra
- ".8byte 0b0001000001101111110000001110110100010110111100111000101001\n" // Alakazam
- ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machop
- ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machoke
- ".8byte 0b0010100000001111100110010011001110000100110100011010100001\n" // Machamp
- ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Bellsprout
- ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Weepinbell
- ".8byte 0b0001000100001111100000100010000100001101010100011100100000\n" // Victreebel
- ".8byte 0b1100010100001111100000100010000100000101110011001001100100\n" // Tentacool
- ".8byte 0b1100010100001111100000100010000100000101110111001001100100\n" // Tentacruel
- ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Geodude
- ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Graveler
- ".8byte 0b0010100000000111100111010011001110000100010100011000110001\n" // Golem
- ".8byte 0b0000100010000111100010010010000100011100010000011000100000\n" // Ponyta
- ".8byte 0b0000100010000111100010010010000100011100010100011000100000\n" // Rapidash
- ".8byte 0b1001110000100111100010010010111110010110110011011001101100\n" // Slowpoke
- ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowbro
- ".8byte 0b0001000000000011100000001110000101100100110000011000100000\n" // Magnemite
- ".8byte 0b0001000000000011100000001110000101100100110100011000100000\n" // Magneton
- ".8byte 0b0000001100011111101000000010000100010100010000011000100000\n" // Farfetch'd
- ".8byte 0b0000001000011111101000000010000100000100010000011000100000\n" // Doduo
- ".8byte 0b0000001000011111111000000010000100000100010100111000100000\n" // Dodrio
- ".8byte 0b1100010000001111100000000010000100000110110011001001100100\n" // Seel
- ".8byte 0b1100010000001111100000000010000100000110110111001001100100\n" // Dewgong
- ".8byte 0b0000000000001111110110111010001101100101110000111000100000\n" // Grimer
- ".8byte 0b0010100000001111110110111011001101100101110100111000100001\n" // Muk
- ".8byte 0b1000010000000111100000000010000100000100110011001001100100\n" // Shellder
- ".8byte 0b1000010000000111110000000010000100000100110111001001100100\n" // Cloyster
- ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Gastly
- ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Haunter
- ".8byte 0b0010100001101111110000100011110101100101110100111000100001\n" // Gengar
- ".8byte 0b0010100000000111110101000010001110010100010000111000110000\n" // Onix
- ".8byte 0b0001000001101111110000000111110100000110111000111000101001\n" // Drowzee
- ".8byte 0b0001000001101111110000000111110100000110111100111000101001\n" // Hypno
- ".8byte 0b1010110100001111100100000010001100000100110011001001100100\n" // Krabby
- ".8byte 0b1010110100001111100100000010001100000100110111001001100100\n" // Kingler
- ".8byte 0b0001000000001011110000001010000101100100111000101000100000\n" // Voltorb
- ".8byte 0b0001000000001011110000001010000101100100111100101000100000\n" // Electrode
- ".8byte 0b0001100000101111100000100110010100001101011000011100100000\n" // Exeggcute
- ".8byte 0b0001100000101111100000100110010100001101011100011100100000\n" // Exeggutor
- ".8byte 0b0010100000001111101111010011001110010100010011011000100001\n" // Cubone
- ".8byte 0b0010100000001111101111010011001110010100010111011000100001\n" // Marowak
- ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonlee
- ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonchan
- ".8byte 0b0010110100001111100111011011101111111100110111011000100101\n" // Lickitung
- ".8byte 0b0001000000001111110010111010100101100100110000111000100000\n" // Koffing
- ".8byte 0b0001000000001111110010111010100101100100110100111000100000\n" // Weezing
- ".8byte 0b0010100000001111100111011010001111110100110011011000110000\n" // Rhyhorn
- ".8byte 0b0010110100001111100111011011001111110100110111011000110001\n" // Rhydon
- ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Chansey
- ".8byte 0b0011000100001111100000100010000100001101010100011100100000\n" // Tangela
- ".8byte 0b0010110100001111101111011011101111111100110111011001110101\n" // Kangaskhan
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Horsea
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seadra
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Goldeen
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seaking
- ".8byte 0b1101010000000011100000000110010101100100111011001001100100\n" // Staryu
- ".8byte 0b1101010000100011100000000110010101100100111111001001100100\n" // Starmie
- ".8byte 0b0001000001101111110000001111110101101110111100111000101001\n" // Mr. mime
- ".8byte 0b0010000100011111101000000010000100000100110100011000100000\n" // Scyther
- ".8byte 0b0001000000101111110000000111110100000100111111101001101101\n" // Jynx
- ".8byte 0b0011100000001111100000001011010101110100111100001000100001\n" // Electabuzz
- ".8byte 0b0010100000001111100010010011010100010100010100011000100001\n" // Magmar
- ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Pinsir
- ".8byte 0b0010110000000111100111011010000111111100110111011000100100\n" // Tauros
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Magikarp
- ".8byte 0b1110110000000111110011010010000111100100110111101001110100\n" // Gyarados
- ".8byte 0b1110110000000111100000001010010101110110110111001001110100\n" // Lapras
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Ditto
- ".8byte 0b0000000000000111100000000010101100010100110000011000100000\n" // Eevee
- ".8byte 0b1100010000000111100000000010101100010100110111011001110100\n" // Vaporeon
- ".8byte 0b0001000000000111100000001010101101110100110100011000110000\n" // Jolteon
- ".8byte 0b0000000010000111100010010010101100010100110100011000110000\n" // Flareon
- ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon
- ".8byte 0b1110010000001111100101000010000100000100110011001001100100\n" // Omanyte
- ".8byte 0b1110010000001111100101000010000100000100110111001001100100\n" // Omastar
- ".8byte 0b0110010000001111101101000010001100000101110011001001100100\n" // Kabuto
- ".8byte 0b1110010100001111101101000011001100000101110111001001100100\n" // Kabutops
- ".8byte 0b0010101000011111111111010010000110010100110100111000110010\n" // Aerodactyl
- ".8byte 0b0000110000000111100111011011110111101100110111011000100101\n" // Snorlax
- ".8byte 0b0010001000010011101001000110000100000100110111011001110100\n" // Articuno
- ".8byte 0b0011001000010011101001001010000101100100111100011000110000\n" // Zapdos
- ".8byte 0b0010001010010011101011010010000100000110110100011000110000\n" // Moltres
- ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dratini
- ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dragonair
- ".8byte 0b1110111100010111101111011011000111110110110111011001110111\n" // Dragonite
- ".8byte 0b0011100001100011111111011111110111111110111111111011101101\n" // Mewtwo
- ".8byte 0b1111111111111111111111111111111111111111111111111111111111\n" // Mew
- ".8byte 0b0001000100000111100000000110000100011111011000011100100000\n" // Chikorita
- ".8byte 0b0011100100000111100000000110000100011111011000011100100000\n" // Bayleef
- ".8byte 0b0011100100000111100000000110000110011111011100011100100000\n" // Meganium
- ".8byte 0b0000000110000111101010010010001100000100010000011000100000\n" // Cyndaquil
- ".8byte 0b0010100110000111101010010011001100000100010000011000110001\n" // Quilava
- ".8byte 0b0010100110000111101010010011001110000100010100011000110001\n" // Typhlosion
- ".8byte 0b1100010100000111101000000011001100010100110011001001100101\n" // Totodile
- ".8byte 0b1110110100000111101000000011001100010100110011001001110101\n" // Croconaw
- ".8byte 0b1110110100000111101000000011001110010100110111001001110111\n" // Feraligatr
- ".8byte 0b0000010100001111100000011011101100111100110001011000100101\n" // Sentret
- ".8byte 0b0010110100001111100000011011101101111100110111011000100101\n" // Furret
- ".8byte 0b0001001000011111101000000110110100000100110000011000100000\n" // Hoothoot
- ".8byte 0b0001001000011111101000000110110100000100110100011000100000\n" // Noctowl
- ".8byte 0b0001000000001111101000000111001100001111011000011000100001\n" // Ledyba
- ".8byte 0b0001000000001111101000000111001100001111011100011000100001\n" // Ledian
- ".8byte 0b0001000000001111100000100010011100001101010000011000100000\n" // Spinarak
- ".8byte 0b0001000000001111100000100010011100001101010100011000100000\n" // Ariados
- ".8byte 0b0000001001011111111000100010100100000101110100111000100000\n" // Crobat
- ".8byte 0b1101010000000111100000001010000101100100110011001001100100\n" // Chinchou
- ".8byte 0b1101010000000111100000001010000101100100110111001001100100\n" // Lanturn
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Pichu
- ".8byte 0b0001000000000111100010011110111100011110111000011000100100\n" // Cleffa
- ".8byte 0b0001000000000111100010011110111100001110111000011000100100\n" // Igglybuff
- ".8byte 0b0011000000000111100010011110110100001110111000011000100100\n" // Togepi
- ".8byte 0b0011001000010111101010011111110100001110111100011000100101\n" // Togetic
- ".8byte 0b0001000000111111101000000110110100001101111000011000101000\n" // Natu
- ".8byte 0b0001001000111111101000000110110100001101111100011000101000\n" // Xatu
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Mareep
- ".8byte 0b0011100000000111100000001011000101110100111000001000100001\n" // Flaaffy
- ".8byte 0b0011100000000111100000001011000101110100111100001000100001\n" // Ampharos
- ".8byte 0b0001000100000111100000100010000100001111010100011100100000\n" // Bellossom
- ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Marill
- ".8byte 0b1110110000000111100000000011001100010100110111001001100101\n" // Azumarill
- ".8byte 0b0010100000001111100101000011001110000100010000111000101001\n" // Sudowoodo
- ".8byte 0b1110110000001111100000000011011110000100110111001001100101\n" // Politoed
- ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Hoppip
- ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Skiploom
- ".8byte 0b0001000000000111101000000010000100001101010100011100100000\n" // Jumpluff
- ".8byte 0b0010100101001111101000001011101101111100110000111000100101\n" // Aipom
- ".8byte 0b0001000100000111100000100010000100001111011000011100100000\n" // Sunkern
- ".8byte 0b0001000100000111100000100010000100001111011100011100100000\n" // Sunflora
- ".8byte 0b0001000000011111101000000010110100001101010000011000100000\n" // Yanma
- ".8byte 0b1111010000000111100001100010001110010100110011001001100100\n" // Wooper
- ".8byte 0b1111110000000111100101100011001110010100110111001001100101\n" // Quagsire
- ".8byte 0b0001000100100111100000000110111100010100111100011000101000\n" // Espeon
- ".8byte 0b0001000101000111110000000010111100010100110100111000100000\n" // Umbreon
- ".8byte 0b0000001001011111111000000010100100000100110000111000101000\n" // Murkrow
- ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowking
- ".8byte 0b0001000001101111111000001010110101100100110000111000101000\n" // Misdreavus
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Unown
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wobbuffet
- ".8byte 0b0011100000101111100000001110110111110100111000011000101000\n" // Girafarig
- ".8byte 0b0010100000000111100001000110001110001101011000011000100000\n" // Pineco
- ".8byte 0b0010100000000111100001000110001110001101011100011000100000\n" // Forretress
- ".8byte 0b0010100000001111100110011010101111111100110011011000101100\n" // Dunsparce
- ".8byte 0b0010100100011111101101100010001110010100110000011000100000\n" // Gligar
- ".8byte 0b0010100100000111110101000010001110010100010100111000110000\n" // Steelix
- ".8byte 0b0010100010001111110010111011101111101100110000111010110101\n" // Snubbull
- ".8byte 0b0010100010001111110110111011101111111100110100111010110101\n" // Granbull
- ".8byte 0b1100010000000111100000101010100100000100110011001001100100\n" // Qwilfish
- ".8byte 0b0010100100011111101001000010000100000100110100011000100000\n" // Scizor
- ".8byte 0b0011100000000111100101100010001110000110010000011000100000\n" // Shuckle
- ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Heracross
- ".8byte 0b0010110101001111111000000011101100010100110011111001101001\n" // Sneasel
- ".8byte 0b0010100100001111111000000011001110000100110000111010110001\n" // Teddiursa
- ".8byte 0b0010100100001111111100000011001110000100110100111010110001\n" // Ursaring
- ".8byte 0b0010000010000111100010010110000100000100011000011000100000\n" // Slugma
- ".8byte 0b0010100010000111100111010110000110000100011100011000100000\n" // Magcargo
- ".8byte 0b0010100000000111100101000110001110000100111011001001110000\n" // Swinub
- ".8byte 0b0010100000000111100101000110001110000100111111001001110000\n" // Piloswine
- ".8byte 0b0010110000000111100101000110111110000110111011011001101100\n" // Corsola
- ".8byte 0b1100010000001111100010010010010100000100110111011000100100\n" // Remoraid
- ".8byte 0b1100010000001111100010110010010100000100110111011100100100\n" // Octillery
- ".8byte 0b0000001000001111101000000010000100000100110011001001100101\n" // Delibird
- ".8byte 0b1100010000000111101000000010000110000100110011001001100100\n" // Mantine
- ".8byte 0b0010001100011111111001000010000100000100010000111000110000\n" // Skarmory
- ".8byte 0b0010000011001111110010110010100100011100010000111000110000\n" // Houndour
- ".8byte 0b0010100011001111110010110010100100011100010100111000110000\n" // Houndoom
- ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Kingdra
- ".8byte 0b0010100000000111100101000010000110010100010000011000110000\n" // Phanpy
- ".8byte 0b0010100000000111100101000010000110010100010100011000110000\n" // Donphan
- ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon2
- ".8byte 0b0001000000101111100000001110110111111100111000011000111000\n" // Stantler
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Smeargle
- ".8byte 0b0010100000001111100000000011000110000100110000011010100000\n" // Tyrogue
- ".8byte 0b0010100000001111100001000011001110000100110000011010100000\n" // Hitmontop
- ".8byte 0b0001000000101111100000000110110100000100111011001001101100\n" // Smoochum
- ".8byte 0b0011000000001111100000001011010101100100111000001000100001\n" // Elekid
- ".8byte 0b0010000000001111100010010011010100010100010000011000100001\n" // Magby
- ".8byte 0b0010110000000111100101001011100111111100110111011000100101\n" // Miltank
- ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Blissey
- ".8byte 0b0011100100000011100001001110001101110100110100011000111000\n" // Raikou
- ".8byte 0b0011100100000011100011010110001100011100110100011000111000\n" // Entei
- ".8byte 0b1110010100000011100001000110001100010100110111011001111100\n" // Suicune
- ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Larvitar
- ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Pupitar
- ".8byte 0b0010110100000111111111011011001111110100110111111000110111\n" // Tyranitar
- ".8byte 0b1110111000110011101001001110110111110111111111011001111100\n" // Lugia
- ".8byte 0b0011101010010011101011011110110111101111111100011000111000\n" // Ho-Oh
- ".8byte 0b0001000100100011101001001110110100001111111100011000101100\n" // Celebi
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?
- ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Treecko
- ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Grovyle
- ".8byte 0b0011100100000111101100000011001110011111010100011100110011\n" // Sceptile
- ".8byte 0b0010100110000111101110010010001100000100010000011000100000\n" // Torchic
- ".8byte 0b0010100110000111101110010011001100000100010000011010100001\n" // Combusken
- ".8byte 0b0010100110000111101110010011001110000100010100011010110001\n" // Blaziken
- ".8byte 0b1110110000000111100100000010001100010100110011001001100100\n" // Mudkip
- ".8byte 0b1110110000000111100100000010001110010100110011001001100100\n" // Marshtomp
- ".8byte 0b1110110000000111100100000011001110010100110111001001110101\n" // Swampert
- ".8byte 0b0010000001001111110000000010101100010100110000111000110000\n" // Poochyena
- ".8byte 0b0010100001001111110000000010101100010100110100111000110000\n" // Mightyena
- ".8byte 0b0010010100001111100000001010101101110100110011011000100100\n" // Zigzagoon
- ".8byte 0b0010110100001111100000001010101101110100110111011000110100\n" // Linoone
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wurmple
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Silcoon
- ".8byte 0b0001000000001111101000000010110100001111010100011000100000\n" // Beautifly
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Cascoon
- ".8byte 0b0001000000001111101000100010110100001101011100011000100000\n" // Dustox
- ".8byte 0b0001010000001111100000000010000100001101110011011101100100\n" // Lotad
- ".8byte 0b1111110000001111100000000011000100001101110011011101100100\n" // Lombre
- ".8byte 0b1111110000001111100000000011000100001101110111011101100101\n" // Ludicolo
- ".8byte 0b0011000000000111100000000010101100001101010000011100100000\n" // Seedot
- ".8byte 0b0011100100001111110100000011101100001101010100011100100000\n" // Nuzleaf
- ".8byte 0b0011100100001111111100000011101100001101010100011100100000\n" // Shiftry
- ".8byte 0b0001000100000011101001000010101100001101010000011000100000\n" // Nincada
- ".8byte 0b0001000100001111101001000010101100001101010100011000100000\n" // Ninjask
- ".8byte 0b0001000100001011101001000010101100001101010100011000100000\n" // Shedinja
- ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Taillow
- ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Swellow
- ".8byte 0b0001000001000111100000100010000100001111010000011100100000\n" // Shroomish
- ".8byte 0b0011100101000111100000100011000100011111010100011110100001\n" // Breloom
- ".8byte 0b0011100001101111100100001011111100000110110000011000101101\n" // Spinda
- ".8byte 0b0000001000011111101000001010000100000100110011001001100100\n" // Wingull
- ".8byte 0b0000011000011111101000001010000100000100110111001001100100\n" // Pelipper
- ".8byte 0b0001000000001111100000000010100100001101110011011000100100\n" // Surskit
- ".8byte 0b0001000000001111101000000010100100001101110111011000100100\n" // Masquerain
- ".8byte 0b1110110000000111100100000010000110000100110011001001110100\n" // Wailmer
- ".8byte 0b1110110000000111100100000010000110000100110111001001110100\n" // Wailord
- ".8byte 0b0001000000000111100000001010101101111110110011011000101100\n" // Skitty
- ".8byte 0b0011100000000111100000001010101101111110110111011000101100\n" // Delcatty
- ".8byte 0b0011100101101111101110011011101101111100110011011000100101\n" // Kecleon
- ".8byte 0b0001000000100011100101000110111110001100111001011000100000\n" // Baltoy
- ".8byte 0b0011100000100011100101000110111110001100111101011000100000\n" // Claydol
- ".8byte 0b0010100000000111110101001010000111100100010000111000100000\n" // Nosepass
- ".8byte 0b0010100010000111100010110010000100010100010000011000100000\n" // Torkoal
- ".8byte 0b0011000101001111111100001011111100000100110000111000101101\n" // Sableye
- ".8byte 0b1100010000000111100101000010000110000100110011001001100100\n" // Barboach
- ".8byte 0b1110110000000111100101000010000110000100110111001001100100\n" // Whiscash
- ".8byte 0b1100010000000111100000000010000100000110110011001001100100\n" // Luvdisc
- ".8byte 0b0110110100000111101100100011001100000100110011101001100100\n" // Corphish
- ".8byte 0b1110110100000111101100100011001100000100110111101001100100\n" // Crawdaunt
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Feebas
- ".8byte 0b1100010000000111100000000010000100010110110111001001100100\n" // Milotic
- ".8byte 0b1100010000001111110000000010000100000100110011101001100100\n" // Carvanha
- ".8byte 0b1110110000001111110100000010000110000100110111101001110100\n" // Sharpedo
- ".8byte 0b0010100000000111100101000010001110001101010100011000100000\n" // Trapinch
- ".8byte 0b0010101000010111100101000010001110001101010100011000100000\n" // Vibrava
- ".8byte 0b0010101000010111100111010010001110011101010100011000100010\n" // Flygon
- ".8byte 0b0010110000000111100100000011001110000100110000011010100001\n" // Makuhita
- ".8byte 0b0010110000000111100100000011001110000100110100011010100001\n" // Hariyama
- ".8byte 0b0001100000001111100000001010000101110100110000001000110000\n" // Electrike
- ".8byte 0b0001100000001111100000001010000101110100110100001000110000\n" // Manectric
- ".8byte 0b0010100010000111100111010010001110000100010000011000100000\n" // Numel
- ".8byte 0b0010100010000111100111010010001110000100010100011000110000\n" // Camerupt
- ".8byte 0b1110110000000111100100000010000110010100110011001001100100\n" // Spheal
- ".8byte 0b1110110000000111100100000010000110010100110011001001110100\n" // Sealeo
- ".8byte 0b1110110000000111100100000010000110010100110111001001110100\n" // Walrein
- ".8byte 0b0001000100000111100001000010000100001101010000011100100001\n" // Cacnea
- ".8byte 0b0001100100000111100001000010000100001101010100011100100001\n" // Cacturne
- ".8byte 0b0001000000000111100000000010100100000110111011001001100100\n" // Snorunt
- ".8byte 0b0001000000000111110000000010100110000110111111101001100100\n" // Glalie
- ".8byte 0b0001000000100011100101000110110110000110111101001000101000\n" // Lunatone
- ".8byte 0b0001000010100011100111010110110110001110011100011000101000\n" // Solrock
- ".8byte 0b0100010000000111100000000010000100010100110011001001100100\n" // Azurill
- ".8byte 0b0001000001101111110000001110110100010100111000111000101000\n" // Spoink
- ".8byte 0b0001000001101111110000001110110100010100111100111000101001\n" // Grumpig
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Plusle
- ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Minun
- ".8byte 0b0010100000000111110111110011000100001100110101111000100001\n" // Mawile
- ".8byte 0b0011100000000111100100000111110100000100111000011010101001\n" // Meditite
- ".8byte 0b0011100000000111100100000111110100000100111100011010101001\n" // Medicham
- ".8byte 0b0000001000011111101000000010000100001110110001011000100000\n" // Swablu
- ".8byte 0b0010001000011111101010010010000110011110110101011000110010\n" // Altaria
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wynaut
- ".8byte 0b0001000001101111110000000010110100000100110011111000101000\n" // Duskull
- ".8byte 0b0011100001101111110100000010110110000100110111111000101001\n" // Dusclops
- ".8byte 0b0001000100000111100000100010100100001101010000011100100000\n" // Roselia
- ".8byte 0b0010100100000111101010011011100101101100110011011010100101\n" // Slakoth
- ".8byte 0b0010100100000111101010011011100111101100110011111010110101\n" // Vigoroth
- ".8byte 0b0010100100000111101010011011100111101100110111111010110101\n" // Slaking
- ".8byte 0b0010100001000111100000101010100100001101110001011100100100\n" // Gulpin
- ".8byte 0b0010100001000111100000101010100100001101110101011100100100\n" // Swalot
- ".8byte 0b0011101100010111101000000010000110001111010100011100110000\n" // Tropius
- ".8byte 0b0000000000000111100010011010100100001100110011011000110100\n" // Whismur
- ".8byte 0b0010100010000111110010011011100110001100110011111000110100\n" // Loudred
- ".8byte 0b0010100010000111110010011011100110001100110111111000110100\n" // Exploud
- ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Clamperl
- ".8byte 0b1100010001000111100100000010000100000100110111001001100100\n" // Huntail
- ".8byte 0b1100010000000111100000000010110100000110110111001001100100\n" // Gorebyss
- ".8byte 0b0011100101001111111011011010100101110100110111111001101100\n" // Absol
- ".8byte 0b0001000001101111110000001010110101100100110000111000101000\n" // Shuppet
- ".8byte 0b0001000001101111110000001010110101100100110100111000101000\n" // Banette
- ".8byte 0b0010100001001111100000110010001110010101110000111000100000\n" // Seviper
- ".8byte 0b0010100000001111101010011011101101111101110011111000110101\n" // Zangoose
- ".8byte 0b1110010000000111100101000010000110000110110111001001101100\n" // Relicanth
- ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Aron
- ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Lairon
- ".8byte 0b0010110100000111101111011011001111111100110111111000110111\n" // Aggron
- ".8byte 0b0001000000001111100011011010100101101100110011011001100100\n" // Castform
- ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Volbeat
- ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Illumise
- ".8byte 0b0000000000000111100001100010000100001101010000011100100000\n" // Lileep
- ".8byte 0b0010100000000111100101100010000110001101010100011100100000\n" // Cradily
- ".8byte 0b0010000100000111101101000011001100000100010000011000100100\n" // Anorith
- ".8byte 0b0010100100000111101101000011001110010100010100011000100100\n" // Armaldo
- ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Ralts
- ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Kirlia
- ".8byte 0b0001000001101111110000001110110100100110111100111000101000\n" // Gardevoir
- ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Bagon
- ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Shelgon
- ".8byte 0b0010101100010111101110010011000110010100110100011000110010\n" // Salamence
- ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Beldum
- ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metang
- ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metagross
- ".8byte 0b0010100000000011100101001011001111100110010100011000100001\n" // Regirock
- ".8byte 0b0010100000000011100000001011000111100110110111001001100001\n" // Regice
- ".8byte 0b0010100000000011101101001011000111100110110100011000100001\n" // Registeel
- ".8byte 0b1110110000000011100100001011000111100110110111001001111100\n" // Kyogre
- ".8byte 0b0010100110000011101111011011001111111110010100011010110010\n" // Groudon
- ".8byte 0b1110111010000011101011011011000111111100110111011010110110\n" // Rayquaza
- ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latias
- ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latios
- ".8byte 0b0001000000100011101001001110110101100110111100011000101100\n" // Jirachi
- ".8byte 0b0011100101100011111100001111110101101110111101111000101101\n" // Deoxys
- ".8byte 0b0001000001100111110000001110110100000110111000111000101000\n" // Chimecho
-);
-
-#endif //POKERUBY_TMHM_LEARNSETS_H
+#ifndef GUARD_TMHM_LEARNSETS_H
+#define GUARD_TMHM_LEARNSETS_H
+
+#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)}
+#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH))
+
+// 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 .
+const u32 gTMHMLearnsets[][2] =
+{
+ [SPECIES_NONE] = TMHM_LEARNSET(0),
+
+ [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CATERPIE] = TMHM_LEARNSET(0),
+
+ [SPECIES_METAPOD] = TMHM_LEARNSET(0),
+
+ [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEDLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_KAKUNA] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)),
+
+ [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)),
+
+ [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGIKARP] = TMHM_LEARNSET(0),
+
+ [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DITTO] = TMHM_LEARNSET(0),
+
+ [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)),
+
+ [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)),
+
+ [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)),
+
+ [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_UNOWN] = TMHM_LEARNSET(0),
+
+ [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0),
+
+ [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SMEARGLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0),
+
+ [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0),
+
+ [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WURMPLE] = TMHM_LEARNSET(0),
+
+ [SPECIES_SILCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CASCOON] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)),
+
+ [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)),
+
+ [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)),
+
+ [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM02_FLY)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WYNAUT] = TMHM_LEARNSET(0),
+
+ [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)),
+
+ [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM09_BULLET_SEED)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM19_GIGA_DRAIN)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM46_THIEF)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_BELDUM] = TMHM_LEARNSET(0),
+
+ [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM36_SLUDGE_BOMB)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM07_HAIL)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM28_DIG)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM08_BULK_UP)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM14_BLIZZARD)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM23_IRON_TAIL)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM35_FLAMETHROWER)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM38_FIRE_BLAST)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM50_OVERHEAT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM06_ROCK_SMASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM05_ROAR)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM26_EARTHQUAKE)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM47_STEEL_WING)
+ | TMHM(HM01_CUT)
+ | TMHM(HM02_FLY)
+ | TMHM(HM03_SURF)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM07_WATERFALL)
+ | TMHM(HM08_DIVE)),
+
+ [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM37_SANDSTORM)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(HM05_FLASH)),
+
+ [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
+ | TMHM(TM03_WATER_PULSE)
+ | TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM13_ICE_BEAM)
+ | TMHM(TM15_HYPER_BEAM)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM24_THUNDERBOLT)
+ | TMHM(TM25_THUNDER)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM31_BRICK_BREAK)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM39_ROCK_TOMB)
+ | TMHM(TM40_AERIAL_ACE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM01_CUT)
+ | TMHM(HM04_STRENGTH)
+ | TMHM(HM05_FLASH)
+ | TMHM(HM06_ROCK_SMASH)),
+
+ [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ | TMHM(TM06_TOXIC)
+ | TMHM(TM10_HIDDEN_POWER)
+ | TMHM(TM11_SUNNY_DAY)
+ | TMHM(TM12_TAUNT)
+ | TMHM(TM16_LIGHT_SCREEN)
+ | TMHM(TM17_PROTECT)
+ | TMHM(TM18_RAIN_DANCE)
+ | TMHM(TM20_SAFEGUARD)
+ | TMHM(TM21_FRUSTRATION)
+ | TMHM(TM27_RETURN)
+ | TMHM(TM29_PSYCHIC)
+ | TMHM(TM30_SHADOW_BALL)
+ | TMHM(TM32_DOUBLE_TEAM)
+ | TMHM(TM33_REFLECT)
+ | TMHM(TM34_SHOCK_WAVE)
+ | TMHM(TM41_TORMENT)
+ | TMHM(TM42_FACADE)
+ | TMHM(TM43_SECRET_POWER)
+ | TMHM(TM44_REST)
+ | TMHM(TM45_ATTRACT)
+ | TMHM(TM48_SKILL_SWAP)
+ | TMHM(TM49_SNATCH)
+ | TMHM(HM05_FLASH)),
+
+};
+
+#endif // GUARD_TMHM_LEARNSETS_H
diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c
index 08fd5cd18..b6053715a 100644
--- a/src/engine/clear_save_data_menu.c
+++ b/src/engine/clear_save_data_menu.c
@@ -73,7 +73,7 @@ static void Task_ProcessMenuInput(u8 taskId)
static void Task_ClearSaveData(u8 taskId)
{
- ClearSaveData();
+ Save_EraseAllData();
DestroyTask(taskId);
SetMainCallback2(CB2_SoftReset);
}
diff --git a/src/engine/link.c b/src/engine/link.c
index 34016d607..ec94295d7 100644
--- a/src/engine/link.c
+++ b/src/engine/link.c
@@ -409,7 +409,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.newKeys & START_BUTTON)
SetSuppressLinkErrorMessage(TRUE);
if (gMain.newKeys & R_BUTTON)
- TrySavingData(LINK_SAVE);
+ Save_WriteData(SAVE_LINK);
if (gMain.newKeys & SELECT_BUTTON)
sub_800832C();
if (gLinkTestDebugValuesEnabled)
diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c
index a0b8b7020..5a3f55b29 100644
--- a/src/engine/main_menu.c
+++ b/src/engine/main_menu.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#include "main_menu.h"
#include "data2.h"
#include "decompress.h"
@@ -13,9 +15,8 @@
#include "overworld.h"
#include "rtc.h"
#include "save_menu_util.h"
-#include "constants/songs.h"
+#include "save.h"
#include "sound.h"
-#include "constants/species.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
@@ -28,8 +29,6 @@
extern struct PaletteFadeControl gPaletteFade;
-extern u16 gSaveFileStatus;
-
extern const u8 gBirchSpeech_Welcome[];
extern const u8 gBirchSpeech_ThisIsPokemon[];
extern const u8 gBirchSpeech_WorldInhabitedByPokemon[];
@@ -284,12 +283,11 @@ void Task_MainMenuCheckSave(u8 taskId)
switch (gSaveFileStatus)
{
- case 1:
+ case SAVE_STATUS_OK:
if (IsMysteryGiftEnabled() == TRUE)
gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
-
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
case 2:
@@ -300,7 +298,7 @@ void Task_MainMenuCheckSave(u8 taskId)
gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
break;
- case 255:
+ case SAVE_STATUS_ERROR:
Menu_DrawStdWindowFrame(2, 14, 27, 19);
MenuPrintMessage(gSaveFileCorruptMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
@@ -313,12 +311,12 @@ void Task_MainMenuCheckSave(u8 taskId)
else
gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
break;
- case 0:
+ case SAVE_STATUS_EMPTY:
default:
gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
- case 4:
+ case SAVE_STATUS_NO_FLASH:
Menu_DrawStdWindowFrame(2, 14, 27, 19);
MenuPrintMessage(gBoardNotInstalledMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index b7b7c047e..8fad563e6 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -289,7 +289,7 @@ static void CB2_MysteryEventMenu(void)
unkVal = RunMysteryEventScript(gSharedMem);
CpuFill32(0, gSharedMem, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal))
- TrySavingData(NORMAL_SAVE);
+ Save_WriteData(SAVE_NORMAL);
gMain.state++;
break;
case 12:
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index a8b49a8eb..c7d45e929 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -576,7 +576,7 @@ void Task_ResetRtcScreen(u8 taskId)
}
break;
case 4:
- if (TrySavingData(0) == TRUE)
+ if (Save_WriteData(0) == SAVE_STATUS_OK)
{
ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted);
PlaySE(SE_PINPON);
diff --git a/src/engine/save.c b/src/engine/save.c
index d5de2e408..be907edcc 100644
--- a/src/engine/save.c
+++ b/src/engine/save.c
@@ -4,55 +4,132 @@
#include "save.h"
#include "load_save.h"
#include "overworld.h"
+#include "pokemon.h"
#include "save_failed_screen.h"
#include "ewram.h"
-#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1)
-#define GETCHUNKSIZE(chunk, n) ((sizeof(chunk) - (0xF80 * (n - 1))) >= 0xF80 ? 0xF80 : (sizeof(chunk) - (0xF80 * (n - 1))))
-#define GETBLOCKOFFSET(n) (0xF80 * (n - 1))
-#define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum.
+#define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use
-u16 gLastWrittenSector;
-u32 gLastSaveCounter;
+//#define TOTAL_FLASH_SECTORS ((ARRAY_COUNT(sSaveBlockChunks) * 2) + (ARRAY_COUNT(sHallOfFameChunks) * 2)) // there are 2 slots, so double each array count and get the sum.
+#define TOTAL_FLASH_SECTORS 32
+
+struct SaveBlockChunk
+{
+ u8 *data;
+ u16 size;
+};
+
+struct SaveSector
+{
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 signature;
+ u32 counter;
+}; // size is 0x1000
+
+// headless save section?
+struct UnkSaveSection
+{
+ u8 data[0xFF4];
+ u32 signature;
+}; // size is 0xFF8
+
+static u8 WriteSingleChunk(u16, const struct SaveBlockChunk *);
+static u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
+static u8 TryWriteSector(u8, u8 *);
+static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *location);
+static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *location);
+static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_81255B8(u16, const struct SaveBlockChunk *location);
+static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *location);
+static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *location);
+static u8 sub_81258BC(u16, const struct SaveBlockChunk *location);
+static u8 GetSaveValidStatus(const struct SaveBlockChunk *location);
+static u8 ReadSomeUnknownSectorAndVerify(u8 a1, u8 *data, u16 size);
+static u8 DoReadFlashWholeSection(u8, struct SaveSector *);
+static u16 CalculateChecksum(void *, u16);
+bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
+u8 unref_sub_8125FA0(void);
+u8 unref_sub_8125FF0(u8 *data, u16 size);
+u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
+u8 unref_sub_8126080(u8 sector, u8 *data);
+
+// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
+u16 gFirstSaveSector;
+u32 gPrevSaveCounter;
u16 gLastKnownGoodSector;
u32 gDamagedSaveSectors;
u32 gSaveCounter;
-struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
+struct SaveSector *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
u16 gUnknown_03005EB4;
u16 gSaveFileStatus;
u32 gGameContinueCallback;
-extern struct PokemonStorage gPokemonStorage;
-
static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused
-const struct SaveSectionLocation gSaveSectionLocations[] =
-{
- {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock1, 1)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gSaveBlock1, 2)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gSaveBlock1, 3)},
- {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gSaveBlock1, 4)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gPokemonStorage, 1)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gPokemonStorage, 2)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gPokemonStorage, 3)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gPokemonStorage, 4)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(5), GETCHUNKSIZE(gPokemonStorage, 5)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(6), GETCHUNKSIZE(gPokemonStorage, 6)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(7), GETCHUNKSIZE(gPokemonStorage, 7)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(8), GETCHUNKSIZE(gPokemonStorage, 8)},
- {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(9), GETCHUNKSIZE(gPokemonStorage, 9)}
+// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer
+#define SECTOR_DATA_SIZE 3968
+#define SECTOR_FOOTER_SIZE 128
+
+/*
+ * Sector Layout:
+ *
+ * Sectors 0 - 13: Save Slot 1
+ * Sectors 14 - 27: Save Slot 2
+ * Sectors 28 - 29: Hall of Fame
+ * Sectors 30 - 31: e-Reader battle tower data, maybe?
+ *
+ * There are two save slots for saving the player's game data. We alternate between
+ * them each time the game is saved, so that if the current save slot is corrupt,
+ * we can load the previous one. We also rotate the sectors in each save slot
+ * so that the same data is not always being written to the same sector. This
+ * might be done to reduce wear on the flash memory, but I'm not sure, since all
+ * 14 sectors get written anyway.
+ */
+
+#define HALL_OF_FAME_SECTOR 28
+
+#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot
+#define NUM_HALL_OF_FAME_SECTORS 2
+
+// Divide save blocks into individual chunks to be written to flash sectors
+
+#define SAVEBLOCK_CHUNK(structure, chunkNum) \
+{ \
+ (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \
+ min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
+} \
+
+static const struct SaveBlockChunk sSaveBlockChunks[] =
+{
+ SAVEBLOCK_CHUNK(gSaveBlock2, 0),
+
+ SAVEBLOCK_CHUNK(gSaveBlock1, 0),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 1),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 2),
+ SAVEBLOCK_CHUNK(gSaveBlock1, 3),
+
+ SAVEBLOCK_CHUNK(gPokemonStorage, 0),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 1),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 2),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 3),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 4),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 5),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 6),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 7),
+ SAVEBLOCK_CHUNK(gPokemonStorage, 8),
};
-const struct SaveSectionLocation gHallOfFameSaveSectionLocations[] =
+static const struct SaveBlockChunk sHallOfFameChunks[] =
{
- {((u8 *) eHallOfFame) + GETBLOCKOFFSET(1), GETCHUNKSIZE(struct HallOfFame, 1)}, // eHallOfFame is not a proper sym, so the struct must be used.
- {((u8 *) eHallOfFame) + GETBLOCKOFFSET(2), GETCHUNKSIZE(struct HallOfFame, 2)}
+ SAVEBLOCK_CHUNK(*eHallOfFame, 0),
+ SAVEBLOCK_CHUNK(*eHallOfFame, 1),
};
-const u8 gFlashSectors[] = { 0x1E, 0x1F };
-
-void ClearSaveData(void)
+void Save_EraseAllData(void)
{
u16 i;
@@ -60,27 +137,34 @@ void ClearSaveData(void)
EraseFlashSector(i);
}
-void ResetSaveCounters(void)
+void Save_ResetSaveCounters(void)
{
gSaveCounter = 0;
- gLastWrittenSector = 0;
+ gFirstSaveSector = 0;
gDamagedSaveSectors = 0;
}
-bool32 SetDamagedSectorBits(u8 op, u8 bit)
+enum
+{
+ SECTOR_DAMAGED,
+ SECTOR_OK,
+ SECTOR_CHECK, // unused
+};
+
+static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum)
{
bool32 retVal = FALSE;
switch (op)
{
- case ENABLE:
- gDamagedSaveSectors |= (1 << bit);
+ case SECTOR_DAMAGED:
+ gDamagedSaveSectors |= (1 << sectorNum);
break;
- case DISABLE:
- gDamagedSaveSectors &= ~(1 << bit);
+ case SECTOR_OK:
+ gDamagedSaveSectors &= ~(1 << sectorNum);
break;
- case CHECK: // unused
- if (gDamagedSaveSectors & (1 << bit))
+ case SECTOR_CHECK: // unused
+ if (gDamagedSaveSectors & (1 << sectorNum))
retVal = TRUE;
break;
}
@@ -88,163 +172,166 @@ bool32 SetDamagedSectorBits(u8 op, u8 bit)
return retVal;
}
-u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location)
+// If chunkId is 0xFFFF, this function will write all of the chunks pointed to by 'chunks'.
+// Otherwise, it will write a single chunk with the given 'chunkId'.
+static u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u32 retVal;
u16 i;
gFastSaveSection = eSaveSection;
- if (a1 != 0xFFFF) // for link
+ if (chunkId != 0xFFFF) // write single chunk
{
- retVal = HandleWriteSector(a1, location);
+ retVal = WriteSingleChunk(chunkId, chunks);
}
- else
+ else // write all chunks
{
- gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write.
- gLastSaveCounter = gSaveCounter;
- gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations);
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
gSaveCounter++;
- retVal = 1;
+ retVal = SAVE_STATUS_OK;
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
- HandleWriteSector(i, location);
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
+ WriteSingleChunk(i, chunks);
+ // Check for any bad sectors
if (gDamagedSaveSectors != 0) // skip the damaged sector.
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
}
return retVal;
}
-u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u16 i;
- u16 sector;
- u8 *data;
- u16 size;
+ u16 sectorNum;
+ u8 *chunkData;
+ u16 chunkSize;
- sector = a1 + gLastWrittenSector;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sectorNum = chunkId + gFirstSaveSector;
+ sectorNum %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
- data = location[a1].data;
- size = location[a1].size;
+ chunkData = chunks[chunkId].data;
+ chunkSize = chunks[chunkId].size;
// clear save section.
- for (i = 0; i < sizeof(struct SaveSection); i++)
- ((char *)gFastSaveSection)[i] = 0;
+ for (i = 0; i < sizeof(struct SaveSector); i++)
+ ((u8 *)gFastSaveSection)[i] = 0;
- gFastSaveSection->id = a1;
- gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
gFastSaveSection->counter = gSaveCounter;
+ for (i = 0; i < chunkSize; i++)
+ gFastSaveSection->data[i] = chunkData[i];
+ gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize);
- for (i = 0; i < size; i++)
- gFastSaveSection->data[i] = data[i];
-
- gFastSaveSection->checksum = CalculateChecksum(data, size);
- return TryWriteSector(sector, gFastSaveSection->data);
+ return TryWriteSector(sectorNum, gFastSaveSection->data);
}
-u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size)
+static u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size)
{
u16 i;
- struct SaveSection *section = eSaveSection;
+ struct SaveSector *section = eSaveSection;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)section)[i] = 0;
- section->security = UNKNOWN_CHECK_VALUE;
-
+ section->signature = FILE_SIGNATURE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
-
section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used.
- return TryWriteSector(sector, section->data);
+
+ return TryWriteSector(sectorNum, section->data);
}
-u8 TryWriteSector(u8 sector, u8 *data)
+static u8 TryWriteSector(u8 sectorNum, u8 *data)
{
- if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged?
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged?
{
- SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits.
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits.
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now.
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now.
+ return SAVE_STATUS_OK;
}
}
-u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused
+static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused
{
gFastSaveSection = eSaveSection;
- gLastKnownGoodSector = gLastWrittenSector;
- gLastSaveCounter = gSaveCounter;
- gLastWrittenSector++;
- gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations);
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
+ gFirstSaveSector++;
+ gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT;
gSaveCounter++;
gUnknown_03005EB4 = 0;
gDamagedSaveSectors = 0;
return 0;
}
-u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused
+static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) // chunk is unused
{
gFastSaveSection = eSaveSection;
- gLastKnownGoodSector = gLastWrittenSector;
- gLastSaveCounter = gSaveCounter;
+ gLastKnownGoodSector = gFirstSaveSector;
+ gPrevSaveCounter = gSaveCounter;
gUnknown_03005EB4 = 0;
gDamagedSaveSectors = 0;
return 0;
}
-u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *chunk)
{
u8 retVal;
if (gUnknown_03005EB4 < a1 - 1)
{
- retVal = 1;
- HandleWriteSector(gUnknown_03005EB4, location);
+ retVal = SAVE_STATUS_OK;
+ WriteSingleChunk(gUnknown_03005EB4, chunk);
gUnknown_03005EB4++;
if (gDamagedSaveSectors)
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
}
else
{
- retVal = 0xFF;
+ retVal = SAVE_STATUS_ERROR;
}
return retVal;
}
-u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *chunk)
{
- u8 retVal = 1;
+ u8 retVal = SAVE_STATUS_OK;
- sub_81255B8(a1 - 1, location);
+ sub_81255B8(a1 - 1, chunk);
if (gDamagedSaveSectors)
{
- retVal = 0xFF;
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
+ retVal = SAVE_STATUS_ERROR;
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
}
return retVal;
}
-u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_81255B8(u16 chunkId, const struct SaveBlockChunk *chunks)
{
u16 i;
u16 sector;
@@ -252,19 +339,21 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
u16 size;
u8 status;
- sector = a1 + gLastWrittenSector;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sector = chunkId + gFirstSaveSector;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
- data = location[a1].data;
- size = location[a1].size;
+ data = chunks[chunkId].data;
+ size = chunks[chunkId].size;
// clear temp save section.
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)gFastSaveSection)[i] = 0;
- gFastSaveSection->id = a1;
- gFastSaveSection->security = UNKNOWN_CHECK_VALUE;
+ gFastSaveSection->id = chunkId;
+ gFastSaveSection->signature = FILE_SIGNATURE;
gFastSaveSection->counter = gSaveCounter;
// set temp section's data.
@@ -276,275 +365,275 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location)
EraseFlashSector(sector);
- status = 1;
+ status = SAVE_STATUS_OK;
for (i = 0; i < sizeof(struct UnkSaveSection); i++)
{
if (ProgramFlashByte(sector, i, gFastSaveSection->data[i]))
{
- status = 0xFF;
+ status = SAVE_STATUS_ERROR;
break;
}
}
- if (status == 0xFF)
+ if (status == SAVE_STATUS_ERROR)
{
- SetDamagedSectorBits(ENABLE, sector);
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
}
else
{
- status = 1;
+ status = SAVE_STATUS_OK;
for (i = 0; i < 7; i++)
{
if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i]))
{
- status = 0xFF;
+ status = SAVE_STATUS_ERROR;
break;
}
}
- if (status == 0xFF)
+ if (status == SAVE_STATUS_ERROR)
{
- SetDamagedSectorBits(ENABLE, sector);
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
}
-u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
{
u16 sector;
- sector = a1 + gLastWrittenSector - 1;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ // select sector number
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ // select save slot
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)]))
{
// sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
- SetDamagedSectorBits(ENABLE, sector);
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
-u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location)
+static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk)
{
u16 sector;
- sector = a1 + gLastWrittenSector - 1;
- sector %= ARRAY_COUNT(gSaveSectionLocations);
- sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ sector = a1 + gFirstSaveSector - 1;
+ sector %= NUM_SECTORS_PER_SAVE_SLOT;
+ sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25))
{
// sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter.
- SetDamagedSectorBits(ENABLE, sector);
- gLastWrittenSector = gLastKnownGoodSector;
- gSaveCounter = gLastSaveCounter;
- return 0xFF;
+ SetSectorDamagedStatus(SECTOR_DAMAGED, sector);
+ gFirstSaveSector = gLastKnownGoodSector;
+ gSaveCounter = gPrevSaveCounter;
+ return SAVE_STATUS_ERROR;
}
else
{
- SetDamagedSectorBits(DISABLE, sector);
- return 1;
+ SetSectorDamagedStatus(SECTOR_OK, sector);
+ return SAVE_STATUS_OK;
}
}
-u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *chunk)
{
u8 retVal;
gFastSaveSection = eSaveSection;
if (a1 != 0xFFFF)
{
- retVal = 0xFF;
+ retVal = SAVE_STATUS_ERROR;
}
else
{
- retVal = GetSaveValidStatus(location);
- sub_81258BC(0xFFFF, location);
+ retVal = GetSaveValidStatus(chunk);
+ sub_81258BC(0xFFFF, chunk);
}
return retVal;
}
-u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location)
+static u8 sub_81258BC(u16 a1, const struct SaveBlockChunk *chunks)
{
u16 i;
u16 checksum;
- u16 v3 = ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2);
+ u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2);
u16 id;
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++)
{
- DoReadFlashWholeSection(i + v3, gFastSaveSection);
+ DoReadFlashWholeSection(i + sector, gFastSaveSection);
id = gFastSaveSection->id;
if (id == 0)
- gLastWrittenSector = i;
- checksum = CalculateChecksum(gFastSaveSection->data, location[id].size);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE
+ gFirstSaveSector = i;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size);
+ if (gFastSaveSection->signature == FILE_SIGNATURE
&& gFastSaveSection->checksum == checksum)
{
u16 j;
- for (j = 0; j < location[id].size; j++)
- location[id].data[j] = gFastSaveSection->data[j];
+ for (j = 0; j < chunks[id].size; j++)
+ chunks[id].data[j] = gFastSaveSection->data[j];
}
}
return 1;
}
-u8 GetSaveValidStatus(const struct SaveSectionLocation *location)
+static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks)
{
- u16 i;
+ u16 sector;
+ bool8 signatureValid;
u16 checksum;
- u32 saveSlot1Counter = 0;
- u32 saveSlot2Counter = 0;
- u32 slotCheckField = 0;
- bool8 securityPassed = FALSE;
- u8 saveSlot1Status;
- u8 saveSlot2Status;
+ u32 slot1saveCounter = 0;
+ u32 slot2saveCounter = 0;
+ u8 slot1Status;
+ u8 slot2Status;
+ u32 validSectors;
+ const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors
// check save slot 1.
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
{
- DoReadFlashWholeSection(i, gFastSaveSection);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
+ DoReadFlashWholeSection(sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
{
- securityPassed = TRUE;
- checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
if (gFastSaveSection->checksum == checksum)
{
- saveSlot1Counter = gFastSaveSection->counter;
- slotCheckField |= 1 << gFastSaveSection->id;
+ slot1saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
}
}
}
- if (securityPassed)
+ if (signatureValid)
{
- if (slotCheckField == GETVALIDSTATUSBITFIELD)
- saveSlot1Status = 1;
+ if (validSectors == ALL_SECTORS)
+ slot1Status = SAVE_STATUS_OK;
else
- saveSlot1Status = 255;
+ slot1Status = SAVE_STATUS_ERROR;
}
else
{
- saveSlot1Status = 0;
+ slot1Status = SAVE_STATUS_EMPTY;
}
- slotCheckField = 0;
- securityPassed = FALSE;
-
// check save slot 2.
- for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++)
+ validSectors = 0;
+ signatureValid = FALSE;
+ for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++)
{
- DoReadFlashWholeSection(i + ARRAY_COUNT(gSaveSectionLocations), gFastSaveSection);
- if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE)
+ DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection);
+ if (gFastSaveSection->signature == FILE_SIGNATURE)
{
- securityPassed = TRUE;
- checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size);
+ signatureValid = TRUE;
+ checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size);
if (gFastSaveSection->checksum == checksum)
{
- saveSlot2Counter = gFastSaveSection->counter;
- slotCheckField |= 1 << gFastSaveSection->id;
+ slot2saveCounter = gFastSaveSection->counter;
+ validSectors |= 1 << gFastSaveSection->id;
}
}
}
- if (securityPassed)
+ if (signatureValid)
{
- if (slotCheckField == GETVALIDSTATUSBITFIELD)
- saveSlot2Status = 1;
+ if (validSectors == ALL_SECTORS)
+ slot2Status = SAVE_STATUS_OK;
else
- saveSlot2Status = 255;
+ slot2Status = SAVE_STATUS_ERROR;
}
else
{
- saveSlot2Status = 0;
+ slot2Status = SAVE_STATUS_EMPTY;
}
- if (saveSlot1Status == 1 && saveSlot2Status == 1)
+ if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK)
{
- if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1))
+ // Choose counter of the most recent save file
+ if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1))
{
- if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1))
- {
- gSaveCounter = saveSlot2Counter;
- }
+ if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1))
+ gSaveCounter = slot2saveCounter;
else
- {
- gSaveCounter = saveSlot1Counter;
- }
+ gSaveCounter = slot1saveCounter;
}
else
{
- if (saveSlot1Counter < saveSlot2Counter)
- {
- gSaveCounter = saveSlot2Counter;
- }
+ if (slot1saveCounter < slot2saveCounter)
+ gSaveCounter = slot2saveCounter;
else
- {
- gSaveCounter = saveSlot1Counter;
- }
+ gSaveCounter = slot1saveCounter;
}
- return 1;
+ return SAVE_STATUS_OK;
}
- if (saveSlot1Status == 1)
+ if (slot1Status == SAVE_STATUS_OK)
{
- gSaveCounter = saveSlot1Counter;
- if (saveSlot2Status == 255)
- return 255;
- return 1;
+ gSaveCounter = slot1saveCounter;
+ if (slot2Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
}
- if (saveSlot2Status == 1)
+ if (slot2Status == SAVE_STATUS_OK)
{
- gSaveCounter = saveSlot2Counter;
- if (saveSlot1Status == 255)
- return 255;
- return 1;
+ gSaveCounter = slot2saveCounter;
+ if (slot1Status == SAVE_STATUS_ERROR)
+ return SAVE_STATUS_ERROR;
+ else
+ return SAVE_STATUS_OK;
}
- if (saveSlot1Status == 0 && saveSlot2Status == 0)
+ if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY)
{
gSaveCounter = 0;
- gLastWrittenSector = 0;
- return 0;
+ gFirstSaveSector = 0;
+ return SAVE_STATUS_EMPTY;
}
gSaveCounter = 0;
- gLastWrittenSector = 0;
+ gFirstSaveSector = 0;
return 2;
}
-u8 sub_8125B88(u8 a1, u8 *data, u16 size)
+static u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size)
{
u16 i;
- struct SaveSection *section = eSaveSection;
- DoReadFlashWholeSection(a1, section);
- if (section->security == UNKNOWN_CHECK_VALUE)
+ struct SaveSector *section = eSaveSection;
+
+ DoReadFlashWholeSection(sector, section);
+ if (section->signature == FILE_SIGNATURE)
{
u16 checksum = CalculateChecksum(section->data, size);
if (section->id == checksum)
{
for (i = 0; i < size; i++)
data[i] = section->data[i];
- return 1;
+ return SAVE_STATUS_OK;
}
else
{
@@ -553,17 +642,17 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size)
}
else
{
- return 0;
+ return SAVE_STATUS_EMPTY;
}
}
-u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section)
+static u8 DoReadFlashWholeSection(u8 sector, struct SaveSector *section)
{
- ReadFlash(sector, 0, section->data, sizeof(struct SaveSection));
+ ReadFlash(sector, 0, section->data, sizeof(struct SaveSector));
return 1;
}
-u16 CalculateChecksum(void *data, u16 size)
+static u16 CalculateChecksum(void *data, u16 size)
{
u16 i;
u32 checksum = 0;
@@ -574,55 +663,60 @@ u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
-u8 HandleSavingData(u8 saveType)
+u8 Save_WriteDataInternal(u8 saveType)
{
u8 i;
+
switch (saveType)
{
- case HOF_DELETE_SAVE: // deletes HOF before overwriting HOF completely. unused
- for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++)
+ case SAVE_HALL_OF_FAME_ERASE_BEFORE: // wipes all hall of fame data, then saves hall of fame. unused
+ for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++)
EraseFlashSector(i);
- case HOF_SAVE: // hall of fame.
+ // fall through
+ case SAVE_HALL_OF_FAME: // hall of fame.
if (GetGameStat(10) < 999)
IncrementGameStat(10);
- for (i = 0; i < ARRAY_COUNT(gHallOfFameSaveSectionLocations); i++)
- HandleWriteSectorNBytes((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0) + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size);
+ for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++)
+ HandleWriteSectorNBytes(HALL_OF_FAME_SECTOR + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size);
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
- case NORMAL_SAVE: // normal save. also called by overwriting your own save.
+ case SAVE_NORMAL: // normal save. also called by overwriting your own save.
default:
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
- case LINK_SAVE: // link save. updates only gSaveBlock1 and gSaveBlock2.
+ case SAVE_LINK: // link save. updates only gSaveBlock1 and gSaveBlock2.
SaveSerializedGame();
for (i = 0; i < 5; i++)
- save_write_to_flash(i, gSaveSectionLocations);
+ WriteSaveBlockChunks(i, sSaveBlockChunks);
break;
- case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer
+ case SAVE_EREADER: // used in mossdeep "game corner" before/after battling old man e-reader trainer
SaveSerializedGame();
- save_write_to_flash(0, gSaveSectionLocations);
+ WriteSaveBlockChunks(0, sSaveBlockChunks);
break;
- case DIFFERENT_FILE_SAVE: // there is a different file, so erase the file and overwrite it completely.
- for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++)
- EraseFlashSector(i); // erase HOF.
+ case SAVE_OVERWRITE_DIFFERENT_FILE: // there is a different file, so overwrite it completely.
+ // Erase Hall of Fame.
+ for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++)
+ EraseFlashSector(i);
SaveSerializedGame();
- save_write_to_flash(0xFFFF, gSaveSectionLocations);
+ WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks);
break;
}
return 0;
}
-u8 TrySavingData(u8 saveType) // TrySave
+u8 Save_WriteData(u8 saveType) // TrySave
{
if (gFlashMemoryPresent != TRUE)
- return 0xFF;
- HandleSavingData(saveType);
+ return SAVE_STATUS_ERROR;
+
+ Save_WriteDataInternal(saveType);
if (!gDamagedSaveSectors)
- return 1;
+ return SAVE_STATUS_OK;
+
DoSaveFailedScreen(saveType);
- return 0xFF;
+ return SAVE_STATUS_ERROR;
}
u8 sub_8125D80(void) // trade.s save
@@ -630,16 +724,16 @@ u8 sub_8125D80(void) // trade.s save
if (gFlashMemoryPresent != TRUE)
return 1;
SaveSerializedGame();
- RestoreSaveBackupVarsAndIncrement(gSaveSectionLocations);
+ RestoreSaveBackupVarsAndIncrement(sSaveBlockChunks);
return 0;
}
bool8 sub_8125DA8(void) // trade.s save
{
- u8 retVal = sub_812550C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ u8 retVal = sub_812550C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
- if (retVal == 0xFF)
+ if (retVal == SAVE_STATUS_ERROR)
return 1;
else
return 0;
@@ -647,7 +741,7 @@ bool8 sub_8125DA8(void) // trade.s save
u8 sub_8125DDC(void) // trade.s save
{
- sub_812556C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ sub_812556C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -655,7 +749,7 @@ u8 sub_8125DDC(void) // trade.s save
u8 sub_8125E04(void) // trade.s save
{
- sub_8125758(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations);
+ WriteSomeFlashByteToPrevSector(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks);
if (gDamagedSaveSectors)
DoSaveFailedScreen(0);
return 0;
@@ -667,23 +761,24 @@ u8 sub_8125E2C(void)
return 1;
SaveSerializedGame();
- RestoreSaveBackupVars(gSaveSectionLocations);
- sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations);
+ RestoreSaveBackupVars(sSaveBlockChunks);
+ sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks);
return 0;
}
+// something to do with multiplayer. Possibly record mizing?
bool8 sub_8125E6C(void)
{
u8 retVal = FALSE;
u16 val = ++gUnknown_03005EB4;
if (val <= 4)
{
- sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations);
- sub_81257F0(val, gSaveSectionLocations);
+ sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks);
+ WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks);
}
else
{
- sub_81257F0(val, gSaveSectionLocations);
+ WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks);
retVal = TRUE;
}
if (gDamagedSaveSectors)
@@ -691,46 +786,48 @@ bool8 sub_8125E6C(void)
return retVal;
}
-u8 sub_8125EC8(u8 a1)
+u8 Save_LoadGameData(u8 saveType)
{
u8 result;
if (gFlashMemoryPresent != TRUE)
{
- gSaveFileStatus = 4;
- return 0xFF;
+ gSaveFileStatus = SAVE_STATUS_NO_FLASH;
+ return SAVE_STATUS_ERROR;
}
- switch (a1)
+ switch (saveType)
{
- case 0:
+ case SAVE_NORMAL:
default:
- result = sub_812587C(0xFFFF, gSaveSectionLocations);
+ result = sub_812587C(0xFFFF, sSaveBlockChunks);
LoadSerializedGame();
gSaveFileStatus = result;
gGameContinueCallback = 0;
break;
- case 3:
- result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0), gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size);
- if (result == 1)
- result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 1), gHallOfFameSaveSectionLocations[1].data, gHallOfFameSaveSectionLocations[1].size);
+ case SAVE_HALL_OF_FAME:
+ result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR, sHallOfFameChunks[0].data, sHallOfFameChunks[0].size);
+ if (result == SAVE_STATUS_OK)
+ result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR + 1, sHallOfFameChunks[1].data, sHallOfFameChunks[1].size);
break;
}
return result;
}
+static const u8 sUnusedFlashSectors[] = { 30, 31 };
+
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
{
u16 i;
char *raw = (char *)a1;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
raw[i] = 0;
- ReadFlash(gFlashSectors[0], 0, a1->data, 4096);
+ ReadFlash(sUnusedFlashSectors[0], 0, a1->data, 4096);
- if (a1->security != UNKNOWN_CHECK_VALUE)
+ if (a1->signature != FILE_SIGNATURE)
return FALSE;
return TRUE;
@@ -739,22 +836,22 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
u8 unref_sub_8125FA0(void)
{
u16 i;
- u8 v0 = TrySavingData(0);
+ u8 status = Save_WriteData(SAVE_NORMAL);
for (i = 0; i < 2; i++)
- EraseFlashSector(gFlashSectors[i]);
+ EraseFlashSector(sUnusedFlashSectors[i]);
- if (v0 == 255)
+ if (status == SAVE_STATUS_ERROR)
{
return 3;
}
- else if (v0 == 3)
+ else if (status == 3)
{
return 2;
}
else
{
- sub_8125EC8(0);
+ Save_LoadGameData(SAVE_NORMAL);
return 1;
}
}
@@ -764,32 +861,32 @@ u8 unref_sub_8125FF0(u8 *data, u16 size)
u16 i;
struct UnkSaveSection *section = (struct UnkSaveSection *)eSaveSection;
- for (i = 0; i < sizeof(struct SaveSection); i++)
+ for (i = 0; i < sizeof(struct SaveSector); i++)
((char *)section)[i] = 0;
- section->security = UNKNOWN_CHECK_VALUE;
+ section->signature = FILE_SIGNATURE;
for (i = 0; i < size; i++)
section->data[i] = data[i];
- gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(gFlashSectors[0], section, sizeof(struct SaveSection));
+ gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(sUnusedFlashSectors[0], section, sizeof(struct SaveSector));
if (gLastSaveSectorStatus)
- return 0xFF;
+ return SAVE_STATUS_ERROR;
else
- return 1;
+ return SAVE_STATUS_OK;
}
u8 unref_sub_8126068(u8 sector, u8 *data, u32 size)
{
if (ProgramFlashSectorAndVerify(sector, data))
- return 255;
+ return SAVE_STATUS_ERROR;
else
- return 1;
+ return SAVE_STATUS_OK;
}
u8 unref_sub_8126080(u8 sector, u8 *data)
{
- ReadFlash(sector, 0, data, sizeof(struct SaveSection));
+ ReadFlash(sector, 0, data, sizeof(struct SaveSector));
return 1;
}
diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c
index 64b84a2f7..74a1e9612 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/engine/save_failed_screen.c
@@ -166,7 +166,7 @@ static void CB2_WipeSave(void)
Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19);
Menu_PrintText(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1);
- HandleSavingData(gSaveFailedType);
+ Save_WriteDataInternal(gSaveFailedType);
if (gDamagedSaveSectors != 0)
{
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 11c05e478..ab2a818a7 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -1895,7 +1895,7 @@ void SaveBattleTowerProgress(void)
VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
- TrySavingData(EREADER_SAVE);
+ Save_WriteData(SAVE_EREADER);
}
void BattleTower_SoftReset(void)
diff --git a/src/field/daycare.c b/src/field/daycare.c
index 5811461ae..36dd7ec03 100644
--- a/src/field/daycare.c
+++ b/src/field/daycare.c
@@ -341,7 +341,7 @@ u16 GetEggSpecies(u16 species)
{
for (k = 0; k < 5; k++)
{
- if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ if (gEvolutionTable[j][k].targetSpecies == species)
{
species = j;
found = TRUE;
@@ -557,7 +557,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP
{
for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
{
- if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j))
{
if (GiveMoveToMon(egg, gHatchedEggFatherMoves[i]) == 0xffff)
DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFatherMoves[i]);
diff --git a/src/field/fieldmap.c b/src/field/fieldmap.c
index 7a31ae720..7383bb174 100644
--- a/src/field/fieldmap.c
+++ b/src/field/fieldmap.c
@@ -86,18 +86,20 @@ void map_copy_with_padding(u16 *map, u16 width, u16 height)
void sub_80560AC(struct MapHeader *mapHeader)
{
+ // BUG: This results in a null pointer dereference when mapHeader->connections
+ // is NULL, causing count to be assigned a garbage value. This garbage value
+ // just so happens to have the most significant bit set, so it is treated as
+ // negative and the loop below thankfully never executes in this scenario.
+ int count = mapHeader->connections->count;
+ struct MapConnection *connection = mapHeader->connections->connections;
int i;
- struct MapConnection *connection;
- struct MapHeader *cMap;
- u32 offset;
- int count;
- count = mapHeader->connections->count;
- connection = mapHeader->connections->connections;
+
gUnknown_0202E850 = sDummyConnectionFlags;
for (i = 0; i < count; i++, connection++)
{
- cMap = mapconnection_get_mapheader(connection);
- offset = connection->offset;
+ struct MapHeader *cMap = mapconnection_get_mapheader(connection);
+ u32 offset = connection->offset;
+
switch (connection->direction)
{
case CONNECTION_SOUTH:
diff --git a/src/field/item_use.c b/src/field/item_use.c
index bd76db77e..55fb21814 100644
--- a/src/field/item_use.c
+++ b/src/field/item_use.c
@@ -877,7 +877,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
{
Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- if (gSpecialVar_ItemId >= ITEM_HM01)
+ if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
else
DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 7d243f569..48275435e 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -3998,7 +3998,7 @@ void Task_ConfirmTakeHeldMail(u8 taskId)
u16 ItemIdToBattleMoveId(u16 item)
{
- u16 machineNumber = item - ITEM_TM01;
+ u16 machineNumber = item - ITEM_TM01_FOCUS_PUNCH;
return TMHMMoves[machineNumber];
}
diff --git a/src/field/player_pc.c b/src/field/player_pc.c
index 0d5c5234b..1d504586c 100644
--- a/src/field/player_pc.c
+++ b/src/field/player_pc.c
@@ -853,7 +853,7 @@ static void ItemStorage_DrawTMHMEntry(struct ItemSlot *itemSlot, u8 var, int var
{
ItemStorage_DrawItemName(itemSlot, var, var2);
- if(itemSlot->itemId < ITEM_HM01)
+ if(itemSlot->itemId < ITEM_HM01_CUT)
ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2);
else
ItemStorage_DrawItemVoidQuantity(var); // HMs do not have a quantity.
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 2f6f1e7dd..87597eb6a 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -664,20 +664,20 @@ static u8 SaveDialogCB_DisplaySavingMessage(void)
static u8 SaveDialogCB_DoSave(void)
{
- bool8 saveSucceeded;
+ u8 saveStatus;
IncrementGameStat(0);
if (gDifferentSaveFile == TRUE)
{
- saveSucceeded = TrySavingData(DIFFERENT_FILE_SAVE);
+ saveStatus = Save_WriteData(SAVE_OVERWRITE_DIFFERENT_FILE);
gDifferentSaveFile = FALSE;
}
else
{
- saveSucceeded = TrySavingData(NORMAL_SAVE);
+ saveStatus = Save_WriteData(SAVE_NORMAL);
}
- if (saveSucceeded == TRUE)
+ if (saveStatus == SAVE_STATUS_OK)
{
//"(Player) saved the game."
DisplaySaveMessageWithCallback(gSaveText_PlayerSavedTheGame, SaveDialogCB_SaveSuccess);
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c
index bfd0bc972..0242e7444 100644
--- a/src/pokemon/pokemon_1.c
+++ b/src/pokemon/pokemon_1.c
@@ -1,13 +1,16 @@
#include "global.h"
#include "data2.h"
+#include "constants/abilities.h"
#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
#include "main.h"
#include "pokemon.h"
#include "random.h"
#include "overworld.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
+#include "trainer.h"
#include "text.h"
#include "ewram.h"
@@ -26,6 +29,59 @@ struct Pokemon gPlayerParty[6];
u8 gEnemyPartyCount;
struct Pokemon gEnemyParty[6];
+const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151};
+const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358};
+const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411};
+
+const struct SpindaSpot gSpindaSpotGraphics[] =
+{
+ {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")},
+ {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")},
+ {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")},
+ {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
+};
+
+#include "../data/pokemon/item_effects.h"
+
+const s8 gNatureStatTable[][5] =
+{
+ // Atk Def Spd Sp.Atk Sp.Def
+ { 0, 0, 0, 0, 0}, // Hardy
+ { +1, -1, 0, 0, 0}, // Lonely
+ { +1, 0, -1, 0, 0}, // Brave
+ { +1, 0, 0, -1, 0}, // Adamant
+ { +1, 0, 0, 0, -1}, // Naughty
+ { -1, +1, 0, 0, 0}, // Bold
+ { 0, 0, 0, 0, 0}, // Docile
+ { 0, +1, -1, 0, 0}, // Relaxed
+ { 0, +1, 0, -1, 0}, // Impish
+ { 0, +1, 0, 0, -1}, // Lax
+ { -1, 0, +1, 0, 0}, // Timid
+ { 0, -1, +1, 0, 0}, // Hasty
+ { 0, 0, 0, 0, 0}, // Serious
+ { 0, 0, +1, -1, 0}, // Jolly
+ { 0, 0, +1, 0, -1}, // Naive
+ { -1, 0, 0, +1, 0}, // Modest
+ { 0, -1, 0, +1, 0}, // Mild
+ { 0, 0, -1, +1, 0}, // Quiet
+ { 0, 0, 0, 0, 0}, // Bashful
+ { 0, 0, 0, +1, -1}, // Rash
+ { -1, 0, 0, 0, +1}, // Calm
+ { 0, -1, 0, 0, +1}, // Gentle
+ { 0, 0, -1, 0, +1}, // Sassy
+ { 0, 0, 0, -1, +1}, // Careful
+ { 0, 0, 0, 0, 0} // Quirky
+};
+
+#include "../data/pokemon/tmhm_learnsets.h"
+#include "../data/pokemon/trainer_class_lookups.h"
+#include "../data/pokemon/cry_ids.h"
+#include "../data/pokemon/experience_tables.h"
+#include "../data/pokemon/base_stats.h"
+#include "../data/pokemon/level_up_learnsets.h"
+#include "../data/pokemon/evolution.h"
+#include "../data/pokemon/level_up_learnset_pointers.h"
+
void ZeroBoxMonData(struct BoxPokemon *boxMon)
{
u8 *raw = (u8 *)boxMon;
@@ -401,7 +457,7 @@ u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon)
s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \
u8 nature = GetNature(mon); \
n = nature_stat_mod(nature, n, statIndex); \
- SetMonData(mon, field, &n); \
+ SetMonData(mon, field, &n); \
}
void CalculateMonStats(struct Pokemon *mon)
diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c
index eb56974cd..b941ed2ab 100644
--- a/src/pokemon/pokemon_2.c
+++ b/src/pokemon/pokemon_2.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/hold_effects.h"
#include "battle.h"
#include "battle_util.h"
#include "data2.h"
@@ -12,6 +13,7 @@
#include "string_util.h"
#include "strings2.h"
#include "text.h"
+#include "trainer.h"
#include "util.h"
#include "ewram.h"
@@ -40,11 +42,12 @@ extern const struct SpriteTemplate gSpriteTemplate_8208288[];
//array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.)
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
-extern u8 gSecretBaseTrainerClasses[][5];
-extern u8 gUnknown_08208238[];
-extern u8 gUnknown_0820823C[];
-extern u8 gStatStageRatios[][2];
-extern u8 gHoldEffectToType[][2];
+
+extern const u8 gUnknown_08208238[];
+extern const u8 gUnknown_0820823C[];
+
+extern void sub_80105A0(struct Sprite *);
+extern void oac_poke_opponent(struct Sprite *);
u8 CountAliveMons(u8 a1)
{
@@ -145,6 +148,14 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
return MON_MALE;
}
+const struct SpriteTemplate gSpriteTemplate_8208288[] =
+{
+ {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
+ {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
+ {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
+ {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
+};
+
void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
{
gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
@@ -1094,6 +1105,13 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
gTrainerBattleOpponent = 1024;
}
+const u8 gSecretBaseTrainerClasses[][5] = {
+ // male
+ {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M},
+ // female
+ {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F}
+};
+
u8 GetSecretBaseTrainerPicIndex(void)
{
u8 trainerClass = gSecretBaseTrainerClasses[eSecretBaseRecord->gender][eSecretBaseRecord->trainerId[0] % 5];
diff --git a/src/pokemon/pokemon_3.c b/src/pokemon/pokemon_3.c
index d659ed680..221de831a 100644
--- a/src/pokemon/pokemon_3.c
+++ b/src/pokemon/pokemon_3.c
@@ -1,11 +1,12 @@
#include "global.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
#include "battle.h"
#include "battle_message.h"
#include "data2.h"
#include "event_data.h"
-#include "constants/hold_effects.h"
#include "item.h"
-#include "constants/items.h"
#include "link.h"
#include "m4a.h"
#include "main.h"
@@ -42,20 +43,16 @@ extern u8 gStringBank;
extern u8 gBankInMenu;
extern struct SpindaSpot gSpindaSpotGraphics[];
extern s8 gNatureStatTable[][5];
-extern s8 gUnknown_082082FE[][3];
extern u16 gTrainerBattleOpponent;
extern u16 gBattleTypeFlags;
extern u32 gTMHMLearnsets[][2];
extern u8 gBattleMonForms[];
extern const u8 BattleText_Wally[];
-extern const u16 gHMMoves[];
extern s8 gPokeblockFlavorCompatibilityTable[];
extern u8 gLastUsedAbility;
extern const u8 BattleText_PreventedSwitch[];
extern u16 gBattlePartyID[];
-extern u8 gJapaneseNidoranNames[][11];
-extern u8 gUnknown_082082F8[];
extern u8 BattleText_Rose[];
extern u8 BattleText_UnknownString3[];
extern u8 BattleText_MistShroud[];
@@ -193,6 +190,8 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
+const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6};
+
void sub_803F324(int stat)
{
gBankTarget = gBankInMenu;
@@ -290,56 +289,56 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
for (i = 0; i < 5; i++)
{
- switch (gEvolutionTable[species].evolutions[i].method)
+ switch (gEvolutionTable[species][i].method)
{
case EVO_FRIENDSHIP:
if (friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_FRIENDSHIP_DAY:
RtcCalcLocalTime();
if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_FRIENDSHIP_NIGHT:
RtcCalcLocalTime();
if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL:
- if (gEvolutionTable[species].evolutions[i].param <= level)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_GT_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_EQ_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_LT_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_SILCOON:
- if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) <= 4)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) <= 4)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_CASCOON:
- if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) > 4)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) > 4)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_NINJASK:
- if (gEvolutionTable[species].evolutions[i].param <= level)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_BEAUTY:
- if (gEvolutionTable[species].evolutions[i].param <= beauty)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= beauty)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
}
}
@@ -347,17 +346,17 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
case 1:
for (i = 0; i < 5; i++)
{
- switch (gEvolutionTable[species].evolutions[i].method)
+ switch (gEvolutionTable[species][i].method)
{
case EVO_TRADE:
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_TRADE_ITEM:
- if (gEvolutionTable[species].evolutions[i].param == heldItem)
+ if (gEvolutionTable[species][i].param == heldItem)
{
heldItem = 0;
SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem);
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
}
break;
}
@@ -367,10 +366,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
case 3:
for (i = 0; i < 5; i++)
{
- if (gEvolutionTable[species].evolutions[i].method == EVO_ITEM
- && gEvolutionTable[species].evolutions[i].param == evolutionItem)
+ if (gEvolutionTable[species][i].method == EVO_ITEM
+ && gEvolutionTable[species][i].param == evolutionItem)
{
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
}
}
@@ -644,6 +643,20 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex)
return n;
}
+const s8 gUnknown_082082FE[][3] =
+{
+ // Happiness deltas
+ { 5, 3, 2},
+ { 5, 3, 2},
+ { 1, 1, 0},
+ { 3, 2, 1},
+ { 1, 1, 0},
+ { 1, 1, 1},
+ {-1, -1, -1},
+ {-5, -5, -10},
+ {-5, -5, -10}
+};
+
void AdjustFriendship(struct Pokemon *mon, u8 event)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -653,13 +666,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
if (heldItem == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- {
holdEffect = gEnigmaBerries[0].holdEffect;
- }
else
- {
holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
- }
}
else
{
@@ -758,13 +767,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies)
if (heldItem == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- {
holdEffect = gEnigmaBerries[0].holdEffect;
- }
else
- {
holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
- }
}
else
{
@@ -1198,6 +1203,19 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u
return &gMonPaletteTable[species];
}
+const u16 gHMMoves[] =
+{
+ MOVE_CUT,
+ MOVE_FLY,
+ MOVE_SURF,
+ MOVE_STRENGTH,
+ MOVE_FLASH,
+ MOVE_ROCK_SMASH,
+ MOVE_WATERFALL,
+ MOVE_DIVE,
+ 0xffff
+};
+
bool32 IsHMMove2(u16 move)
{
int i = 0;
@@ -1338,12 +1356,14 @@ u8 *sub_8040D08(void)
return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name;
}
+const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")};
+
bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language)
{
bool32 retVal = FALSE;
if (species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F)
{
- u8 *speciesName;
+ const u8 *speciesName;
if (language == GAME_LANGUAGE)
{
speciesName = gSpeciesNames[species];
diff --git a/src/pokemon/pokemon_data.c b/src/pokemon/pokemon_data.c
index 031f2ea24..3473b58c8 100644
--- a/src/pokemon/pokemon_data.c
+++ b/src/pokemon/pokemon_data.c
@@ -9,120 +9,4 @@
#include "sprite.h"
#include "data2.h"
-#include "../data/pokemon/dex_order.h"
-#include "../data/pokemon/spinda_spots.h"
-#include "../data/pokemon/item_effects.h"
-#include "../data/pokemon/nature_stats.h"
-#include "../data/pokemon/tmhm_learnsets.h"
-#include "../data/pokemon/trainer_class_lookups.h"
-#include "../data/pokemon/cry_ids.h"
-#include "../data/pokemon/experience_tables.h"
-#include "../data/pokemon/base_stats.h"
-#include "../data/pokemon/level_up_learnsets.h"
-#include "../data/pokemon/evolution.h"
-#include "../data/pokemon/level_up_learnset_pointers.h"
-const u8 gUnknown_08208238[] = { // Masks for getting PP Up count, also PP Max values
- 0x03, 0x0c, 0x30, 0xc0
-};
-
-const u8 gUnknown_0820823C[] = { // Masks for setting PP Up count
- 0xFC, 0xF3, 0xCF, 0x3F
-};
-
-const u8 gUnknown_08208240[] = { // Values added to PP Up count
- 0x01, 0x04, 0x10, 0x40
-};
-
-const u8 gStatStageRatios[][2] = {
- {10, 40}, // -6
- {10, 35}, // -5
- {10, 30}, // -4
- {10, 25}, // -3
- {10, 20}, // -2
- {10, 15}, // -1
- {10, 10}, // 0
- {15, 10}, // 1
- {20, 10}, // 2
- {25, 10}, // 3
- {30, 10}, // 4
- {35, 10}, // 5
- {40, 10} // 6
-};
-
-const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ");
-
-const u8 gHoldEffectToType[][2] = {
- {HOLD_EFFECT_BUG_POWER, TYPE_BUG},
- {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL},
- {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND},
- {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK},
- {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS},
- {HOLD_EFFECT_DARK_POWER, TYPE_DARK},
- {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING},
- {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC},
- {HOLD_EFFECT_WATER_POWER, TYPE_WATER},
- {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING},
- {HOLD_EFFECT_POISON_POWER, TYPE_POISON},
- {HOLD_EFFECT_ICE_POWER, TYPE_ICE},
- {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST},
- {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC},
- {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE},
- {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON},
- {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL}
-};
-
-extern void sub_80105A0(struct Sprite *);
-extern void oac_poke_opponent(struct Sprite *);
-
-const struct SpriteTemplate gSpriteTemplate_8208288[] = {
- {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
- {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
- {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
- {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
-};
-
-const u8 gSecretBaseTrainerClasses[][5] = {
- // male
- {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M},
- // female
- {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F}
-};
-
-const u8 gUnknown_082082F2[] = {
- MON_DATA_HP_EV,
- MON_DATA_ATK_EV,
- MON_DATA_DEF_EV,
- MON_DATA_SPEED_EV,
- MON_DATA_SPDEF_EV,
- MON_DATA_SPATK_EV
-};
-
-const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6};
-
-const s8 gUnknown_082082FE[][3] = {
- // Happiness deltas
- { 5, 3, 2},
- { 5, 3, 2},
- { 1, 1, 0},
- { 3, 2, 1},
- { 1, 1, 0},
- { 1, 1, 1},
- {-1, -1, -1},
- {-5, -5, -10},
- {-5, -5, -10}
-};
-
-const u16 gHMMoves[] = {
- MOVE_CUT,
- MOVE_FLY,
- MOVE_SURF,
- MOVE_STRENGTH,
- MOVE_FLASH,
- MOVE_ROCK_SMASH,
- MOVE_WATERFALL,
- MOVE_DIVE,
- 0xffff
-};
-
-const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")};
diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c
new file mode 100644
index 000000000..66f2ff697
--- /dev/null
+++ b/src/pokemon/pokemon_item_effect.c
@@ -0,0 +1,11 @@
+#include "global.h"
+#include "pokemon.h"
+
+const u8 gUnknown_082082F2[] = {
+ MON_DATA_HP_EV,
+ MON_DATA_ATK_EV,
+ MON_DATA_DEF_EV,
+ MON_DATA_SPEED_EV,
+ MON_DATA_SPDEF_EV,
+ MON_DATA_SPATK_EV
+};
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index 697806ee1..931ec0d4d 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -497,35 +497,31 @@ static void CB2_TradeEvolutionSceneUpdate(void)
static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
{
u32 data = 0;
- if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
+
+ if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
{
s32 i;
struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount];
- const struct EvolutionData* EvoTable;
- const struct EvolutionData* Evos;
CopyMon(Shedinja, mon, sizeof(struct Pokemon));
- SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies));
- SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies]));
- SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data));
- SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data));
- SetMonData(Shedinja, MON_DATA_10, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_SPECIES, (void*)&gEvolutionTable[preEvoSpecies][1].targetSpecies);
+ SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]);
+ SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)&data);
+ SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)&data);
+ SetMonData(Shedinja, MON_DATA_10, (void*)&data);
for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
- SetMonData(Shedinja, i, (void*)(&data));
+ SetMonData(Shedinja, i, (void*)&data);
for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++)
- SetMonData(Shedinja, i, (void*)(&data));
- SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data));
+ SetMonData(Shedinja, i, (void*)&data);
+ SetMonData(Shedinja, MON_DATA_STATUS, (void*)&data);
data = 0xFF;
- SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_MAIL, (void*)&data);
CalculateMonStats(Shedinja);
CalculatePlayerPartyCount();
- // can't match it otherwise, ehh
- EvoTable = gEvolutionTable;
- Evos = EvoTable + preEvoSpecies;
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 3);
if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
&& GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
index bfa0d1705..424747ba3 100644
--- a/src/scene/hall_of_fame.c
+++ b/src/scene/hall_of_fame.c
@@ -533,7 +533,7 @@ static void sub_814217C(u8 taskID)
ewram1E000(i) = 0;
}
else
- sub_8125EC8(3);
+ Save_LoadGameData(SAVE_HALL_OF_FAME);
for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
{
@@ -560,7 +560,7 @@ static void sub_814217C(u8 taskID)
static void sub_8142274(u8 taskID)
{
gGameContinueCallback = sub_8141FC4;
- TrySavingData(3);
+ Save_WriteData(3);
PlaySE(SE_SAVE);
gTasks[taskID].func = sub_81422B8;
gTasks[taskID].tFrameCount = 32;
@@ -829,7 +829,7 @@ void sub_81428CC(void)
static void sub_8142A28(u8 taskID)
{
- if (sub_8125EC8(3) != 1)
+ if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK)
gTasks[taskID].func = sub_8142FEC;
else
{
diff --git a/src/scene/intro.c b/src/scene/intro.c
index d7d772a40..f7e196133 100644
--- a/src/scene/intro.c
+++ b/src/scene/intro.c
@@ -930,8 +930,8 @@ void CB2_InitCopyrightScreenAfterBootup(void)
if (!SetUpCopyrightScreen())
{
sub_8052E4C();
- ResetSaveCounters();
- sub_8125EC8(0);
+ Save_ResetSaveCounters();
+ Save_LoadGameData(SAVE_NORMAL);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
ClearSav2();
SetPokemonCryStereo(gSaveBlock2.optionsSound);